应用内购买¶
开始之前¶
- 您需要为您的项目 集成 SohaGame SDK。
- 您需要为您的项目 集成事件。
概述¶
本指南将说明如何使用 SohaGame SDK 的可用 API 集成应用内购买。
有两种方式进行应用内购买:
1. 使用 SDK 的支付中心接口¶
SDK 提供了一个支付中心接口,用于显示应用内购买套餐的列表,您只需要打开 SDK 的支付中心,供用户进行购买。
调用方法 pay
private void onPayment(){
SohaSDK.getInstance().pay(this, new PaymentCallback() {
@Override
public void onSuccess(SohaPaymentResult sohaPaymentResult) {
Log.d("mytag", "支付成功 : 订单号 = "+sohaPaymentResult.getOrderId());
//在这里编写代码
}
@Override
public void onError() {
}
@Override
public void onCancel() {
}
});
}
支付成功后将调用 onSuccess 函数
2. 使用您的接口¶
如果您不想使用 SDK 的内置接口。例如:您希望在用户在游戏中点击项目或礼包时进行购买。
在这种情况下,您需要按照以下步骤进行:
第 1 步:获取应用内购买产品列表¶
调用方法 getListProduct
private void getListProduct() {
SohaSDK.getInstance().getListProduct(new PaymentNewCallBack() {
@Override
public void onSuccess(ListIap listIap) {
paymentAdapter.setData(listIap.getData());
List<IapItem> list = listIap.getData();
}
@Override
public void onFailure() {
}
});
}
Tip
在用户选择角色并保存此数据后,调用 getListProduct
方法。
第 2 步:进行应用内购买¶
当应用内购买完成后,SDK 将通过以下委托回调成功或失败事件:
// 添加参数:自定义扩展
private void pay(String orderInfo, String ext) {
SohaSDK.getInstance().payProduct(getActivity(), orderInfo, new OnPayListener() {
@Override
public void onSuccessPaymentCoin(String transID,String message) {
}
@Override
public void onMaintenancePayment() {
}
@Override
public void onFail() {
}
}, ext);
}
- ext 参数 (可选):为字符串类型。您可以传递类似于:支付标识符、套餐名称等的 JSON 参数,由游戏服务器提供。在成功支付后,SohaGame 的服务器将在游戏服务器的回调链接中将 ext 返回(游戏服务器回调链接文档在此处查看 here)。
整合 API 后,无法立即进行支付测试;我们需要第一个版本构建进行内部测试。
付款回调¶
在用户成功进行应用内购买后,SohaGame 的服务器将通过付款回调向游戏服务器提供交易信息。根据这些信息,游戏执行向用户添加货币或物品的操作。
可以在这里找到本节的 API 文档。
请查看下面的流程图以更好地理解应用内购买的流程:
1: 客户端游戏调用文档中第 12 节的 API 来请求处理交易。
2-3: SDK 向 SohaGame 服务器平台发送请求,以处理交易并与商店进行支付。
4: SohaGame 服务器平台通过支付回调链接连接到游戏服务器,以处理交易并将资金或游戏内物品存入账户,然后向玩家显示结果。同时,SohaGame 服务器平台还会接收信息并将其发送到 SDK。 如果客户端游戏在第 (1) 步中调用 API 时传递了 'ext' 参数,则服务器平台将在回调链接中返回交易信息和 'ext'。请参考此处的文档
5: SDK 接收并处理结果:
-
付款失败:SDK 将自动处理并在游戏中通知用户。
-
付款成功:SDK 将通过上述文档中的委托 - 回调将订单 ID 返回给客户端游戏。如果客户端游戏已经从游戏服务器接收到了结果(最准确的结果),则无需使用从此 SDK 返回的信息。这在必要时使用。
实际上,交易过程中的大多数步骤都是由 SDK 和服务器端隐式执行的。游戏客户端只需要关注上述标记的步骤 1、4 和 5。实际上,步骤 5 也是不必要的。