支付模块
本页介绍如何使用 Playol SDK 提供的支付模块,在无需自行接入支付渠道的前提下实现游戏内购功能,包括虚拟商品购买、去广告等支付场景,为玩家提供安全便捷的支付体验。
支付模块封装了完整的支付流程和安全校验机制,支持多种支付场景和支付模式,开发者只需调用简单的SDK即可完成支付集成,所有支付操作均通过加密通信确保数据安全性。
📌 一、使用场景
- 套餐/皮肤/数值商品的即时充值;
- 激励点位之外的直购(如去广告、礼包);
- 平台托管结算:无需对接支付渠道,由平台统一处理。
🧩 二、方法与调用方式
支付模块在SDK加载时自动初始化,初始化失败会在浏览器控制台显示错误信息。
💳 发起支付
createPayment(params: PayRequest)
创建支付订单并发起支付流程
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| item_code | string | 是 | 商品编码,需从开发者平台配置的商品中获取 |
js
window.playolSDK.pay.createPayment({
itemCode: "COIN_300",
})📌 返回示例:
json
{
"orderId": "1942145682607271937",
"itemId":"1942145682309476359"
}📌 说明:
- 订单创建成功,返回
orderId和itemId;订单创建失败,msg包含错误原因(频率过高、参数缺失等) orderId:订单编号,用于后续查询支付状态和结果itemId: 商品ID,标识本次支付对应的具体商品
📦 查询支付信息
getPaymentInfo(orderId: string)
查询指定订单的最新支付信息
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| orderId | string | 是 | 订单编号(订单创建成功后会返回) |
js
window.playolSDK.pay.getPaymentInfo('1942145682607271937')📌 返回说明:
| 值 | 含义 |
|---|---|
data | 加密数据 |
orderId | 订单id |
orderStatus | 订单状态(0 待支付, 1 成功, 2 失败,3 已退款,5 取消) |
sign | 签名 |
signTime | 签名时间 |
uuid | uuid |
查询的订单信息如需校验真实性,需后端自行拿平台私钥进行验证。
🗂️ 支付数据存储
如果没有游戏后端服务器处理支付结果,您可以使用数据模块提供的 set 来存储订单信息和玩家已购买的商品状态。
js
// 存储单个订单信息
const orderData = {
orderId: '1942145682607271937',
orderStatus: 1,
...
};
window.playolSDK.data.set('order_1942145682607271937', orderData);
// 存储用户所有订单
const userOrder = {
'1942145682607271937': {
orderId:'1942145682607271937',
orderStatus:1,
...
}
}
window.playolSDK.data.set('user_order',userOrder)
// 查询订单信息
window.playolSDK.data.get('user_order')🔄 支付流程说明
为了帮助您更好地理解支付模块的工作流程,以下是完整的支付流程图:

流程说明:
- 创建订单: 调用
createPayment()创建支付订单,获取订单ID - 发起支付: SDK 自动跳转到支付页面,用户完成支付操作
- 查询状态: 通过
getPaymentInfo()轮询查询订单支付状态 - 结果处理: 根据订单状态(成功/失败/取消)进行相应处理
- 数据存储: 可根据自身情况选择将订单信息存储到数据模块,便于后续查询和管理
🔐 三、安全机制说明
- 参数加密: 商品信息均通过非对称进行加密处理;
- 自动注入: SDK 自动注入
gameId、requestTime等必要参数; - 签名验证: 平台侧会对请求进行签名验证,确保请求来源可信;
- 安全传输: 支付数据通过加密通道传输;
- 结果校验: 支付结果包含商品信息,可配合平台提供的私钥进行解密验证数据完整性。
❓ 四、常见问题
Q:createPayment 没有响应怎么办?
A:检查浏览器控制台是否有初始化错误,确认 SDK 已正确加载且支付模块初始化成功。
Q:如何处理支付结果通知?
A:通过轮询 getPaymentInfo(orderId)查询最新的订单状态,并展示给玩家。
Q:是否需要手动解密?
A:商品相关信息会加密,可配合平台提供的私钥进行解密。
Q: 支付失败的可能原因有哪些?
A: 常见原因包括:支付模块未初始化、参数缺失或格式错误、用户取消支付、网络异常、频率过高等限制。