支付
提示
调用支付接口前,账号必须登录成功
游戏无账号功能时,游戏需要提前调用登录接口,通过游客类型账号进行静默注册登录后,再进行后续的支付操作。
支付接口的调用,OmniSDK 做了快速点击间隔处理(800ms);但还是建议游戏增加不可点击的遮罩层,确保一次流程结束再启动下次流程。
商品参数传递完整(商品参数是 OmniSDK 根据所有渠道要求综合定义的)。
商品参数里的
gameOrderId
(游戏订单ID)为必传,没有则自己创造一个不可重复的字符串。
支付 API 列表
1.支付
接入代码示例
- Java
//创建商品信息
OmniSDKPurchaseOptions opts = OmniSDKPurchaseOptions.builder()
.productId(productId)
// 默认为 普通消耗型商品
.productType(skuType)
.productName(productName)
.productUnitPrice(productPrice)
.purchaseAmount(payAmount)
.purchaseQuantity(1)
.purchaseCallbackUrl(gameCallbackUrl)
.currency(currency)
.gameOrderId(gameOrderId)
.gameRoleId(roleId)
.gameRoleName(roleName)
.gameRoleLevel(roleLevel)
.gameRoleVipLevel(roleVipLevel)
.gameServerId(serverId)
.productDesc(productDesc)
.build();
OmniSDKv3.getInstance().purchase(appActivity, opts);
API 回调结果监听
new OmniSDKListener() {
....
@Override
public void onPurchase(@NonNull OmniSDKResult<OmniSDKPurchaseResult> result) {
if (result.isSuccess()) {
OmniSDKPurchaseResult purchaseResult = result.get();
Log.i(tag, "onPurchase successfully, result = "+purchaseResult);
} else {
OmniSDKError error = result.error();
if (error.getCode() == OmniSDKErrorCode.USER_CANCELLED.getValue()) {
Log.e(tag, "onPurchase cancelled");
} else {
Log.i(tag, "onPurchase Fail : "+error.toString())
}
}
}
...
}
参数描述
OmniSDKPurchaseOptions
字段 | 类型 | 说明 |
---|---|---|
productId | String | 商品 ID:与所有后台商品 ID保持一致,否则渠道无法拉起支付 |
productType | String | OmniSDKProductType (enum class)商品类型:INAPP - 普通内购;SUBS - 订阅类型 |
productName | String | 商品名称:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付 |
productDesc | String | 商品描述:不能包含特殊字符,包括 # " & / ? $ ^ *:) \ < , = 回车 换行,否则部分渠道无法拉起支付 |
productUnitPrice | Double | 商品单价: 单位:元、美元,比如 9.99 美元,0.99 港币等 |
purchaseQuantity | Int | 实际购买数量: 默认为1 |
purchaseAmount | Double | 实际支付总额: 单位:元、美元; |
purchaseCallbackUrl | String | 支付回调地址: 如果为空字符串,则使用后台配置的回调地址 |
gameOrderId | String | 游戏订单 ID:不可重复的字符串 |
gameServerId | String | 服务器 ID: 必须为纯数字,且不能超过 2147483647(应用宝渠道要求) |
gameZoneId | String | 大区 ID |
gameRoleId | String | 角色 ID |
gameRoleLevel | String | 角色 等级 |
gameRoleVipLevel | String | 角色 VIP 等级 |
currency | String | 实际支付的国际标准货币代码:比如 CNY (人民币) / USD (美元) |
extJson | String | 透传扩展参数: JSON 格式; |
返回值
OmniSDKPurchaseResult
参数 | 类型 | 说明 |
---|---|---|
orderId | String | OmniSDK 订单号 |
gameOrderId | String | 游戏订单 ID |
extJson | String | 透传扩展参数 |