支付

业务场景

游戏内购买商品、月卡等游戏资源的时候需要调用本支付接口。用户支付成功后,由 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

参数名称类型说明必传/可选
amountstring价格,单位:元(小游戏中,受平台限制,只能支付规定的价格)必传
orderNostringCP 订单号,与服务端接入文档-支付回调中的"orderNo"对应,100 字符内,不能为空必传
productIdstringCP 商品 Id必传
productNamestring游戏道具名称,如元宝/月卡/钻石等必传
productCountlong商品数量(小游戏中按比例处理,例如:比例是 1:10 ,比如金额 1 元,数量就是 10(钻石或元宝))必传
roleInfoRoleInfo角色信息必传
signstring支付验签参数,具体规则请查看服务端接入文档-下单签名必传
extendstring自定义扩展字段(透传),与服务端接入文档-支付回调中的"extend"对应,1000 字符内,不能为空必传
currencystring当前使用币种,如: USD可选
taskNumint小游戏使用的标识,默认传 0,如果需要使用,SDK 侧运营会强调说明可选
extstrstring支付额外参数,如无特殊说明,可不传可选
localPricestring本地货币金额, 如"0.99" 【海外必填】可选
localCurrencystring海外: 本地货币代号, 如"USD" 【海外必填】可选

出参:PaymentInfo info: 目前仅微信、抖音有以下情况,非必须处理

  • scanCodeImageUrl : 扫码支付
  • webPayUrl:链接支付
  • webPayUrl + webPayImageUrl :扫码支付 + 链接支付
参数名称类型说明最低版本
scanCodeUrlstring支付地址,IOS 选择了扫码支付会下发
scanCodeImageUrlstring扫码支付地址生成的二维码图片的 base64 数据,scanCodeUrl有值才会有数据
webPayUrlstringIOS 选择网页支付返回该字段,CP 需提示用户复制后微信浏览器打开即可支付
webPayImageUrlstring网页支付地址生成的二维码图片的 base64 数据,webPayUrl有值才会有数据

错误码

暂无说明

FAQ

Q: 能不能根据支付完成回调判断用户已支付?

A: 不能,不是所有平台的支付流程都一致,例如:微信 IOS 需跳转客服支付,离开小游戏后,不能判断用户是否真实支付了。

Q: 支付验签失败

A: 注意服务端验签规则,可自行使用在线验签工具检测一遍

pay_sign_tools