支付
支持微信、支付宝;微信支付需安装微信 APP。

一、后端准备
先完成后端内购支付接入:价格校验、订单创建通知、支付成功通知。推荐由游戏后端生成业务订单 cpOrderId,客户端携带此订单号调起支付。
二、调起支付
SDK 初始化并成功回写登录态后,使用当前游戏 Activity 调用:
| 参数 | 类型 | 说明 |
|---|---|---|
| context | Context | 传当前游戏 Activity |
| productId | String | 平台提供的 product_id,也称 activity_id |
| amount | int | 商品数量,例如 1 |
| money | float | 展示金额,单位元;实际价格以服务端校验为准 |
| ext | String | JSON 字符串,携带 cpOrderId 等业务信息,长度需满足后端 ext2 限制 |
| paySignExt | GamePayInfo.PaySignExt | 普通接入传 null;当前 H5 支付路径未使用此签名对象 |
| payType | Integer... | 可省略;当前版本未生效,不用于限制支付渠道 |
ext 字段
| 字段 | 类型 | 填写要求 | 说明 |
|---|---|---|---|
| cpOrderId | String | 推荐传入 | 游戏后端生成的业务订单号,用于校验价格和关联订单 |
| productName | String | 推荐传入 | 商品名称 |
| serverId | String | 有区服时 | 游戏区服 ID |
| roleId | String | 按业务需要 | 游戏角色 ID,自定义字段 |
| coopid | String | 后端约定需要时 | 平台游戏方 ID,SDK 已从初始化配置附带 |
| gameId | String | 后端约定需要时 | 平台游戏 ID,SDK 已从初始化配置附带 |
| gameName | String | 后端约定需要时 | 平台游戏名称,SDK 已从初始化配置附带 |
| 其他字段 | String / number | 按业务需要 | 自定义信息,与后端 ext2 处理约定一致 |
调用示例
以下方法放在游戏 Activity 中:
import org.json.JSONException;
import org.json.JSONObject;
import com.xunlei.niux.mobilegame.sdk.constants.UIResult;
import com.xunlei.niux.mobilegame.sdk.platform.NiuxMobileGame;
private void payGameOrder(String cpOrderId) {
if (!NiuxMobileGame.getInstance().isLogin()) {
return; // 提示先登录。
}
try {
JSONObject ext = new JSONObject();
ext.put("cpOrderId", cpOrderId); // 游戏后端生成的业务订单号
ext.put("productName", "充值商品");
// 按后端约定添加 serverId、roleId 等字段。
int result = NiuxMobileGame.getInstance().chargePay(
this, "平台提供的 product_id", 1, 10.00f, ext.toString(), null);
if (result != UIResult.Success) {
// 检查 SDK 初始化状态。
}
} catch (JSONException e) {
// 提示订单参数异常。
}
}
后端通知中的 ext2 格式见后端文档。sign_key 仅用于后端签名/验签,不要放进 ext。
三、确认到账
支付操作结果通过初始化时的监听器返回:
@Override
public void onChargeFinish(int result, float money, String productId, String orderId) {
// 查询游戏后端当前业务订单的到账状态,更新界面。
}
| result | 说明 |
|---|---|
| 0 | 成功 |
| -1 | 取消 |
| 1 | 失败 |
| -101 | 未登录 |
| 回调参数 | 类型 | 说明 |
|---|---|---|
| result | int | 支付操作结果,见上表 |
| money | float | 调用时传入的展示金额,单位元 |
| productId | String | 调用时传入的商品 ID |
| orderId | String | 平台订单号,可能为空 |
**发货以服务端支付成功通知为准,不能凭客户端回调发货。**后端应验签并保证幂等;客户端查询未到账时显示处理中。
chargePay 同步返回 200 表示 SDK 调用返回成功,500 表示未初始化,与上表支付结果不同。未登录时可能返回 200,同时回调 -101。