跳到主要内容

支付接口

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", "kra***@dianhun.cn");
// 角色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.OKDHSDKConst.FAIL判断是否完成订单,但OK不代表支付成功,仅表示完整支付流程结束。接入方需在本地或服务器验证该笔支付的有效性。

PayInfo支付信息数据结构(切三方网页支付时使用):

参数类型是否必须说明
uidstring用户唯一Id , 登录返回的accountid
unamestring账号名 , 登录返回的account
roleIdstring角色Id (默认"0", 没有传"0")
proIdstring商品唯一Id
proNamestring商品名称
pricestring商品价格 (必须大于0,必须以分为单位。国内是CNY(单位分),海外是USD(单位美分)
proNumstring商品数量 (默认1)
areaIdstring游戏大区Id (默认1)
currencystring货币类型,国内游戏传固定值CNY,海外游戏传固定值USD
ratestring汇率 (默认1, 例:1RMB = 1游戏币)
memostring

扩展字段,支付完成后服务器回调时由param参数原样返回;

请勿使用JSON字符串或JSON对象转换成的字符串。

remarkstring废弃扩展字段,使用memo。
gameInfostringjson字符串,海外谷歌包可选接入,方便开启网页支付,具体key参考下表

GameInfo游戏支付信息JSON结构:

key类型说明示例
currencyTypestring货币单位(国际货币单位标准)CNY
totalPaystring总充值金额(单位:分)6000
todayPaystring今天总充值金额(单位:分)600
totalPayCountstring总充值次数10
todayPayCountstring今天充值笔数1
roleMoneystring角色当前金钱数量600
maxRechagestring角色最大充值金额(单位:分)10
totayMaxRechagestring角色今天最大充值金额(单位:分)600
roleLevelstring角色等级10
VIPLevelstring角色VIP等级10
CEValuestring战斗力值100
EXPValuestring经验值10
gameVersionstring游戏版本号1.1
loginTimestring角色登录时间2020-02-18 11:00
lastLoginTimestring角色上一次登录事件2020-02-17 12:00
registerTimestring角色注册时间2019-12-12 9:00
onlineTimestring角色在线时长(单位:秒)1000
gameStagestring角色游戏关卡数10
roleMemberstring角色会员状态monthCard,dayCard,yearCard