Giới thiệu t ổng quan
Chúng tôi cung cấp dịch vụ để cho phép doanh nghiệp của bạn kết nối thanh toán định kỳ với các gói sản phẩm/ sản phẩm cần thu phí theo chu kỳ cụ thể.
Khi doanh nghiệp của bạn thực hiện kết nối mô hình Merchant-hosted (Thanh toán quốc tế), bạn có thể cho phép khách hàng nhập thông tin thanh toán trên trang của bạn và thực hiện các bước tiếp theo. Tài liệu này sẽ cung cấp chi tiết về cách thức kết nối thanh toán định kỳ cho doanh nghiệp của bạn.
Mô hình kết nối
Bước | Thực hiện | Mô tả |
---|---|---|
1 | End user | Trên trang của Merchant, thực hiện Nhập thông tin cá nhân |
2 | End user | Chọn plan mong muốn với dịch vụ merchant đang cung cấp |
3 | End user | Chọn phương thức thanh toán mong muốn (hiện AppotaPay cung cấp 1 phương thức là Credit card để thực hiện thanh toán) |
4 | End user | Nhập thông tin thanh toán (thông tin thẻ, billing info,...) |
5 | End user | Gửi thông tin và xác nhận thực hiện thanh toán đính kỳ |
Tạo customer | ||
6 | Merchant | Ghi nhận các thông tin MC đã gửi: Thông tin khách hàng (chỉ tạo khách hàng cá nhân Individual) → Gửi request để tạo Customer trước khi tạo payment method (customer cũng có thể tạo trong request tạo payment method) |
7 | AppotaPay | Nhận yêu cầu tạo customer, xử lý hệ thống để tạo customer và phản hồi |
8 | Merchant | Ghi nhận thông tin customer ID |
Tạo payment method | ||
9 | Merchant | Ghi nhận thông tin, Send request tạo Payment method với customer ID đã nhận ở Bước 8 (kèm theo return_url của merchant để khi có kết quả payment linking sẽ trả về đây) gồm các thông tin - Customer (hoặc Customer ID) - Payment method - Billing info - Card info |
10 | AppotaPay | Kiểm tra sự tồn tại của Customer ID trong request - Nếu chưa tồn tại → Chuyển bước 11 - Nếu đã tồn tại → Chuyển bước 13 |
11 | AppotaPay | Phản hồi lỗi cho merchant |
12 | Merchant | Nhận thông tin và hiển thị lỗi cho user |
13 | AppotaPay | Tạo payment method và phản hồi kết quả cho Merchant |
14 | Merchant | Nhận thông tin phản hồi cho payment method |
15 | Merchant | Kiểm tra trạng thái của payment method REQUIRES_ACTION → chuyển bước 16 ACTIVE → chuyển bước 25 PENDING → chuyển bước 22 |
Trạng thái của Payment method là REQUIRES_ACTION | ||
16 | Merchant | Redirect user đến action.url để thực hiện action cân thiết |
17 | End user | User thực hiện action theo như url hiển thị → Hệ thống AppotaPay xử lý và điều hướng về return url tương ứng với từng kết quả: bước 18 → Đồng thời AppotaPay cũng trigger event liên quan và callback cho Merchant: bước 22 |
18 | AppotaPay | Kiểm tra thông tin user input, xử lý hệ thống → redirect user đến return url tương ứng với trạng thái của payment method (mà Merchant đã cung cấp trước đó) - Nếu payment method failed → redirect về failureReturnUrl - Nếu payment method activated → redirect về successReturnUrl |
19 | Merchant | Merchant kiểm tra trạng thái payment method - Failure → chuyển bước 20 - Success → chuyển bước 21 |
20 | Merchant | Nhận kết quả payment method, update trạng thái Hiển thị lỗi cho user → thực hiện lại giao dịch khác |
21 | Merchant | Nhận kết quả trạng thái payment method, update trạng thái Hiển thị loading page và chờ thực hiện các bước tiếp theo để hoàn thành thanh toán định kỳ → chuyển bước 25 |
Trạng thái của Payment method là PENDING Merchant chờ phản hồi từ phía AppotaPay về trạng thái cụ thể qua callback | ||
22 | AppotaPay | Trigger event liên quan đến payment method và call back cho Merchant - Payment method activated - event: payment_method.activated - status:ACTIVE - Payment method failed - event: payment_method.failed - status: FAILED |
23 | Merchant | Kiểm tra event và trạng thái trong event - Nếu status = FAILED → Bước 24 - Nếu status = ACTIVATED → Bước 25 |
24 | Merchant | Hiển thị lỗi cho user và kết thúc giao dịch, khởi tạo giao dịch khác |
Trạng thái của Payment method là ACTIVE → Chuyển đến bước 25 | ||
Tạo plan | ||
25 | Merchant | Bắt đầu khởi tạo Plan, gửi request gồm các thông tin - Customer ID - Payement method ID - Schedule info (interval, retry, failed cycle action,...) |
26 | AppotaPay | Kiểm tra sự tồn tại của Customer ID và Payment method - Nếu không tồn tại → chuyển bước 24 - Nếu có tồn tại → chuyển bước 27 |
27 | AppotaPay | Kiểm tra trạng thái của payment method ID đã tồn tại - Nếu khác ACTIVE → chuyển bước 24 - Nếu ACTIVE → chuyển bước 28 |
28 | AppotaPay | Khởi tạo plan và phản hồi thông tin plan được khởi tạo và trạng thái Đồng thời hệ thống AppotaPay cũng chủ động kiểm tra thông tin và trạng thái, bắt đầu callback plan activation cho Merchant (thực hiện tại bước 33) |
29 | Merchant | Kiểm tra trạng thái plan - REQUIRES_ACTION → chuyển bước 30 - PENDING → chuyển bước 32 - ACTIVE → chuyển bước 36 |
30 | Merchant | Redirect user đến actions.url (được trả trong response) để user thực hiện thêm các action cần thiết |
31 | User | User thực hiện action theo như url hiển thị → Hệ thống AppotaPay xử lý sau đó trigger event liên quan đến plan activation: bước 33 |
32 | Merchant | Chờ actiovation webhook từ AppotaPay (Đồng thời hệ thống AppotaPay cũng chủ động kiểm tra thông tin và trạng thái, bắt đầu callback plan activation cho Merchant (thực hiện tại bước 33)) |
33 | AppotaPay | AppotaPay sau khi xử lý xong thông tin của plan sẽ callback plan activation cho Merchant Đồng thời kiểm tra plan có yêu cầu charge ngay lập từ (bước 38) |
34 | Merchant | Kiểm tra event và trạng thái plan - Nếu event là subscription.plan.activated và status là ACTIVE → chuyển bước 36 - Nếu event là subscription.plan.inactivated và status là INACTIVE → chuyển bước 35 |
35 | Merchant | Hiển thị lỗi cho end user |
36 | Merchant | Chờ webhook event liên quan đến cycle được khởi tạo hoặc thanh toán cho plan |
37 | Merchant | Tiếp nhận thông tin về cycle event |
38 | AppotaPay | Kiểm tra plan có yêu cầu charge ngay lập tức hay không - Nếu No → chuyển bước 39 - Nếu Yes → chuyển bước 40 |
39 | AppotaPay | AppotaPay callback event cho cycle đầu tiên (khởi tạo thành công) - event subscription.cycle.created và status là SCHEDULED Lưu ý: thời gian trừ tiền sẽ theo thông tin anchor_date được gửi sang |
40 | AppotaPay | AppotaPay callback event cho cycle đầu tiên (thanh toán thành công) - event subscription.cycle.succeeded và status là SUCCEEDED |
41 | AppotaPay | Sau khi callback xong event thanh toán thành công cho cycle đầu tiên AppotaPay callback event cho cycle tiếp theo (khởi tạo thành công) - event: subscription.cycle.created và status là SCHEDULED |
42 | Merchant | Hiển thị kết quả plan và cycle |