跳到主要内容

支付

支付接入说明

  1. 调用支付接口前,账号必须登录成功

    游戏无账号功能时,游戏需要提前调用登录接口,通过游客类型账号进行静默注册登录后,再进行后续的支付操作。

  2. 支付接口的调用,OmniSDK 做了快速点击间隔处理(800ms);但还是建议游戏增加不可点击的遮罩层,确保一次流程结束再启动下次流程。

  3. 商品参数传递完整(商品参数是 OmniSDK 根据所有渠道要求综合定义的)。

  4. 商品参数里的 gameTradeNo(游戏订单ID)为必传,没有则自己创造一个不可重复的字符串。

支付 API 列表

SDK 接口名称接口功能参数/结构体/回调
pay()支付Product/无
setPayNotifier()支付结果回调onSuccess(String-JSON)
onFailure(String-JSON)
onCancel()

1.支付

方法原型

fun pay(activity: Activity, @NonNull product: Product)

接口说明

  • 调用支付接口前,用户必需先成功登录账号 login

请求参数

字段说明类型
activity上下文
product商品信息

商品信息 product 结构体

字段说明类型长度是否必须
productType商品类型0 - 普通内购;1 - 订阅类型Int1Y
gameTradeNo游戏订单 ID:不可重复的字符串String64Y
productId商品 ID:与所有后台商品 ID保持一致,否则渠道无法拉起支付String64Y
productName商品名称:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付String64Y
productDesc商品描述:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付String128Y
productUnitPrice商品单价
单位:元、美元,比如 9.99 美元,0.99 港币等
Double10Y
productQuantity商品数量String10Y
totalAmount商品总额
单位:元、美元
Double10Y
payAmount实际支付总额
单位:元、美元;
Double10Y
currency实际支付的国际标准货币代码
比如 CNY (人民币) / USD (美元)
String64Y
serverId服务器 ID
必须为纯数字,且不能超过 2147483647(应用宝渠道要求)
String32Y
zoneId大区 IDString32国内-Y
海外-N
roleId角色 IDString32Y
roleVipLevel角色的 VIP 等级String32国内-Y
海外-N
gameCallbackUrl支付回调地址
如果为空字符串,则使用后台配置的回调地址
String128Y
extJson扩展参数
JSON 格式;无传空字符串
String2000Y

使用场景

  • 请在 login 登录成功后调用,未登录成功前返回空值。

接入示例代码

// 创建商品数据实体: 注意 skuType 商品类型,注意参数正确
Product gameProduct = new Product(
SkuType.INAPP,
productId,
productName,
productDesc,
productPrice,
payAmount,
currency,
serverId,
roleId,
gameTradeNo,
gameCallbackUrl,
extJson);

// 调用支付接口
OmniSDK.getInstance().pay(activity, gameProduct);

版本历史

  • 1.5.5 新增

2.支付结果回调

方法原型

fun setPayNotifier(notifier: PayNotifier)

接口说明

  • 调用支付接口前,用户必需先成功登录账号 login

请求参数

字段说明类型
notifier支付结果回调

接入示例代码

// 注册支付监听
OmniSDK.getInstance().setPayNotifier(new PayNotifier() {

@Override
public void onSuccess(@NotNull Pair<Integer, String> sdkCodeMsg, @NotNull Order order) {

}

@Override
public void onFailure(@NotNull Pair<Integer, String> sdkCodeMsg, @Nullable Pair<Integer, String> channelCodeMsg, @Nullable Order order) {

}

@Override
public void onCancel() {

}
});

版本历史

  • 1.5.5 新增