# 支付接口

# 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 货币兑换比例,110100
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.OKDHSDKConst.FAIL可以判断是否完成订单。
  • DHSDKConst.OK不代表支付成功,仅表示完整支付流程结束(某些渠道存在延迟或不准情况)。接入方需在本地或服务端验证该笔支付的有效性。
Last Updated: 2024/11/14 16:00:26