怎么接入google play支付

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么接入google play支付相关的知识,希望对你有一定的参考价值。

1、首先在手机上,先下载安装好taptap。

2、然后鼠标点击打开taptap软件,接着在打开的页面中,搜索Google安装器。

3、然后点击下载,等待手机自动将Google安装器安装到手机上。

4、然后在手机桌面中,打开运行Google安装器,点击继续,等待安装完成。

5、等待自动安装完成后,回到手机页面中,可以看到Google Play商店已经成功安装到手机上了。

参考技术A

1、必须有张国内的双币信用卡或者美帝的信用卡/借记卡!然后登陆 Google Wallet 在付款方式中添加信用卡信息。

2、其中的美国地址可以去Google Maps上随便找个美国的城市的任意一个街道的任意地点,喜欢哪里点哪里,然后就有了地址:

3、随意输入一个美国的地址就可以,电话号码可不填。

4、完成后会扣一美元,后面后退还的。

5、然后就是等待google的验证,一般一两天的样子,验证通过了就可以放心购买了如果成功就是美帝的账号了 ( ̄▽ ̄") 此时不需要挂VPN
市场会自动解锁成完整版!如果被墙可以选择代理或者VPN,此时你得IP已经不重要了,重要的是有账户已经解锁!如果没变
可以先挂着VPN去购买一个付费应用,然后等一天或者几小时就有了。

6、比如购买 Minecraft 移动版,6.99$好贵 到这我就不付费了。

7、有时候在网页版市场购买会出现无法购买付费应用的情况,然后一堆错误代码这时候用手机打开google play购买即可 (此时手机上也应该是完整版了),偶尔会被墙,大部分时候就都没问题。

参考技术B 接入goodle play支付方法:
申请Google开发者帐号,开发人员控制台左侧选择“设置”输入测试人员帐号。
添加新应用,此处有个“上传APK”,此处上传的apk上传到Bate版或者ALPHA版,但包名、版本code、版本name、签名需跟最终上线的产品保持一致。此处上传测试版本的目的是当你支付接入完毕后测试时用。
集成Google Billing。
测试支付。
当游戏逻辑测试通过后,进行支付测试。测试时手机设备上绑定的Google帐号必须是在开发者控制台中配置的测试帐号,绑定非大陆的信用卡,支付后会在开发者控制台看到支付的订单,由于是测试订单,可以将测试产生的费用返还给绑定的信用卡。
参考技术C 最近因为项目需要加入googleplay的内购功能~所以网上找了很多资料,这里做个记号~

官方的内购支付接入文档:https://developer.android.com/training/in-app-billing/index.html
网上别人的资料:http://zengrong.net/post/1801.htm

下面用到的所有代码都来自Google官方给的Demo,大概路径是:<android_sdk>/extras/google/play_billing/

Google Play开发者后台需要的配置

1.测试时需要把app正式签名后上传到googlepay的后台
2.网上说测试需要把账号添加到后台而且得用信用卡来测试(这个本人没测过)
3.需要在google play后台给对应的apk添加产品

关于产品的说明:
a.产品分为不受管理的商品(消耗品,比如游戏中的金币)和受管理的商品(一次性购买即属于本账号,比如某些游戏需要玩家付费后才可以使用完整版本)

b.受管理类产品需要考虑如果玩家用同一个支付账号到别的设备完同一款游戏,这时需要考虑把那个设备也设置成已支付
c.产品的id是唯一的字符串定义,比如com.engine.produce01
d.后台添加产品后需要激活

代码部分(使用的是version3 api)

IabHelper类
初始化方法
mHelper=new IabHelper(this, base64EncodedPublicKey);
这里的base64EncodedPublicKey是googleplay后台的发布产品的时候生成提供的

[java] view plain copy
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener()
public void onIabSetupFinished(IabResult result)
Log.d(TAG, "Setup finished.");

if (!result.isSuccess())
// Oh noes, there was a problem.
complain("Problem setting up in-app billing: " + result);
return;


// Hooray, IAB is fully set up. Now, let's get an inventory of stuff we own.
Log.d(TAG, "Setup successful. Querying inventory.");
mHelper.queryInventoryAsync(mGotInventoryListener);

);

startSetup 的操作是检查是否有权限和连接到Google Billing service是否成功;这里回调的操作是如果成功,调用queryInventoryAsync查看产品id是否可以使用;
查询完成后会调用IabHelper.QueryInventoryFinishedListener 这个回调接口进行通知,在这个接口中可以获取商品的详细信息SkuDetails和Purchase信息。

点击购买按钮,需要调用的支付方法

[java] view plain copy
String payload = "";

mHelper.launchPurchaseFlow(Activity act, String sku, String itemType, int requestCode, OnIabPurchaseFinishedListener listener, String payload);

[java] view plain copy
boolean verifyDeveloperPayload(Purchase p)
String payload = p.getDeveloperPayload();

/*
* TODO: verify that the developer payload of the purchase is correct. It will be
* the same one that you sent when initiating the purchase.
*
* WARNING: Locally generating a random string when starting a purchase and
* verifying it here might seem like a good approach, but this will fail in the
* case where the user purchases an item on one device and then uses your app on
* a different device, because on the other device you will not have access to the
* random string you originally generated.
*
* So a good developer payload has these characteristics:
*
* 1. If two different users purchase an item, the payload is different between them,
* so that one user's purchase can't be replayed to another user.
*
* 2. The payload must be such that you can verify it even when the app wasn't the
* one who initiated the purchase flow (so that items purchased by the user on
* one device work on other devices owned by the user).
*
* Using your own server to store and verify developer payloads across app
* installations is recommended.
*/

return true;


verifyDeveloperPayload这个方法是在支付完成的时候在回调里头去验证用的,关于payload的生产,看上面官方给的demo的注释,大概理解了下:

1.不同的玩家所生成的payload需要不一样
2.即使玩家在不同设备上初始化payload,也要可以通过~
大概是这个意思(如果翻译有问题~砸砖吧~)

下面是支付方法回调的监听:

[java] view plain copy
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener()
public void onIabPurchaseFinished(IabResult result, Purchase purchase)
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure())
complain("Error purchasing: " + result);
setWaitScreen(false);
return;

if (!verifyDeveloperPayload(purchase))
complain("Error purchasing. Authenticity verification failed.");
setWaitScreen(false);
return;


Log.d(TAG, "Purchase successful.");

if (purchase.getSku().equals(SKU_GAS))
// bought 1/4 tank of gas. So consume it.
Log.d(TAG, "Purchase is gas. Starting gas consumption.");
//购买成功,调用消耗产品
mHelper.consumeAsync(purchase, mConsumeFinishedListener);

else if (purchase.getSku().equals(SKU_PREMIUM))
// bought the premium upgrade!
Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
alert("Thank you for upgrading to premium!");
mIsPremium = true;
updateUi();
setWaitScreen(false);

else if (purchase.getSku().equals(SKU_INFINITE_GAS))
// bought the infinite gas subscription
Log.d(TAG, "Infinite gas subscription purchased.");
alert("Thank you for subscribing to infinite gas!");
mSubscribedToInfiniteGas = true;
mTank = TANK_MAX;
updateUi();
setWaitScreen(false);


;
上面有中文注释的地方调用了mHelper.consumeAsync这个方法,这里应该是只有非管理类的产品才需要调用的方法;相当于在购买成功后调用消耗(可以理解为消耗一个道具)

在IabHelper.OnConsumeFinishedListener的回调用于处理成功调用成功支付的逻辑(这里可能还需要一步去调用远程服务器验证)

Google Play内购测试

Google Play内购测试

最近项目做海外版本,接入Google wallet支付后,测试验证比较繁琐,故记录一下。
Google wallet支付方式接入完成后,需要按照如下步骤设置,才可以进行支付测试:

一、配置并发布应用内商品

进入Google Play Console - 所有应用 ,选择具体应用,进行商品设置:
技术分享图片

注意:

  • 配置完应用内商品一定要发布,使之生效;
  • 一定要保证网络环境所对应的国家在发布范围内;
  • 游戏服务不支持商品配置,应用才支持商品信息设置;

二、上传APK并发布应用

Google Play Developer Console一个应用的发布渠道包括:正式渠道、Beta渠道、Alpha渠道,测试用的APK只要上传到Beta版或者Alpha版频道。

注意:

  • 应用必须发布后,才可以测试支付功能。
  • 应用发布后不会立即生效。
  • 上传的APK包必须要有签名,而且不能用debug签名。
  • 上传的APK包体积不能超过50M,否则需要做分包。
  • apk包发布到Beta或者Alpha渠道即可,不需要发布到正式渠道。
  • 如果应该状态变为【已发布】说明发布成功。
  • Beta、Alpha也会进行严格审核,一些隐私问题或者政策问题会导致应用无法通过审核甚至下架。
  • 安装到设备上用于测试的apk包可以和上传到Google Play的不同,但要保证这两个APK包使用相同的包名、签名、versionCode。
  • 测试时使用的网络环境所属的国家和地区一定要在应用发布的国家或者地区范围内。

三、设置测试账号

(1)进入应用版本-具体发布渠道(如Alpha版)-管理测试人员,可以修改、添加测试人员账号;
(2)将【加入测试的网址】分享给测试人员访问,二次确认后才可以真正加入测试;
技术分享图片

四、Android设备上安装应用

方法一:设备上GooglePlay直接搜索应用并安装;
方法二:通过PC的GooglePlay安装到指定手机;
方法三:若不使用GooglePlay应用,则传统apk安装即可,注意:与GooglePlay上的包保持相同的包名、签名、versionCode。

安装到真机上的测试APP签名、包名和上传到Google Play的APK一致,就可以测试。  

五、Google Wallet支付

安装完成后,支付环节选择开发者后台配置的商品、Google Wallet支付方式即可,注意GooglePlay账号需要绑定支持国际支付的借记卡/信用卡,才可以支付成功。

六、沙盒测试

沙盒测试:测试期间,经过授权的用户帐户可通过 Google Play 购买您的应用内商品,不过这些用户帐户不用实际支付费用。

设置沙盒账号:在 Developer Console 中,转到 Settings > Account details,然后在 License Testing 部分将相应地址添加到 Gmail accounts with testing access 字段并保存。
技术分享图片

划重点:
1、沙盒测试的账号,也需要按照 一~五 的流程配置完成,才可以进行商品购买。
2、沙盒测试账号只是额外增加了许可测试(license test)的设置,支付时候不需要真正付款。

PS:Google开发者后台中文翻译迷之难理解,英文过关的建议直接查看英文版。

以上是关于怎么接入google play支付的主要内容,如果未能解决你的问题,请参考以下文章

Google Play内购测试

Unity接入IAP服务器验单(Google Play)

Google play billing(Google play 内支付)

google play支付如何用php验证订单完成的合法性

通过 Google Play 支付的应用内订阅和订阅自动续订,是不是需要通过 Google Play 安装应用?

Android支付接入之Google In-app-Billing