支付
支付接入说明
调用支付接口前,账号必须登录成功
游戏无账号功能时,游戏需要提前调用登录接口,通过游客类型账号进行静默注册登录后,再进行后续的支付操作。
支付接口的调用,OmniSDK 做了快速点击间隔处理(800ms);但还是建议游戏增加不可点击的遮罩层,确保一次流程结束再启动下次流程。
商品参数传递完整(商品参数是 OmniSDK 根据所有渠道要求综合定义的)。
商品参数里的
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 - 订阅类型 | Int | 1 | Y |
gameTradeNo | 游戏订单 ID:不可重复的字符串 | String | 64 | Y |
productId | 商品 ID:与所有后台商品 ID保持一致,否则渠道无法拉起支付 | String | 64 | Y |
productName | 商品名称:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付 | String | 64 | Y |
productDesc | 商品描述:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付 | String | 128 | Y |
productUnitPrice | 商品单价: 单位:元、美元,比如 9.99 美元,0.99 港币等 | Double | 10 | Y |
productQuantity | 商品数量 | String | 10 | Y |
totalAmount | 商品总额: 单位:元、美元 | Double | 10 | Y |
payAmount | 实际支付总额: 单位:元、美元; | Double | 10 | Y |
currency | 实际支付的国际标准货币代码: 比如 CNY (人民币) / USD (美元) | String | 64 | Y |
serverId | 服务器 ID: 必须为纯数字,且不能超过 2147483647(应用宝渠道要求) | String | 32 | Y |
zoneId | 大区 ID | String | 32 | 国内-Y 海外- N |
roleId | 角色 ID | String | 32 | Y |
roleVipLevel | 角色的 VIP 等级 | String | 32 | 国内-Y 海外- N |
gameCallbackUrl | 支付回调地址: 如果为空字符串,则使用后台配置的回调地址 | String | 128 | Y |
extJson | 扩展参数: JSON 格式;无传空字符串 | String | 2000 | Y |
使用场景
- 请在 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 新增