应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)

访客 145 0
```html

一 简介

Google in app billing 是 Google Play 商店的应用内支付服务。它是一种应用内虚拟道具支付服务,支持应用内支付(inapp)和订阅(subs)两种模式。
在中国,如果您的应用需要集成此服务,请注意以下三点:

```
  1. in app billing不支持中国服务,不能绑定国内的信用卡(借记卡)
  2. in app的受管理商品中的本地价格不支持人民币
  3. 支付金额中会收取30%的手续费

当然,这些问题都是可以解决的。因为Google Play的应用内支付已成为国外用户主流消费模式之一。然而,许多应用仍需要在集成过程中面临一些挑战,例如:

国际版应用中的虚拟道具销售,以及付费应用中的关卡版本销售等等。

本文旨在介绍和解读in-app支付集成的version 3版本。

二 实现步骤

请注意,您需要先在Google Play开发者平台注册开发者账号并绑定应用。注册和绑定的详细步骤可在以下网址查看:http://play.google.com/apps/publish/

1 : 服务集成

请查阅官方网站,其中提供了详细示例供您参考,无需使用翻墙工具。

以下是对上述链接地址的简要步骤介绍:

请打开SDK Manager,在Extras文件夹中下载Google Play计费库。

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第1张图片-谷歌商店上架

接下来,您可以在本地的SDK的play_billing目录中找到以下文件列表:

Samples是官方提供的演示示例,只需修改包名即可直接集成到您自己的项目中。而IInAppBillingService.aidl则是我们需要在项目中集成的AIDL文件。

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第2张图片-谷歌商店上架

集成步骤非常简单。我直接修改了官网提供的示例代码,并将其打包成了一个jar包(点击此处下载)。当然,大家也可以根据自己的需求进行封装和使用。最终,在我的集成项目中,只需要包含这两个文件即可。当然,不要忘记在Manifest文件中添加相关权限。

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第3张图片-谷歌商店上架

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第4张图片-谷歌商店上架

2 : 支付流程

注意: 官网提供了最详细的支付流程说明,无需使用翻墙工具。

下面是基本序列图:

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第5张图片-谷歌商店上架

注: 这个序列图主要是针对非消耗性的管理商品 ,购买一次即为被拥有状态,无法再次购买.

通过观察上图,我们可以得出结论:App的后台不直接参与Google in app支付处理,而是由客户端和Google Play直接完成。其中,与客户端进行两次对接的目的是:

一: 为了保障安全性,我们采取了在App客户端中不直接明文写入Google Play的key的措施,而是通过我们自己的后台进行拉取。 二: 在完成购买后,订单信息会被上传至我们自己的服务器。这样既能够保存订单记录,又能够有效管理用户购买商品的相关信息。

非消耗性商品

根据提供的key值,初始化相应的工具类。

 private void initBilling() {        //需要传入的key值        String base64EncodedPublicKey = "你的google play key ";        mHelper = new IabHelper(this, base64EncodedPublicKey.trim());        //开启调试        mHelper.enableDebugLogging(true);        startUp();    }

key值在Google控制台的如下位置;

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第6张图片-谷歌商店上架

连接服务正在进行连接测试,以确保与Google Play的连接正常。

private void startUp() {
    if (null == mHelper) return;
    // Check connection to service
    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        @Override
        public void onIabSetupFinished(IabResult iabResult) {
            // Implementation for when IAB setup is finished
        }
    });
}  
List additionalSkuList = new ArrayList();
additionalSkuList.add(SKU_POPCOIN);
additionalSkuList.add(SKU_POPCOIN1);  
如果mHelper为null,则直接返回。否则,调用mHelper的flagEndAsync()方法,并使用mHelper的launchPurchaseFlow()方法来启动购买流程,传入参数包括当前对象(this),SKU_POPCOIN,BILL_REQUEST_CODE,mPurchaseFinishedListener以及WDApp.getInstance().getLoginUserId()。  
```
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == BILL_REQUEST_CODE) {
        if (mHelper == null) return;
        if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
            // Handle the result here
        }
    }
}
```  

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第7张图片-谷歌商店上架
通过如下方法消耗:

以下是改写后的文案:

主要有两个调用点:
1. 在购买成功后,调用消耗已拥有商品的状态。
2. 在查询商品时,判断是否存在已拥有商品的状态,如果存在,则进行状态消耗。  

mConsumeFinishedListener是一个回调接口,用于返回商品消耗是否成功。

   // Called when consumption is complete    IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {        public void onConsumeFinished(Purchase purchase, IabResult result) {            Log.d(TAG, "Consumption finished. Purchase: " + purchase + ", result: " + result);            // if we were disposed of in the meantime, quit.            if (mHelper == null) return;            if (result.isSuccess()) {             //消费成功                          Log.d(TAG, "Consumption successful. Provisioning.");             } else {                showToast("Error while consuming: " + result);            }            Log.d(TAG, "End consumption flow.");        }    };

测试

注: 务必参考的官方测试文档

准备

  1. 支持Google Play 商店的 Android 手机
  2. Google Play支持的非国内信用卡(借记卡)

主要步骤

1. 将一个已经集成了Google支付的应用程序上传到Google Play控制台的Beta或Alpha渠道上。 2. 创建一个受管理的商品列表,其中包含您要销售的商品,包括ID、价格和描述等信息。 3. App开发者平台账号需要绑定一张信用卡(用于收款)。 4. 添加测试账号,但不能使用App平台账号作为测试账号。 5. 通过发布测试版本后,会生成一个测试下载链接,请将此链接发送给需要进行测试的人员,并让他们点击以成为测试员。 6. 测试账号需要绑定一张非国内支持Play商店支付功能的信用卡。

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第8张图片-谷歌商店上架

应用内支付是Google的一项功能,它允许用户在应用程序中进行支付。(应用内支付是真的扣钱了吗)(应用内支付是怎么回事)-第9张图片-谷歌商店上架

注意:
1. 测试过程不会产生任何费用。
2. 上传的版本需要在原版本的基础上进行增加,只需上传一次测试版。一旦连接成功,即使存在错误也无需再次上传,直接使用修改后的版本进行测试即可。
3. 必须使用相同签名,并确保不同版本之间签名保持一致。
4. 包名必须与控制台中的包名完全匹配。

标签: 谷歌商店上架 功能 用户

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~