怎么接入google play支付
发布网友
发布时间:2022-04-20 12:29
我来回答
共4个回答
热心网友
时间:2022-05-23 16:38
1、首先在手机上,先下载安装好taptap。
2、然后鼠标点击打开taptap软件,接着在打开的页面中,搜索Google安装器。
3、然后点击下载,等待手机自动将Google安装器安装到手机上。
4、然后在手机桌面中,打开运行Google安装器,点击继续,等待安装完成。
5、等待自动安装完成后,回到手机页面中,可以看到Google Play商店已经成功安装到手机上了。
热心网友
时间:2022-05-23 16:38
1、必须有张国内的双币信用卡或者美帝的信用卡/借记卡!然后登陆 Google Wallet 在付款方式中添加信用卡信息。
2、其中的美国地址可以去Google Maps上随便找个美国的城市的任意一个街道的任意地点,喜欢哪里点哪里,然后就有了地址:
3、随意输入一个美国的地址就可以,电话号码可不填。
4、完成后会扣一美元,后面后退还的。
5、然后就是等待google的验证,一般一两天的样子,验证通过了就可以放心购买了如果成功就是美帝的账号了 ( ̄▽ ̄") 此时不需要挂VPN
市场会自动解锁成完整版!如果被墙可以选择代理或者VPN,此时你得IP已经不重要了,重要的是有账户已经解锁!如果没变
可以先挂着VPN去购买一个付费应用,然后等一天或者几小时就有了。
6、比如购买 Minecraft 移动版,6.99$好贵 到这我就不付费了。
7、有时候在网页版市场购买会出现无法购买付费应用的情况,然后一堆错误代码这时候用手机打开google play购买即可 (此时手机上也应该是完整版了),偶尔会被墙,大部分时候就都没问题。
热心网友
时间:2022-05-23 16:39
接入goodle play支付方法:
申请Google开发者帐号,开发人员控制台左侧选择“设置”输入测试人员帐号。
添加新应用,此处有个“上传APK”,此处上传的apk上传到Bate版或者ALPHA版,但包名、版本code、版本name、签名需跟最终上线的产品保持一致。此处上传测试版本的目的是当你支付接入完毕后测试时用。
集成Google Billing。
测试支付。
当游戏逻辑测试通过后,进行支付测试。测试时手机设备上绑定的Google帐号必须是在开发者控制台中配置的测试帐号,绑定非*的信用卡,支付后会在开发者控制台看到支付的订单,由于是测试订单,可以将测试产生的费用返还给绑定的信用卡。
热心网友
时间:2022-05-23 16:39
最近因为项目需要加入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.proce01
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的回调用于处理成功调用成功支付的逻辑(这里可能还需要一步去调用远程服务器验证)