Google Play 支付(In-app Billing)接入

本文详细介绍了如何接入Google Play的In-app Billing服务,包括准备工作、商品创建、客户端实现、测试注意事项等步骤。首先,需确保应用符合In-app Billing的使用条件,如仅售卖数字内容。接着,要在Google Play Developer Console创建应用内购买的商品,并配置好应用的权限和初始化连接。客户端实现中,涉及商品查询、购买流程以及商品消耗的处理。在测试时,要检查APK是否已签名、测试账号是否正确设置等。最后,文章还提供了遇到问题时的排查建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【参考文献】


https://blog.youkuaiyun.com/liuweiballack/article/details/50331909

https://blog.youkuaiyun.com/change_from_now/article/details/36668017

一、概述

使用应用内结算(In-app Billing)时,我们的应用通过相应的API来访问In-app Billing服务。应用不直接与Google Play服务器通信,而是通过进程间通信(IPC)向Google Play发送结算请求并接收Google Play返回的响应。

In-app Billing在使用之前需要注意以下几点:

  • 只能用来销售数字内容,不能销售实体商品
  • 应用一旦被购买,无法进行退款服务 Google
  • Play不提供内容交付,开发者需要自行交付在应用内购买的数字内容
  • 一个应用不能购买另一个应用发布的商品

目前使用的In-app Billing是第3版,需要运行在Android2.2或更高版本,而且要求设备安装了最新版本的Google Play商店。第三版支持两种商品:托管的应用内商品(Managed product)和订阅(Subscription)。

托管的应用商品:由Google Play跟踪和管理其所有权信息的商品,托管的商品在被购买后,必须先向Google Play发送消耗请求进行消耗,然后才能供用户再次购买。 
订阅:允许开发者通过按月或按年结算的方式在应用内向用户销售内容、服务或功能,订阅无法消耗。

二、Google Play购买流程

购买开始时,应用需要针对相应的应用内商品发送结算请求。然后,Google Play 会处理此次交易的所有结帐详情,包括请求和验证付款方式以及处理财务交易。 
当结帐流程完成后,Google Play 会向应用发送购买详情,例如订单号、订单日期和时间以及所付价格。应用不需要处理任何财务交易,这些事宜完全Google Play负责。

具体流程如下所示: 


  1. 应用向Google Play发送isBillingSupported 请求,确定当前使用的应用内结算 API 目标版本是否受支持;
  2. 启动或用户登录时,向Google Play进行查询,确定用户拥有哪些商品,发送getPurchases 请求;
  3. 通知用户商品是否可供购买,发送getSkuDetails 请求;
  4. 提示用户购买,发送getBuyIntent 请求。

三、消耗托管的应用内商品

应用内商品一经售出,就会被视为“被拥有”。处于“被拥有”状态的应用内商品无法再通过 Google Play 购买。必须对“被拥有”的应用内商品发送消耗请求,然后 Google Play 才能再次将其设成可购买状态。消耗应用内商品会将商品切换回“未被拥有”状态并删除之前的购买数据。 
通过发送consumePurchase 提出消耗请求。

接入之前的准备

一、在 Google Play Developer Console 创建应用

  1. 注册一个开发者账号,按提示绑定信用卡并支付25美金;
  2. 创建一个新的app,填写应用名称; 
    这里写图片描述
  3. 点击上图中的Prepare Store Listing,按照提示填写app的基本信息,信息一定要填写完整,否则无法正常发布应用;
  4. 在Services & APIs中,找到license key记录下来。

二、添加In-app Billing库文件(以Android Studio为例)

  1. 在yourSDKpath/extras/google/market_billing/中找到文件IInAppBillingService.aidl,在src/main中创建文件夹aidl,然后创建package‘com.android.vending.billing’ 如图所示 
    这里写图片描述
  2. 点击执行rebuild,在下图所示位置看到IInAppBillingService.java文件,即为导入成功 
    这里写图片描述
  3. 将market_billing/samples/TrivialDrive 中util包整个复制到项目中。

三、声明权限

在AndroidManifest.xml中声明权限:

<uses-permission android:name="com.android.vending.BILLING" />

四、初始化与Google Play的连接

1、初始化IabHelper

IabHelper mHelper;

@Override
public void onCreate(Bundle savedInstanceState) {
    // ...
    String base64EncodedPublicKey;

    // compute your public key and store it in base64EncodedPublicKey
    mHelper = new IabHelper(this, base64EncodedPublicKey);
}

2、调用startSetup方法

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
@Override
public void onIabSetupFinished(IabResult result) {
    if (!result.isSuccess()) {
        Log.e(TAG, "Problem setting up In-app Billing: " + result);
    }

    if (mHelper == null) {
        return;
    }
}
});

3、在Activity的onDestory()中解绑

@Override
protected void onDestroy() {
    super.onDestroy();
    if (mHelper != null) {
        mHelper.dispose();
    }
    mHelper = null;
}

创建应用内购买的商品

一、上传APK并发布

进入APK面板,上传一个带有签名的APK文件,文件可以上传到PRODUCTION、BETA TESTING、ALPHA TESTING中任意一个中,三者区别见附录1。下面的流程以BETA测试为例。

  1. 进入BETA TESTING页面,上传带有签名的APK文件;
  2. 进入Content Rating页面,填写内容分级调查问卷,填完进行评估,根据结果接受评估或者重新填写;
  3. 进入Pricing&Distribution页面,选择应用是付费还是免费,之后选择产品要发布的国家和地区;
  4. 确保如图所示四个内容都显示为绿色对勾,即可发布应用; 
    这里写图片描述
  5. 点击Publish app发布,如果按钮显示为灰色,可以点击按钮上方的Why can’t I publish?查看还需要添加的内容,应用发布之后需要等候几个小时。在任一页面可以查看App的发布状态,如左图所示为正在发布,右图显示已经发布成功。 
    这里写图片描述 这里写图片描述

二、选择测试方法(BETA测试为例)

待APP发布完成之后,选择一个测试方法,测试方法有三种(详见附录),此处以封闭式Beta测试为例。

  1. 登录Google Play开发者控制台
  2. 选择相应应用,点击左侧菜单中的APK
  3. 选择Beta测试,进入“封闭式测试“
  4. 创建列表或选择已有列表
  5. 将Opt-in URL中链接发送给测试人员
  6. 测试人员需要点击测试连接并选择加入测试

注意:测试时可以选择测试账号是否需要真实支付。比如应用在进行大范围测试时,需要用户可以进行真实的付款操作,而内部测试人员可以进行支付测试,但无需真实付款。可以将内部测试的账号配置到Google Play后台。 
配置如下:

这里写图片描述

将账号填入下图

这里写图片描述

三、创建商品

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值