跳转至

应用内购买

开始之前

概述

本指南将说明如何使用 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);
    }
- orderInfo 参数:由 SohaGame 提供的订单信息(例如 com.game.appdemo.tuixu1 等)。
- 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 也是不必要的。