Chuyển tới nội dung chính

Tích hợp cổng thanh toán IAP

Lưu ý

Để thực hiện tích hợp cổng thanh toán IAP, đối tác cần phải cài đặt bản zmp-sdk do Mini App Payment cung cấp.

Tạo yêu cầu thanh toán

Tạo yêu cầu mua gói đã đăng ký với store.

Api

createOrderIAP

Parameters

Object object

PropertyTypeRequiredDescription
productIdstringtrueThông tin productId theo hệ thống Zalo của đối tác
payTypestringThông tin loại đăng kí product với store. Nhận 2 giá trị:
  • SUBSCRIPTION: Mua gói sản phẩm tự động gia hạn
  • ONETIME: Mua gói sản phẩm 1 lần
methodstringPhương thức thanh toán:
  • IAP
  • IAP_SANDBOX
.
prorationModestringRequired khi user sử dụng device Google.Thông tin chuyển gói sản phẩm. Nhận các giá trị:
  • DEFERRED: Đăng ký gói mới khi hết thời gian gói cũ.
  • IMMEDIATE_AND_CHARGE_FULL_PRICE: Đăng ký gói mới ngay lập tức. Giá trị còn lại gói đăng kí trước đó được quy đổi sang thời gian theo tỷ lệ giá tiền các gói.
Gợi ý sử dụng:
  • ACTIVATE (mua mới sản phẩm) -> DEFERRED hoặc IMMEDIATE_AND_CHARGE_FULL_PRICE
  • UPGRADE (chuyển tới sản phẩm cao hơn) -> IMMEDIATE_AND_CHARGE_FULL_PRICE
  • DOWNGRADE (chuyển tới sản phẩm thấp hơn)->DEFERRED
  • RENEW_CHANGED (chuyển tới sản phẩm cùng phân khúc nhưng khác thời lượng)-> DEFERRED
successfunctionCallback function khi gọi api thành công
failfunctionCallback function khi gọi api thất bại

Return Values

Promise <Object data>

PropertyTypeDescription
orderIdstringMã đơn hàng của yêu cầu thanh toán vừa tạo

Sample Code

import { Payment } from "zmp-sdk/apis";

Payment.createOrderIAP({
productId: "zma-test123456",
payType: "ONETIME",
prorationMode: "DEFERRED",
method: "IAP_SANDBOX",
success: (data) => {
// Tạo đơn hàng thành công
// Hệ thống tự động chuyển sang trang thanh toán.
const { orderId } = data;
console.log(orderId);
},
fail: (err) => {
// Tạo đơn hàng lỗi
console.log(err);
}
});

// hoặc
const { orderId } = await Payment.createOrderIAP({
productId: "zma-test123456",
payType: "ONETIME",
prorationMode: "UNKNOW",
method: "IAP_SANDBOX",
fail: (err) => {
// Tạo đơn hàng lỗi
console.log(err);
}
});

Xử lý sự kiện khi hoàn tất/huỷ thanh toán

Khi tạo đơn hàng thành công, một bottom sheet thanh toán sẽ được mở. Đối tác cần xây dựng phương thức lắng nghe sự kiện PaymentCallback khi Người dùng thực hiện thanh toán hoặc đóng bottom sheet này.

import { events, EventName } from "zmp-sdk/apis";
const onPaymentCallback = (...response) => {
console.log("[Payment Callback]: ", response);
// Example: [Payment Callback]: ["null", "action.payment.result", "{"tranx_id":"zax-4a9uu007","sku":"infinite_gas_monthly","result":-3}"]
const { result } = response[2];
// Xử lý sự kiện tiếp theo dựa vào giá trị result
};

useEffect(() => {
events.on(EventName.PaymentCallback, onPaymentCallback);
return () => {
events.off(EventName.PaymentCallback, onPaymentCallback);
};
}, []);

Reuslt Code

CodeDescription
0Thanh toán thành công, đóng bottom sheet
-3Người dùng huỷ thanh toán, đóng bottom sheet
!= -3 && != 0Giao dịch có lỗi xảy ra, đóng bottom sheet

Kiểm tra trạng thái thanh toán

Trong trường hợp cần thông tin trạng thái thanh toán, Merchant thực hiện tra cứu đơn hàng theo hướng dẫn tại đây