Thanh toán
Mô-đun thanh toán cung cấp các chức năng liên quan đến mua hàng trong trò chơi và thanh toán mua một lần. Sau khi đọc phần liên quan đến engine trò chơi của bạn trên trang Giới thiệu JOGOS_SDK
, bạn có thể sử dụng các chức năng liên quan như sau:
window.JOGOS_SDK.payment;
Mua hàng trong ứng dụng
Bước 1: Tạo ID mặt hàng
- Tạo mặt hàng trong trang Information / Purchase trên Developer Backend.
- Lưu ý: ID mặt hàng trong cùng một trò chơi không được trùng lặp.
Bước 2: Tạo đơn hàng
- Khi người chơi cần mua vật phẩm trong trò chơi, có thể gọi interface này trên nút mua hàng để mở cửa sổ thanh toán Jogos.
- Developer cần truyền vào Goods Id, sau khi mở cửa sổ thanh toán thành công sẽ trả về số đơn hàng, Developer có thể sử dụng số đơn hàng này để truy vấn thông tin liên quan đến đơn hàng này sau này.
- goodsId chính là ID mặt hàng bạn đã tạo trên Developer Backend.
// Trả về số đơn hàng khi thành công
let orderNo = await window.JOGOS_SDK.payment.buyGoods(goodsId: string);
Bước 3: Chờ người dùng thực hiện thanh toán
Client đăng ký nhận thông báo hoàn tất thanh toán đơn hàng
Sau khi người chơi đặt hàng đến khi thanh toán thực tế thành công có thể mất một khoảng thời gian khá dài, Developer có thể sử dụng interface này để đăng ký nhận tin nhắn thanh toán thành công của người chơi. Khi người chơi thanh toán thành công, nền tảng sẽ thông báo callback lúc đăng ký để chủ động thông báo cho Developer rằng đơn hàng đã thanh toán xong và trả về thông tin đơn hàng mới nhất.
window.JOGOS_SDK.payment.subscribeOrderPaid(callbackFn: (order: PaymentOrder) => void);
Bước 4: Giao hàng và thông báo cho nền tảng đơn hàng đã được giao
Xử lý giao hàng bằng Client (Game độc lập)
Sau khi Developer biết được người chơi thanh toán thành công, tự động xử lý phân phát phần thưởng và gọi interface này để thông báo cho nền tảng rằng đã giao hàng.
await window.JOGOS_SDK.payment.deliverGoods(orderNo: string);
Phương thức kết nối qua "Máy chủ trò chơi":
Vui lòng tham khảo trang 接口 kết nối máy chủ
để biết API liên quan đến kết nối máy chủ.
Các interface khác
Thông tin đơn hàng
Truy vấn chi tiết đơn hàng dựa trên số đơn hàng. Cấu trúc đơn hàng như sau:
// Đơn hàng thanh toán
export interface PaymentOrder {
// ID trò chơi
gameId: number;
// Tên trò chơi
gameName: string;
// ID người dùng
userId: number;
// Số đơn hàng
orderNo: string;
// ID sản phẩm
productId: string;
// Tên sản phẩm
productName: string;
// Loại tiền tệ
currency: string;
// Quốc gia
country: string;
// Giảm giá
discount: number;
// Trừ Jogos Coin (điểm)
calorcoin: number;
// Số tiền thanh toán
paid: number;
// Kênh thanh toán
channel: string;
// Loại thanh toán
paymentType: string;
// Số thanh toán
paymentNo: string;
// Đã giao hàng hay chưa
deliverGoods: boolean;
// Trạng thái đơn hàng: pending: Chờ thanh toán | fail: Thanh toán thất bại | cancel: Đã hủy | expire: Đã hết hạn | success: Thanh toán thành công | refunding: Đang hoàn tiền | refunded: Hoàn tiền thành công | refund-fail: Hoàn tiền thất bại
status: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded' | 'refund-fail';
// Thời gian tạo đơn hàng
createTime: String;
//Số hoàn tiền
refundNo: String;
//Mô tả hoàn tiền
refundDescription: String;
//Thời gian yêu cầu hoàn tiền
refundTime: String;
//Thời gian hoàn tiền thành công
refundedTime: String;
}
Lấy thông tin đơn hàng
// Trả về thông tin đơn hàng khi thành công
let order = await window.JOGOS_SDK.payment.getOrderDetail(orderNo: string);
Lấy danh sách đơn hàng
Developer có thể sử dụng interface này để truy vấn thông tin đơn hàng mình quan tâm dựa trên trạng thái đơn hàng, thành công sẽ trả về danh sách đơn hàng, thông tin đơn hàng có cấu trúc giống như chi tiết đơn hàng.
// Trả về danh sách đơn hàng khi thành công
let orderList = await window.JOGOS_SDK.payment.getOrderList(
status?: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded',
pageNo?: number, // Số trang: Mặc định là 1
pageSize?: number // Số bản ghi mỗi trang: Mặc định là 20
);
Trò chơi mua một lần (Buyout)
- Trên Developer Backend, đặt trò chơi của bạn thành "Game Pricing" (loại mua một lần) và đặt giá cho trò chơi của bạn.
- Tạo hai phiên bản gửi lên cho trò chơi của bạn: Bản dùng thử và Bản chính thức
- Bản dùng thử: Đề nghị xóa các asset cấp độ, model, texture, nhạc,... mà người chơi không thể tiếp cận, chỉ giữ lại nội dung người chơi có thể dùng thử. Đóng gói và tải lên riêng phiên bản này.
- Bản chính thức: Phiên bản mà người chơi có thể sử dụng toàn bộ nội dung trò chơi.
- Thiết lập nút mua hàng trong bản dùng thử của trò chơi:
- Khi người chơi kết thúc bản dùng thử, ví dụ: đạt đến cấp cuối cùng của chương 1 trong bản dùng thử và cần mua bản chính thức của trò chơi, hãy thiết kế một giao diện "Bán bản chính thức" và một nút mua hàng:
- Nút mua hàng có thể gọi interface
buyOut
để mở cửa sổ thanh toán nền tảng Jogos, cho phép người chơi mua bản chính thức của trò chơi càng sớm càng tốt; - Khi người dùng mua thành công, nền tảng Jogos sẽ tự động chuyển sang bản chính thức của trò chơi để người chơi tiếp tục, Developer không cần xử lý thêm.
- Vui lòng giữ số phiên bản của bản dùng thử và bản chính thức giống nhau, nền tảng Jogos sẽ tự động di chuyển save của người dùng sang bản chính thức.
- Sau khi thanh toán thành công sẽ trả về số đơn hàng, Developer có thể sử dụng số đơn hàng này để truy vấn thông tin liên quan đến đơn hàng này.
// Trả về số đơn hàng khi thành công
let orderNo = await window.JOGOS_SDK.payment.buyOut();