Android集成Google支付,以及遇到的坑、坑
来源:互联网 发布:pkpm钢结构设计软件 编辑:程序博客网 时间:2024/06/04 19:07
Google商店的应用被下架,应用内购买必须走Google支付,还要扣去百分之三十的手续费,而且有些国家还会收一定的销售税最高达27%,其实Google支付只是自己集成了Paypal支付和银行卡支付,然后Google收手续费。用户使用Google正常支付退款时间是48小时,退款只会在商家账号通知。
我们来谈一谈集成Google支付吧:
Google上给出了Demo:https://github.com/cafebazaar/TrivialDrive
里面有购买订阅和受管理产品的,大家可以下载运行一下试一试。我刚开始是按照Google开发文档去集成的,可能是我水平有限,并没有成功。最后是按Demo去搞吧,方便。Google给出的API:https://developer.android.com/google/play/billing/billing_integrate.html
要在您的应用中实现应用内购买结算,您需要执行以下操作:
- 将应用内购买结算库添加到您的项目中。
- 更新您的
AndroidManifest.xml
文件。 - 创建
ServiceConnection
并将其绑定到IInAppBillingService
。 - 从您的应用发送应用内购买结算请求至
IInAppBillingService
。 - 处理来自 Google Play 的应用内购买结算请求响应。
将 AIDL 文件添加到您的项目中
IInAppBillingService.aidl
是一种定义应用内购买结算版本 3 服务接口的 Android 接口定义语言 (AIDL) 文件。 您可以使用此接口通过调用 IPC 方法调用来发送结算请求。
要获取 AIDL 文件,请执行以下操作:
- 打开 Android SDK 管理器。
- 在 SDK 管理器中,展开
Extras
部分。 - 选择 Google Play Billing Library。
- 点击 Install packages 完成下载。
IInAppBillingService.aidl
文件将安装到 <sdk>/extras/google/play_billing/
。
要将 AIDL 添加到您的项目,请执行以下操作:
- 首先,下载 Google Play Billing Library 到您的 Android 项目:
- 选择 Tools > Android > SDK Manager。
- 在 Appearance & Behavior > System Settings > Android SDK 下面,选择 SDK Tools 标签以选择并下载 Google Play Billing Library。
- 接下来,复制
IInAppBillingService.aidl
文件到您的项目。- 如果您使用的是 Android Studio,请执行以下操作:
- 导航至 Project 工具窗口中的
src/main
。 - 选择 File > New > Directory,然后在 New Directory 窗口中输入
aidl
,再选择 OK。 - 选择 File > New > Package,然后在 New Package 窗口中输入
com.android.vending.billing
,再选择 OK。 - 使用您的操作系统文件资源管理器,导航至
<sdk>/extras/google/play_billing/
,复制IInAppBillingService.aidl
文件,然后将其粘贴到项目中的com.android.vending.billing
软件包。
- 导航至 Project 工具窗口中的
- 如果您在非 Android Studio 环境中开发,请执行以下操作:创建目录
/src/com/android/vending/billing
,并将IInAppBillingService.aidl
文件复制到此目录。 将 AIDL 文件添加到您的项目中并使用 Gradle 工具构建项目,从而生成IInAppBillingService.java
文件。
- 如果您使用的是 Android Studio,请执行以下操作:
- 开发您的应用。您会在项目的
/gen
目录中看到名为IInAppBillingService.java
的生成文件。
更新您的应用清单
应用内购买结算依赖于 Google Play 应用,后者将处理应用与 Google Play 服务器之间的所有通信。 要使用 Google Play 应用,您的应用必须请求适当的权限。 您可以通过将 com.android.vending.BILLING
权限添加到 AndroidManifest.xml 文件执行此操作。 如果您的应用未声明应用内购买结算权限,但试图发送结算请求,Google Play 将拒绝请求并使用错误响应。
要为您的应用授予必要的权限,请在 AndroidManifest.xml
文件中添加以下代码行:
<uses-permission android:name="com.android.vending.BILLING" />这个权限是一定得加的。
按照例子,先把所需Google aidl放好,位置一定不能错。
IInAppBillingService.aidl
还有所需的Util,都拷贝到项目中:
然后Clean一下,不让IInAppBillingService不能用。
下面开始代码集成:
先把所需要的常量定义一下:
在onCreate中初始化:
1:购买完成的回调事件监听:
购买完成事件中有产品消耗事件监听,也就是说,购买完成时候,一定要去消耗一下产品,不然不能进行下次购买。Google给出的声明:应用内商品一经购买,就会被视为“被拥有”且无法从 Google Play 购买。 您必须对应用内商品发送消耗请求,然后 Google Play 才能允许再次购买。可以消耗托管的应用内商品,但不能消耗订阅。下面是消耗监听:
下面是几个用到的辅助类:在onActivityResult中添加:完成购买之后一定要解除应用内购买服务,在onDestroy中添加注:国内部分手机由于不能启动Google play service ,所以在解绑的时候可能会出错,(调用mHelper.dispose();方法时报错),解决办法:在IabHelp.java中的300行左右把:
mContext.bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
修改为:
新建一个绑定的判断:
public boolean isBound;isBound = mContext.bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
然后在dispose();方法中修改:
public void dispose() throws IabAsyncInProgressException { synchronized (mAsyncInProgressLock) { if (mAsyncInProgress) { throw new IabAsyncInProgressException("Can't dispose because an async operation " + "(" + mAsyncOperation + ") is in progress."); } } logDebug("Disposing."); mSetupDone = false; if (mServiceConn != null) { logDebug("Unbinding from service."); if (mContext != null && isBound){ mContext.unbindService(mServiceConn); isBound = false; } } mDisposed = true; mContext = null; mServiceConn = null; mService = null; mPurchaseListener = null; }
代码集成到此结束,下面是测试:
首先你得有一个能安装Google play的手机,还要有个Gmail邮箱(不能和Google开发者的Gmail邮箱一样),测试支付不产生订单id,要是需要查看订单id就得真实支付(需要支持双币的信用卡或者paypal账号)。测试用的app一定要跟上传到Google的测试版的包名、版本code、name、签名一致,否则无法进行支付测试。
在Google开发后台:设置-->信息-->设置测试许可中添加你的测试Gmail邮箱(重要,不然会真实扣费)。在应用中的APK选项中,上传一版Bata版,发布,在测试人员中设置你的测试Gmail,和测试许可中的一致
- Android集成Google支付,以及遇到的坑、坑
- Android集成Google支付,以及遇到的坑、坑
- Android-集成微信支付以及遇到的问题浅谈
- android集成最新支付宝遇到的坑
- Android集成微信支付遇到的坑
- 集成支付宝SDK遇到的坑
- ios 集成支付宝遇到的坑
- 支付宝支付集成以及遇到的问题ios
- Google Service 集成所遇到的坑
- spring集成logback以及遇到的坑
- 最新支付宝集成遇到的一些坑。
- iOS集成支付宝SDK遇到的坑
- Android studio一分钟集成极光推送以及集成时遇到的混淆神坑
- Android微信支付遇到的坑
- Android微信支付遇到的坑
- iOS 开发 新版微信支付的集成和支付和遇到的坑--2017.1.4
- iOS 开发 新版支付宝支付集成开发详解和遇到的坑 2017-01-04
- Android集成微信刷卡支付遇到的坑坑洼洼
- Android基本组件介绍和生命周期
- 堆排序
- 基于HOG特征的Adaboost行人检测
- 关于校园网的理解,及几种上网的方式
- MyBatis传入参数与parameterType
- Android集成Google支付,以及遇到的坑、坑
- 关于NTP的几个问题
- jQuery选择器
- Status Code:415 Unsupported Media Type
- SQL优化:从设计表结构开始(层次型表结构设计方法)
- MyBatis(2):config.xml文件
- MySQL数据库优化的八种方式(经典必看)
- 新建工程,windows的frame大小不对
- 初学webpack(第二篇)