android平台下, 谷歌应用收费提供了最新的google-billing接口,该接口用来发送请求应用收费和管理应用收费事物。下面简单介绍应用收费的实现过程。
实现android应用的支付功能需要做到以下几点:
1.查看google应用支付功能提供的最新开发文档,了解应用内支付功能的机制,具体参考http://developer.android.com/guide/google/play/billing/index.html
2.升级android sdk开发环境,安装google-billing的api,添加IMarketBillingService,将aild文件添加到项目中(参看附加图片,aidl路径。须确认最新公布google billing的aidl文件已经为V2版本)。
用于实现五类的计费请求:
1)检查账单的支付请求(request);
2)请求进行购买的请求(purchast);
3)获取购买信息的请求(receiver);
4)确认通知的请求(confirm);
5)恢复交易的请求(restore)。
3.更新AndroidManifest.xml文件。添加权限设置以及调用服务的设置。
<uses-permission android:name="com.android.vending.BILLING" />
<service android:name=".billing.BillingService" />
<application
<receiver android:name=".billing.BillingReceiver">
<intent-filter>
<action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
<action android:name="com.android.vending.billing.RESPONSE_CODE" />
<action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
</intent-filter>
</receiver>
</application>
4.创建服务用于绑定到IMarketBillingService,android应用程序可以通过该service进行发送用户的购买请求和接收来自google play store的计费响应账单。
BillingService mService = IMarketBillingService.Stub.asInterface(service);
5.创建BillingReceiver用于接受来自IPC发送的广播信息。
public class BillingReceiver extends BroadcastReceiver {
private static final String TAG = "BillingReceiver";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "Received action: " + action);
if (Const.ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
String signedData = intent.getStringExtra(Const.INAPP_SIGNED_DATA);
String signature = intent.getStringExtra(Const.INAPP_SIGNATURE);
purchaseStateChanged(context, signedData, signature);
} else if (Const.ACTION_NOTIFY.equals(action)) {
String notifyId = intent.getStringExtra(Const.NOTIFICATION_ID);
notify(context, notifyId);
} else if (Const.ACTION_RESPONSE_CODE.equals(action)) {
long requestId = intent.getLongExtra(Const.INAPP_REQUEST_ID, -1);
int responseCodeIndex = intent.getIntExtra(Const.INAPP_RESPONSE_CODE, Const.ResponseCode.RESULT_ERROR.ordinal());
checkResponseCode(context, requestId, responseCodeIndex);
} else {
Log.e(TAG, "unexpected action: " + action);
}
}
private void purchaseStateChanged(Context context, String signedData, String signature) {
Log.i(TAG, "purchaseStateChanged got signedData: " + signedData);
Log.i(TAG, "purchaseStateChanged got signature: " + signature);
BillingHelper.verifyPurchase(signedData, signature);
}
private void notify(Context context, String notifyId) {
Log.i(TAG, "notify got id: " + notifyId);
String[] notifyIds = {notifyId};
BillingHelper.getPurchaseInformation(notifyIds);
}
private void checkResponseCode(Context context, long requestId, int responseCodeIndex) {
Log.i(TAG, "checkResponseCode got requestId: " + requestId);
Log.i(TAG, "checkResponseCode got responseCode: " + Const.ResponseCode.valueOf(responseCodeIndex));
}
}
6.创建一个安全处理的组件BillingSecurity,用于包含应用的支付功能以及账户的安全问题,将google play 上的发布应用的public key 作为验证的密钥,进行交易的安全验证。
7.修改应用代码,实现各接口,用于支持应用的收费功能。
注:
1)以上仅是简单介绍in-app-billing的实现过程,在操作之前,需要了解完成的支付机制,明确各接口需要的参数以及应用内产品设置。根据需求,开发者需要明确,应用是属于购买还是订阅功能,在google play上传时应用,可以参考: http://developer.android.com/guide/google/play/billing/billing_admin.html
2)在应用功能完成上架之前,必须对支付功能进行测试。用于测试的方式有两种:
一种利用静态响应对应用的内够功能进行测试;
另一种是使用开发者的商品ID对应用的内够功能进行测试。
具体可以参考:http://developer.android.com/guide/google/play/billing/billing_testing.html。
3)测试中会遇到一系列的问题,国内用户会有诸多障碍,测试发布流程:
(1)将应用作为测试apk上传到google play;
(2)设置应用商品的购买属性,产品IP等;
(3)在实体android 设备上安装应用;
(4)将google play store上某一账户,设置为设备的主账户;
(5)确保设备上的play store或apps 是最新版本。
- 大小: 5.5 KB
分享到:
相关推荐
标题中的“In-app payment”指的是在应用程序内购买或支付功能,是移动应用开发者常见的盈利模式之一。这种模式允许用户在不离开应用的情况下购买虚拟商品、服务或者解锁额外功能,为开发者创造了收入来源。 **1. ...
在移动应用开发领域,Google Play In-app Billing 是一个至关重要的功能,它允许开发者在应用内销售数字商品和服务,如额外的游戏关卡、订阅服务或者高级功能解锁。本文将深入探讨这个主题,重点关注如何在 Android ...
Android In-App Billing v3 Library 是一个专门为Android开发者设计的工具,它简化了在应用程序内实现付费功能的过程。这个库是基于Google的Android v3 API,使得开发者能够更高效、更安全地处理应用内的购买操作,...
在Android平台上,应用内购买(In-App Purchase,简称IAP)是一种常见的商业模式,允许开发者在应用程序中提供额外的功能、内容或服务以获取收入。本文将深入探讨如何在Android应用中实现IAP功能,主要关注Java语言...
本资源“Android高级应用源码-android应用内购买 google app veding billing.zip”提供了关于如何集成并实现Google Play应用内购买功能的详细示例。以下是对这个主题的深入探讨: 一、Google Play应用内购买介绍 ...
在Android平台上,Google Play是应用分发的主要渠道,同时它也提供了一套完善的付费机制——Google Play支付(Google Play In-app Billing),允许开发者在应用程序内销售数字产品和服务,如游戏内的虚拟商品、订阅...
在Android应用内实现Google Pay通常涉及到使用Google的In-app Billing服务。这是一个API,允许开发者在应用程序中销售数字内容和服务,包括但不限于应用内购买、订阅和一次性付费项目。Google Pay可以作为这些交易的...
6. **支付与广告**:如果应用商店支持付费应用或内购,源码会包含支付接口的集成,如Google Play Billing。另外,广告展示的相关代码也可能存在。 7. **权限和安全**:确保用户数据的安全,源码中会有处理权限请求...
这个库的主要目的是简化开发人员在集成Google Play Store的In-App Billing服务时的工作,使他们能够轻松地在自己的应用中实现付费内容、订阅和其他增值服务。 【描述】"skubit-iab"库是为Android开发者提供的一种...
9. **支付集成**:对于付费应用或内购功能,源码可能集成了Google Play的In-app Billing服务,处理购买流程。 10. **推送通知**:为了提高用户活跃度,应用商店可能实现了推送通知功能,这可能涉及到Firebase Cloud...
Google Play提供的应用内购买服务是通过Google App Vending Billing系统来实现的。这个系统为开发者提供了一种安全、方便的方式来销售数字内容,如游戏内的道具、高级功能、订阅服务等。 应用内购买的实现过程涉及...
特征简单的基于承诺的API 支持消耗品/非消耗品以及付费/免费订阅支持恢复购买内部使用经过良好测试的本机库-于iOS的和适用于Android的经过调整的安装$ cordova plugin add cordova-plugin-inapppurchase配置的iOS ...
Google App Engine (GAE) 是Google Cloud Platform的重要组成部分之一,它为开发者提供了构建高效、可扩展的应用程序的平台。本文旨在详细介绍GAE在资源使用方面的一些关键限制,帮助开发者更好地理解和规划应用程序...
### Android APP 添加Google内置购买项及调试详解 #### 一、获取项目License Key 要开始在Android应用中集成Google Play的内置购买功能,首先需要获取项目的License Key。具体步骤如下: 1. **登录Google Play...
1. **ActionScript库**: 为了在Air应用中实现内购,你需要一个支持iOS和Android的ActionScript库,如iap-as3或air-in-app-purchase。这些库封装了与平台内购系统的交互,简化开发过程。 2. **适配器模式**: 由于iOS...
3. **应用内购买与订阅**:通过Google Play的In-app Billing服务,开发者可以实现应用内购买功能,提供付费内容或订阅服务。这需要在代码中集成相关API,并在Google Play Console配置产品。 4. **分析与报告**:...
标题"EgoGooglePlay.rar"指的是一个与Unity游戏引擎集成Google Play内购系统相关的资源压缩包。...通过理解这些知识点,开发者可以成功地在Unity游戏中集成Google Play内购服务,从而实现应用内的付费购买功能。
IAB(In-app Billing)是Android开发者用来在应用内销售数字商品或服务的工具。通过这个服务,开发者可以为应用添加付费内容,如解锁高级功能、购买虚拟物品等。 3. **WordPress.IAD (In-app Advertising)**:可能...
9. **支付集成**:如果应用市场包含付费应用,那么需要集成支付接口,如Google Play的In-app Billing或第三方支付平台。 10. **测试与调试**:应用市场需要经过详尽的测试,包括单元测试、集成测试和UI测试,以确保...
8. **支付集成**:如果应用市场有付费应用,那么可能涉及到支付接口的集成,如Google Play的In-app Billing或第三方支付平台。 9. **安全性**:理解如何保护用户数据的安全,防止恶意攻击,如使用HTTPS进行加密通信...