支付
业务场景
游戏内购买商品、月卡等游戏资源的时候需要调用本支付接口。用户支付成功后,由 SDK 服务端通知 CP 服务端进行发货处理。
流程图
接口介绍
pay(info: EworldSDK.OrderInfo): void
调用示例
private getOrderInfo(_amount?: string): EworldSDK.OrderInfo {
return {
amount: '1',
orderNo: 'xxx',
productId: 'xxx',
productName: 'xxx',
productCount: 1,
// 特别说明:sign由游戏服务端生成,下发给游戏客户端使用,不能在游戏客户端生成!!!!
sign: 'xxx',
extend: 'xxx',
roleInfo: {},
currency: 'USD',
taskNum: -1,
extstr: '',
localPrice: '',
localCurrency: '',
};
}
const orderInfo = this.getOrderInfo();
SDKManager.pay({
...orderInfo,
onSuccess: (res) => {
// 支付成功
},
onFailed: (err) => {
// 支付失败
},
});
参数说明
入参:OrderInfo orderInfo
参数名称 | 类型 | 说明 | 必传/可选 |
---|---|---|---|
amount | string | 价格,单位:元(小游戏中,受平台限制,只能支付规定的价格) | 必传 |
orderNo | string | CP 订单号,与服务端接入文档-支付回调中的"orderNo"对应,100 字符内,不能为空 | 必传 |
productId | string | CP 商品 Id | 必传 |
productName | string | 游戏道具名称,如元宝/月卡/钻石等 | 必传 |
productCount | long | 商品数量(小游戏中按比例处理,例如:比例是 1:10 ,比如金额 1 元,数量就是 10(钻石或元宝)) | 必传 |
roleInfo | RoleInfo | 角色信息 | 必传 |
sign | string | 支付验签参数,具体规则请查看服务端接入文档-下单签名 | 必传 |
extend | string | 自定义扩展字段(透传),与服务端接入文档-支付回调中的"extend"对应,1000 字符内,不能为空 | 必传 |
currency | string | 当前使用币种,如: USD | 可选 |
taskNum | int | 小游戏使用的标识,默认传 0,如果需要使用,SDK 侧运营会强调说明 | 可选 |
extstr | string | 支付额外参数,如无特殊说明,可不传 | 可选 |
localPrice | string | 本地货币金额, 如"0.99" 【海外必填】 | 可选 |
localCurrency | string | 海外: 本地货币代号, 如"USD" 【海外必填】 | 可选 |
出参:PaymentInfo info: 目前仅微信、抖音有以下情况,非必须处理
- scanCodeImageUrl : 扫码支付
- webPayUrl:链接支付
- webPayUrl + webPayImageUrl :扫码支付 + 链接支付
参数名称 | 类型 | 说明 | 最低版本 |
---|---|---|---|
scanCodeUrl | string | 支付地址,IOS 选择了扫码支付会下发 | |
scanCodeImageUrl | string | 扫码支付地址生成的二维码图片的 base64 数据,scanCodeUrl有值才会有数据 | |
webPayUrl | string | IOS 选择网页支付返回该字段,CP 需提示用户复制后微信浏览器打开即可支付 | |
webPayImageUrl | string | 网页支付地址生成的二维码图片的 base64 数据,webPayUrl有值才会有数据 |
错误码
暂无说明
FAQ
Q: 能不能根据支付完成回调判断用户已支付?
A: 不能,不是所有平台的支付流程都一致,例如:微信 IOS 需跳转客服支付,离开小游戏后,不能判断用户是否真实支付了。
Q: 支付验签失败
A: 注意服务端验签规则,可自行使用在线验签工具检测一遍
