开发指南
Combo SDK 支持世游游戏商城,以及各大主流的第三方应用商店的内购。
游戏可以针对不同的发行版本合理的选用应用商店。运营同学可以在 世游发行平台 > 游戏产品 > 游戏设置 > 发行版本 中启用游戏选用的应用商店。
集成前准备
流程图
无论世游游戏商城,还是第三方应用商店,内购与支付的流程统一如下:
- 1.2 必须由游戏服务端向世游服务端发起创建订单请求。
- 1.3 世游服务端返回的 订单 Token 是一个包含订单信息的 JWT,Token 的有效期为 2 小时。
- 2.3 支付结果异步回调 与 3.1 支付结果异步通知 的先后顺序并不固定,即:有可能 2.3 先发生,也有可能 3.1 先发生。
- 2.3 的客户端回调并不代表玩家准确、正确的完成了本次购买。收到该回调时可以给出玩家一些友好提示、引导,例如 "购买成功,请耐心等待","购买失败,请联系客服"。
- 游戏侧发放道具,必须以 3.1 的服务端通知为依据。
- 游戏服务端的处理细节,请阅读 服务端接入 文档。
发起购买
购买数量
警告
- 发起购买前,需要调用
IsFeatureAvailable(Feature.PRODUCT_QUANTITY)
方法,判断该渠道是否支持选择商品数量。 - 如果不支持,游戏客户端则需要对 商品多数量购买 进行限制,即商品数量始终为 1。
Android 平台上的华为和荣耀联运渠道的支付系统,不支持 选择商品数量。即玩家在界面上选择商品数量为多个,实际付款时仍然是按照商品单价进行支付。
支持平台
方法签名
信息
Purchase()
方法必须在游戏的服务端创建订单成功并获得订单 Token 后才能调用。- 如果购买失败,建议对相应的错误进行处理,例如给出错误提示。
public static void Purchase(PurchaseOptions opts, Action<Result<PurchaseResult>> callback);
代码示例
Show Code
void Purchase()
{
if(ComboSDK.IsFeatureAvailable(Feature.PRODUCT_QUANTITY))
{
// 支持 选择商品数量
OnPurchase(productId, quantity);
}
else
{
// 不支持 选择商品数量, 即商品数量为 1
OnPurchase(productId, 1);
}
}
void OnPurchase(string productId, int quantity)
{
// 注意:须向游戏服务端传入 商品数量
GameClient.CreateOrder(
productId,
quantity,
orderToken =>
{
var opts = new PurchaseOptions { orderToken = orderToken };
ComboSDK.Purchase(opts, (Result<PurchaseResult> result) =>
{
if (result.IsSuccess)
{
var purchaseResult = result.Data;
var orderId = purchaseResult.orderId
}
else
{
var error = result.Error;
Debug.LogError("支付失败:" + error.DetailMessage);
}
});
},
() =>{}
);
}
方法参数
Parameters | Required | Type | Description |
---|---|---|---|
opts | True | PurchaseOptions | 购买接口传入的参数集 |
callback | True | Action<Result<PurchaseResult>> | 购买商品后的回调方法,用于接收 Purchase 的结果 |
PurchaseOptions
Parameters | Required | Type | Description |
---|---|---|---|
orderToken | True | string | 世游服务端创建的订单 Token |
PurchaseResult
Properties | Supported Platforms | Type | Description |
---|---|---|---|
orderId | string | 世游服务端生成的订单号 |
Error
Error | Supported Platforms | Description |
---|---|---|
UNKNOWN_ERROR | 未知错误 | |
USER_CANCELLED | 用户主动取消操作 | |
NETWORK_ERROR | 网络错误 | |
SERVER_ERROR | 服务端错误 | |
STORE_ERROR | 应用商店返回的错误 | |
THIRD_PARTY_ERROR | 第三方 SDK 错误 |