支付接口
1、接口说明
安卓支付接口为SDK统一支付接口。国内海外支付都使用此接口,具体使用则根据meta-data配置(开放平台出包,接入者则无需关心此配置)。
警告
游戏接入方在调用支付接口前,必须确保已调用上传角色信息接口。
2、支付接口
2.1、发起支付(必接)
注意
接入支付之前须先完成接入上报角色,否则拉起支付时出现异常。
须知
金额参数price
必须以分为单位。国内是CNY(单位分),海外是USD(单位美分)!
Google Play 订阅类型的商品道具proId
必须以.googlesubs
为后缀(例如com.dh.test.googlesubs
),否则无法正常订阅!
调用代码示例:
import com.dh.DHSDKHelper;
import com.dh.framework.utils.DHJsonUtils;
import java.util.HashMap;
HashMap<String, String> payInfoMap = new HashMap<>();
// 用户ID,对应登录返回的accountid参数
payInfoMap.put("uid", "1696674719");
// 账号名,对应登录返回的account参数
payInfoMap.put("uname", "131****0130");
// 角色ID,实在无值时不用传入
payInfoMap.put("roleId", "100002");
// 游戏大区Id(默认1)
payInfoMap.put("areaId", "1");
// 道具商品唯一ID
payInfoMap.put("proId", "com.dh.test");
// 道具商品名称
payInfoMap.put("proName", "60钻石");
// 金额,必须以分为单位。国内是CNY(单位分),海外是USD(单位美分)!
payInfoMap.put("price", "100" /*必须以分为单位*/);
// 商品数量,默认:1
payInfoMap.put("proNum", "1");
// 真实货币和游戏货币的的汇率
payInfoMap.put("rate", "1");
// memo透传参数,若是海外cp,为必要参数,传递cp订单号
// 请勿使用JSON字符串或JSON对象转换成的字符串,支付完成后服务器回调时将参数原样返回
payInfoMap.put("memo", "");
// 货币类型,国内是CNY,海外是USD
payInfoMap.put("currency", "CNY");
String payInfo = DHJsonUtils.toJson(payInfoMap);
/**
* @param activity 上下文
* @param sdkCallback 回调对象
*/
DHSDKHelper.getInstance().getPlatform().pay(activity, payInfo, sdkCallback);
警告
支付参数若为Int型,在没有值时请传入"0",不要传空字符串。
回调对象示例如下:
public class DHSDKCallback implements IDHSDKCallback {
@Override
public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
switch (requestCode) {
case DHSDKConst.REQ_PAY:
// 支付结果
if (resultCode == DHSDKConst.RET_OK) {
// 支付成功
} else if (resultCode == DHSDKConst.RET_FAIL) {
// 支付失败
}
break;
default:
// 其他结果
break;
}
}
}
注意
返回的文字信息(resultData)不要直接展示给用户。
支付结果通过DHSDKConst.OK
或DHSDKConst.FAIL
判断是否完成订单,但OK不代表支付成功,仅表示完整支付流程结束。接入方需在本地或服务器验证该笔支付的有效性。
PayInfo支付信息数据结构(切三方网页支付时使用):
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
uid | string | 是 | 用户唯一Id , 登录返回的accountid |
uname | string | 否 | 账号名 , 登录返回的account |
roleId | string | 是 | 角色Id (默认"0", 没有传"0") |
proId | string | 是 | 商品唯一Id |
proName | string | 是 | 商品名称 |
price | string | 是 | 商品价格 (必须大于0,必须以分为单位。国内是CNY(单位分),海外是USD(单位美分) |
proNum | string | 是 | 商品数量 (默认1) |
areaId | string | 是 | 游戏大区Id (默认1) |
currency | string | 是 | 货币类型,国内游戏传固定值CNY,海外游戏传固定值USD |
rate | string | 否 | 汇率 (默认1, 例:1RMB = 1游戏币) |
memo | string | 否 | 扩展字段,支付完成后服务器回调时由param参数原样返回; 请勿使用JSON字符串或JSON对象转换成的字符串。 |
remark | string | 否 | 废弃扩展字段,使用memo。 |
gameInfo | string | 否 | json字符串,海外谷歌包可选接入,方便开启网页支付,具体key参考下表 |
GameInfo游戏支付信息JSON结构:
key | 类型 | 说明 | 示例 |
---|---|---|---|
currencyType | string | 货币单位(国际货币单位标准) | CNY |
totalPay | string | 总充值金额(单位:分) | 6000 |
todayPay | string | 今天总充值金额(单位:分) | 600 |
totalPayCount | string | 总充值次数 | 10 |
todayPayCount | string | 今天充值笔数 | 1 |
roleMoney | string | 角色当前金钱数量 | 600 |
maxRechage | string | 角色最大充值金额(单位:分) | 10 |
totayMaxRechage | string | 角色今天最大充值金额(单位:分) | 600 |
roleLevel | string | 角色等级 | 10 |
VIPLevel | string | 角色VIP等级 | 10 |
CEValue | string | 战斗力值 | 100 |
EXPValue | string | 经验值 | 10 |
gameVersion | string | 游戏版本号 | 1.1 |
loginTime | string | 角色登录时间 | 2020-02-18 11:00 |
lastLoginTime | string | 角色上一次登录事件 | 2020-02-17 12:00 |
registerTime | string | 角色注册时间 | 2019-12-12 9:00 |
onlineTime | string | 角色在线时长(单位:秒) | 1000 |
gameStage | string | 角色游戏关卡数 | 10 |
roleMember | string | 角色会员状态 | monthCard,dayCard,yearCard |