Cách chọn giải pháp thanh toán trực tuyến và lựa chọn của chúng tôi
Nhà cung cấp thanh toán được lựa chọn dựa trên nhiều tiêu chí khác nhau. Một số trong số đó là sự sẵn có của các dịch vụ ở quốc gia nơi bạn có tài khoản ngân hàng, chi phí giao dịch, phí hàng tháng, chi phí tích hợp và liệu dịch vụ đó có giải quyết được các vấn đề về thuế GTGT hay cho phép tích hợp với một số giải pháp thanh toán nổi tiếng khác hay không. Nhiều câu hỏi trong số này phải được bạn trả lời với tư cách là khách hàng. Stripe là lựa chọn ưa thích của chúng tôi vì nó có các tính năng API tuyệt vời. Bài viết này sẽ sử dụng Stripe làm bộ xử lý thanh toán ưa thích của nó.
Thực tiễn tốt nhất cho các nhà cung cấp dịch vụ thanh toán
Vui lòng thử lại nếu giao dịch không thành công
Giao dịch có thể không thành công không chỉ vì lý do kỹ thuật mà đôi khi không đủ tiền có thể là lý do. Bạn nên thử xử lý lại giao dịch trong khoảng thời gian từ một giờ đến vài ngày sau.
Biết khi nào CC của bạn hết hạn
Một số chi tiết thẻ sẽ hết hạn hoặc dữ liệu của họ sẽ không còn hiệu lực vì nhiều lý do. Khi bạn không có bộ sưu tập dữ liệu CC hợp lệ, khách hàng sẽ không thể thực hiện được. Các chương trình thẻ chính cung cấp dịch vụ cho phép bạn kiểm tra xem có bản cập nhật nào đang chờ xử lý đối với dữ liệu khách hàng mà bạn lưu trữ hay không. Một số giải pháp thanh toán trực tuyến thậm chí sẽ cập nhật chi tiết thẻ cho bạn. Stripe sẽ làm điều này cho hầu hết các thẻ MasterCard, Discover và Visa. Không chỉ CC.
Xin lưu ý rằng ở một số nơi trên thế giới, mọi người không sẵn sàng thanh toán bằng thẻ tín dụng của họ
Ví dụ tốt nhất về điều này là Trung Quốc, nơi Alipay là nguồn thanh toán chính. Điều đáng chú ý là không phải khách hàng nào cũng sẵn lòng cung cấp thông tin thẻ của họ, vì vậy việc sử dụng phương thức thanh toán quen thuộc sẽ giúp tăng tỷ lệ hoàn thành các giao dịch tiềm năng. Stripe cũng hỗ trợ Alipay cho Trung Quốc và Châu Âu Giropay, lý tưởng
Chúng tôi muốn PayPal
Đôi khi khách hàng chỉ muốn sử dụng PayPal vì họ đã quen thuộc với thương hiệu. Đừng bướng bỉnh – Stripe giúp tối đa hóa lợi nhuận của bạn. Stripe và Paypal là đối thủ cạnh tranh trực tiếp, không có sự tích hợp giữa chúng.
Các phương pháp hay nhất để sử dụng quy trình thanh toán của Stripe
Tuân thủ PCI với Stripe
Hầu hết người dùng trở nên tuân thủ PCI bằng cách hoàn thành Bảng câu hỏi tự đánh giá (SAQ) do Hội đồng tiêu chuẩn bảo mật PCI cung cấp. Loại SAQ phụ thuộc vào cách bạn thu thập dữ liệu thẻ. Phương pháp xác thực PCI đơn giản nhất là SAQ A. Cách nhanh nhất để trở thành PCI Tuân thủ Stripe là đảm bảo bạn đủ điều kiện cho SEQ A được điền sẵn. Nếu vậy, Stripe sẽ điền SEQ A cho bạn và cung cấp SEQ A cho bạn để tải xuống cài đặt tuân thủ tài khoản của bạn sau 20 giao dịch đầu tiên hoặc lâu hơn. Cách để đạt được điều này như sau:
– Sử dụng biểu mẫu nhúng có tên Checkout, Stripe.js và Elements (nó cung cấp tùy chỉnh bố cục tốt hơn Checkout). Bạn có thể sử dụng các phần tử sọc phản ứng sử dụng API Stripe.js hoặc thư viện SDK di động Stripe. Khi sử dụng phản ứng tự nhiên, hãy sử dụng tipsi-sọc. Các ràng buộc ipsi-sọc không được Stripe hỗ trợ chính thức, vì vậy bộ phận hỗ trợ sẽ không chính thức cho bạn biết rằng chúng đủ điều kiện tuân thủ SEQ-A được điền sẵn – nhưng chúng có.
– Nếu bạn sử dụng máy chủ web, các trang thanh toán của bạn phải sử dụng HTTPS.
Trong tất cả các trường hợp này, dữ liệu được truyền trực tiếp một cách an toàn đến Stripe mà không cần thông qua máy chủ của bạn. Khi bạn chọn cách nhanh nhất, bạn không cần phải làm gì thêm. Nó đơn giản như thế này, cho đến khi bạn đạt được 6 triệu giao dịch mỗi năm, bạn phải hoàn thành báo cáo tuân thủ để xác thực việc tuân thủ PCI của mình hàng năm.
Chuẩn bị cho sự cố kỹ thuật – Khóa Idempotence
Nếu bạn sử dụng API để nhận thanh toán, hãy chuẩn bị cho lỗi kỹ thuật vì tất cả các mạng đều không đáng tin cậy. Nếu xảy ra lỗi, không phải lúc nào cũng có thể biết liệu khoản phí đã được thực hiện hay chưa. Trong trường hợp lỗi mạng, bạn nên thực hiện lại giao dịch. Khóa idempotency là một cơ chế ngăn chặn việc tính phí khách hàng hai lần. Nếu vì lý do nào đó, bạn đã gửi thanh toán hai lần – điều này có thể xảy ra do thử lại sau khi xảy ra lỗi. Trong lib nút của Stripe, bạn chỉ cần thêm nó vào tham số tùy chọn trong khi tải lên. Mỗi key Idempotence sẽ hết thời gian sau 24 giờ, vì vậy sau thời gian đó nếu bạn thanh toán bằng cùng một key Idempotence, bạn sẽ tính phí khách hàng.
Phí sọc bằng xu không phải đô la
Các giải pháp thanh toán trực tuyến như PayPal tính phí bằng đô la thay vì xu. Nhưng ở Stripes, tất cả các khoản phí đều được tính bằng đơn vị tiền tệ nhỏ nhất. Đây không chỉ là trường hợp với đô la, Stripes làm điều đó với tất cả các loại tiền tệ.
Vật mẫu
Stripe cung cấp cho bạn nhiều số thẻ để bạn có thể thử nghiệm các tình huống khác nhau trên giao diện người dùng và mã thông báo để bạn có thể trực tiếp kiểm tra phần phụ trợ của mình. Ví dụ: bạn không chỉ có thể kiểm tra Thẻ Visa, Mastercard, American Express, Discover, Diners Club và JCB mà còn cả thẻ quốc tế và Thẻ bảo mật 3D. Stripe cũng cung cấp cho bạn mã thông báo để bạn có thể kiểm tra các tình huống lỗi chẳng hạn như khoản phí bị từ chối hoặc khoản phí bị chặn do gian lận, thẻ hết hạn hoặc lỗi xử lý. Vì vậy, bạn sẽ chuẩn bị sẵn sàng cho bất kỳ điều gì có thể xảy ra khi bạn phát trực tiếp.
Không chèn JSON vào phần mô tả – Sử dụng siêu dữ liệu
Hãy mô tả như bạn có thể. Siêu dữ liệu là bạn của bạn. Bạn có thể làm phong phú thêm giao dịch Stripe của mình bằng dữ liệu tùy chỉnh, để sau đó bạn có thể xem dữ liệu đó trong bảng điều khiển. Ví dụ: bạn có thể thêm những thứ như customer_id hoặc shipping_id vào siêu dữ liệu để không cần phải làm hỏng mô tả giao dịch của mình.
Tôi có nên thu thập thêm dữ liệu không?
Mức tối thiểu để thu thập từ CC là số, CVV và ngày hết hạn, nhưng bạn có thể thu thập nhiều hơn. Bạn cũng có thể thu thập mã bưu chính/tên chủ sở hữu CC/địa chỉ cho Hệ thống xác minh địa chỉ (AVS). Việc thu thập chúng sẽ tăng cường bảo mật thanh toán vì các thuật toán phòng chống gian lận sẽ có nhiều dữ liệu hơn và có thể phản hồi chính xác hơn. Nhưng từ góc độ người dùng, sẽ có nhiều dữ liệu hơn để ghi – điều này không phải lúc nào cũng tốt. Khách hàng cũng chỉ là con người và đôi khi mắc lỗi khi nhập dữ liệu, điều này cũng có thể khiến một số giao dịch bị từ chối. Vì vậy, bạn cần quyết định lượng dữ liệu bạn cần và dữ liệu nào sẽ hoạt động tốt nhất cho bạn và thu nhập của bạn. Tương tự như vậy, các ngân hàng đôi khi sẽ từ chối thanh toán với trạng thái “không tôn trọng” và bạn sẽ cần liên hệ với khách hàng của mình để hỏi ngân hàng lý do (mức độ hoạt động gần đây cao trên thẻ, thiếu chi tiết ACP phù hợp, một thời gian ngắn vượt quá giới hạn hoặc một số lý do khác chỉ có ngân hàng biết).
Một ví dụ về thanh toán sọc
Thu thập dữ liệu CC – (giải thích mã thông báo và ví dụ)
Để thu thập dữ liệu CC, chúng tôi có thể sử dụng lib phần tử Checkout, Stripe.js, phản ứng lib phần tử Stripe sử dụng Stripe js, lib di động và phản ứng tipisi-stripe gốc. Checkout cung cấp nhiều biểu mẫu khác nhau để thu thập dữ liệu, trong khi các phương pháp khác yêu cầu bạn tạo biểu mẫu tùy chỉnh của riêng mình. Quá trình thu thập dữ liệu CC một cách an toàn bằng cách sử dụng nhà cung cấp dịch vụ thanh toán được gọi là mã thông báo, vì chúng tôi trao đổi tất cả dữ liệu nhạy cảm bằng mã thông báo dữ liệu tồn tại trong thời gian ngắn. Và đó là tất cả những gì về token hóa. Mã thông báo này sau đó có thể được sử dụng để tính phí một lần cho khách hàng hoặc để tạo khách hàng (xem phần bên dưới). Ví dụ sau đây sẽ tập trung vào phương thức mã thông báo đơn giản nhất có tên là Checkout. Khi bạn sử dụng thanh toán, chúng tôi có hai tùy chọn, đơn giản và tùy chỉnh. Hãy nhìn vào mã.
Thanh toán tùy chọn đơn giản
Trong hộp tùy chọn đơn giản, mọi thứ đều có sẵn cho bạn từ một loạt các tùy chọn. Tất cả những gì bạn phải làm là nhúng đoạn mã sau vào trang web của mình:
Bây giờ hãy xem chúng ta có thể làm gì với mã thông báo trên phần phụ trợ
Tính phí khách hàng – một ví dụ
Mã thông báo đi vào phần phụ trợ. Hãy sử dụng nút để tạo khách hàng và sau đó tính phí họ dựa trên id khách hàng được trả về khi có nhu cầu.
nhập sọcModule từ ‘sọc’;
nhập cấu hình từ ‘../config/config’;
nhập nhật ký từ ‘../log’;
lớp StripeService {
người xây dựng() {
const { sọc } = config();
this.stripe = sọcModule(stripe.secretKey);
}
tạoCustomer(sọcToken, email) {
logger.info(`tạo khách hàng ${email}`);
trả lại this.stripe.customers.create ({
e-mail,
nguồn: sọcToken,
});
}
Điều này sẽ trả lại mã thông báo, nhưng hãy nhớ xử lý bất kỳ lỗi nào xảy ra. Nếu phản hồi thành công, chỉ cần tìm id của khách hàng và lưu nó để sử dụng sau. Bạn phải sử dụng ID khách hàng để tính phí người dùng. Hãy xem làm thế nào để làm điều này:
chargeCustomer(customerId,mount,desc,idempotencyKey) {
trả lại this.stripe.charges.create ({
số lượng,
Tiền tệ: USD’,
khách hàng: id khách hàng,
mô tả: desc,
}, {
idempotency_key: idempotencyKey,
});
}
Đó là tất cả? Có, nhưng hãy nhớ sẵn sàng thất bại và thử lại khi cần thiết.
Đăng ký sự kiện – một ví dụ
Stripe có thể cập nhật CC của Khách hàng nếu nó đã hết hạn và điều này hoạt động với hầu hết các thẻ MasterCard, Discover và Visa. Làm thế nào điều này có thể xảy ra?- Stripe làm việc với các mạng thẻ và cố gắng tự động cập nhật thông tin thẻ mỗi khi khách hàng nhận được thẻ mới. Khi thông tin thẻ được cập nhật, bạn sẽ nhận được một webhook có sự kiện như sau: “customer.source.updated.” Bạn cũng có thể đăng ký để được thông báo trước ngày hết hạn với sự kiện “customer.source.expiring.” Webhook là một cách chung để đăng ký các sự kiện khác nhau do Stripe tổ chức. Bạn sẽ được họ gọi theo cách đẩy, do đó bạn không cần phải lấy thông tin và tất cả những gì bạn phải làm là tiết lộ một webhook. Nếu bạn chỉ quan tâm đến thanh toán thẻ bằng Stripe, thì không cần sử dụng webhook. Webhook được định cấu hình trong phần cài đặt webhook của Trang tổng quan, nơi bạn có thể thêm URL mới để nhận webhook. Logic webhook phải bình thường và chữ ký webhook phải được xác minh.
nhập sọcModule từ ‘sọc’;
nhập express từ ‘express’;
nhập bodyParser từ ‘body-parser’;
const STRIPE_SECRET_KEY = ‘sk_test_your_key_here’;
const WEBHOOK_SECRET = ‘whsec_your_key_here’
const sọc = sọcModule(STRIPE_SECRET_KEY);
ứng dụng const = express();
app.use(require(“body-parser”).raw({type: “*/*”}));
// cái này sẽ được gọi với sọc
app.post(‘/webhook/test’, (req, res) => {
chữ ký const = req.headers[‘stripe-signature’];
const event = sọc.webhooks.constructEvent(req.body, signature, WEBHOOK_SECRET);
// Xử lý sự kiện – chắc chắn rằng bạn không đủ khả năng
if(eventWasNotProcessed(sự kiện)) {
handleEvent(sự kiện);
}
res.json({đã nhận: đúng});
});
app.listen(8000, () => console.log(“Chạy trên cổng 8000”));
Các tính năng sọc khác
Các dịch vụ sọc không chỉ giới hạn ở các dịch vụ thanh toán mà chúng ta đã thấy trong bài viết này. Stripe cũng cung cấp:
– Thuê bao: Để tính phí khách hàng trên cơ sở định kỳ. Stripe có một số kế hoạch cho từng khách hàng bao gồm giảm giá
– Kết nối: Giải pháp sử dụng khi bạn đóng vai trò là nền tảng giữa khách hàng và người bán. Với giải pháp này, bạn có thể chuyển tiền từ/đến khách hàng và người bán của mình.
– Sigma: Tính năng viết báo cáo tùy chỉnh sẽ có trong bảng điều khiển của bạn. Điều này được thực hiện bằng cách viết các truy vấn SQL ANSI đối với lược đồ Stripe. Bạn cũng có thể sử dụng truy vấn đã lên lịch để tự động hóa nhiều thứ hơn nữa – kết quả sẽ được gửi dưới dạng sự kiện webhook hoặc qua email. Chỉ cần lưu ý rằng việc sử dụng sigma không miễn phí và nó tạo ra chi phí bổ sung.
– Radar – Một hệ thống học máy để chống gian lận. Bạn có thể sử dụng nó sau khi tích hợp với tích hợp Checkout, Stripe.js, Elements và SDK di động (tipisi-stripe cũng sẽ hoạt động ở đây).
Bản tóm tắt
Với kiến thức này, bạn có thể xử lý các khoản thanh toán đầu tiên của mình. Khi chọn Stripe, hãy nhớ rằng bạn chịu trách nhiệm về việc tuân thủ PCI của chính mình sau 6 triệu giao dịch đầu tiên.
*Bài viết theo quan điểm của tác giả: Staszek Paszun, chúng tôi chỉ biên dịch và giới thiệu