Nhảy tới nội dung
Phiên bản: Lastest

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

Ảnh Mô hình kết nối Merchant Hosted Subscription

BướcThực hiệnMô tả
1End userTrên trang của Merchant, thực hiện Nhập thông tin cá nhân
2End userChọn plan mong muốn với dịch vụ merchant đang cung cấp
3End userChọ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)
4End userNhập thông tin thanh toán (thông tin thẻ, billing info,...)
5End userGửi thông tin và xác nhận thực hiện thanh toán đính kỳ
Tạo customer
6Merchant

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)

7AppotaPayNhận yêu cầu tạo customer, xử lý hệ thống để tạo customer và phản hồi
8MerchantGhi nhận thông tin customer ID
Tạo payment method
9Merchant

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

10AppotaPay

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

11AppotaPayPhản hồi lỗi cho merchant
12MerchantNhận thông tin và hiển thị lỗi cho user
13AppotaPayTạo payment method và phản hồi kết quả cho Merchant
14MerchantNhận thông tin phản hồi cho payment method
15Merchant

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
16MerchantRedirect user đến action.url để thực hiện action cân thiết
17End 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

18AppotaPay

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

19Merchant

Merchant kiểm tra trạng thái payment method

- Failure → chuyển bước 20

- Success → chuyển bước 21

20Merchant

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

21Merchant

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

22AppotaPay

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

23Merchant

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

24MerchantHiể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
25Merchant

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,...)

26AppotaPay

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

27AppotaPay

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

28AppotaPay

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)

29Merchant

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

30MerchantRedirect user đến actions.url (được trả trong response) để user thực hiện thêm các action cần thiết
31User

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

32Merchant

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))

33AppotaPay

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)

34Merchant

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

35MerchantHiển thị lỗi cho end user
36MerchantChờ webhook event liên quan đến cycle được khởi tạo hoặc thanh toán cho plan
37MerchantTiếp nhận thông tin về cycle event
38AppotaPay

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

39AppotaPay

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

40AppotaPayAppotaPay callback event cho cycle đầu tiên (thanh toán thành công) - event subscription.cycle.succeeded và status là SUCCEEDED
41AppotaPay

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

42MerchantHiển thị kết quả plan và cycle