# 支付接口(必接)

# 1、接口说明

此接口为 SDK 统一支付接口。国内和海外支付均使用此接口,具体使用方式则根据meta-data配置(由开放平台出包,接入者无需关心此配置)。

DANGER

游戏在调用支付接口前,必须确保已调用上传角色接口,否则拉起支付时出现异常。

# 2、支付接口

# 2.1、拉起支付(统一必接)统一必接

警告

  • 单价参数itemPrice必须以分为单位。国内为 CNY(单位分),海外为 USD(单位美分)!
  • 谷歌订阅的商品道具itemId必须以.googlesubs为后缀(例如 com.dh.test.googlesubs),否则无法正常订阅!

调用代码示例如下:

import com.dh.DHSDKHelper;

import org.json.JSONObject;

String payInfo = "{}";
try {
    payInfo = new JSONObject()
        .put("accountId", 1696674719)        // 账号ID
        .put("accountName", "131****0130")   // 账号名称
        .put("areaId", 1)                    // 游戏大区ID
        .put("roleId", "100002")             // 角色ID
        .put("itemId", "com.dh.test")        // 商品ID
        .put("itemName", "60钻石")            // 商品名称
        .put("itemNum", 1)                   // 商品数量
        .put("itemDesc", "限量极品钻石")       // 商品描述
        .put("itemPrice", 600)               // 商品单价(分)
        .put("rate", 100)                    // 货币兑换比例
        .put("memo", "")                     // 透传参数
        .put("remark", "")                   // 备用透传参数
        .put("currency", "CNY")              // 货币类型
        .toString();
} catch (Throwable e) {
    e.printStackTrace();
}

/**
 * @param activity    上下文
 * @param sdkCallback 回调对象
 */
DHSDKHelper.getInstance().getPlatform().pay(activity, payInfo, gameUnifiedCallback);

支付信息,主要参数说明如下:

参数 类型 必传字段 统一字段 说明
accountId int 是 是 账号 ID
accountName String 否 是 账号名称
areaId int 是 是 大区 ID
roleId String 是 是 角色 ID,无值则传0
itemId String 是 是 商品 ID
itemName String 是 是 商品名称
itemNum int 是 是 商品数量,一般固定为1
itemDesc String 否 是 商品描述
itemPrice int 是 是 商品单价(分),请注意必须以分为单位
rate int 否 是 货币兑换比例,1或10或100
memo String 否 是 透传参数,支付完成后,服务器回调时将原样返回
remark String 否 是 备用透传参数
currency String 是 是 货币类型,国内为 CNY(单位分),海外为 USD(单位美分)
gameInfo String 否 否 游戏支付信息,JSON 字符串,海外谷歌包可选接入,方便开启网页支付

回调对象示例如下:

import com.dh.DHSDKConst;
import com.dh.callback.IDHSDKCallback;

public class GameUnifiedCallback 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;
        }
    }
}

支付结果,回调数据说明如下:

回调数据为文本提示或其他结构,接入方无需解析,也不要直接展示给用户

DANGER

  • 拉起支付后,回调结果通过DHSDKConst.OK或DHSDKConst.FAIL可以判断是否完成订单。
  • DHSDKConst.OK不代表支付成功,仅表示完整支付流程结束(某些渠道存在延迟或不准情况)。接入方需在本地或服务端验证该笔支付的有效性。
Last Updated: 2026/7/3 17:51:10