在中国大陆调试Android In-app-billing
2013-03-01更新:加入简单解决方案。
历尽艰难险阻终于在中国大陆调试Google Play In-app Billing成功,过程记录如下,方便后来之人。
简单解决方案
- 找一台带有Google Play的手机,不必ROOT;
- 找一个米国VPN,在手机上拨通;
- 在手机上,删除Google Play的缓存,同时卸载Google Play的更新。
Google Play使用普通方法是不能被卸载的,因此可以放心的卸载Google Play的更新; - 重启一次手机,在手机上拨通VPN;
- 打开Google Play,如果能够看到付费应用,就说明手机已经支持支付了;
- 登录Google Wallet,绑定一张双币种信用卡(亲测招行和民生银行均可用),测试支付。
心得:
经过多台手机的测试,可以确定,手机不必Root,不必安装Market Enable,也不必安装米国手机卡,就可以实现Google Play支付。 我猜测,Google Play检测手机是否可以支付,是通过网络位置判定的。但是由于缓存的原因,临时改用米国VPN是不管用的,必须要清除缓存和Google Play的更新。 Google Play看到付费应用之后,理论上就可以进行支付了。如果测试还有问题,只需要稍等片刻,或者多测试几次,或者重启手机再测试。 一定要保证,测试的过程中,你的手机是全程VPN的。 其实,直接用路由器做梯子,是最保险的。
如果上面的简单方案不管用,还是尝试下面的复杂解决方案把。
复杂解决方案
一、错误描述
Android的文档写得相当好,根据下面两篇教程,理应顺利通过调试。
- In-app Billing Overview
- Preparing Your In-app Billing Application 可郁闷的事情,是在使用Google提供的TrivalDrive Sample进行调试的时候,Sample程序总是抛出异常:
Error checking for billing v3 support. (response: 3:Billing Unavailable)
二、原因
这个异常对应的是 BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE
错误,Google对它的定义是:
Billing API version is not supported for the type requested
详见这里:In-app Billing Reference (IAB Version 3)
这个含义其实是非常模糊的,我用标准和专业的中文翻译一下,它应该是这个意思:
老子就是不支持你在天朝使用,元芳,你能怎么着?
血泪教训啊,为了翻译上面那句话,秒秒钟几十亿上下的我的track遍及大江南北,城墙内外……
三、解决条件
Android文档中提供的什么账户啊、产品啊、Developer Console之类的我就不说了,中文不好的就去看英文,英文好的就去看英文。我要说的内容绝不违反党的政策,和12306、GitHub以及城墙都无关。我只是欺骗了万恶的美帝。
Android中的In-app billing其实是调用Google Play实现的。因此要解决上面的问题,首先要让Google Play支持支付。
默认的情况下,在Google Play Store中,我们只能看到免费的App,且无法搜索到收费App。要完成这一步,需要以下条件:
- Root过的Android手机一枚;
- 跨墙工具一套(推荐美帝VPN);
- Market Enabler或者Market Unlocker;
- 双币种信用卡一张(亲测招行VISA可用);
- 美帝通信地址和邮编(如果木有亲戚朋友,就随便找个大学地址);
- Google账户一个。
四、解决流程
还是先说句废话:开机有风险,用户须谨慎
- Google帐号绑定信用卡
PC拨上美帝VPN,进入 https://wallet.google.com ,账户选择美国,地址邮编填写上面准备好的,然后绑定一张双币种信用卡。如果绑定成功,你应该会收到银行短信说有$1的交易。不要着急,这个交易只是预授权费用,是为了检测你的卡是否正常,不用还款的。详见:Authorizations。 - 修改运营商
运行上面准备的 Market Unlocker,按照界面提示开启Enable Unlocker
和Auto Unlock
选项。这个操作将运营商改成 Verizon。 - 取消定位服务(我不确定是否必须)
在Android系统设置中把使用wifi定位
和用定位数据改善google服务
关闭。 - 清除Google Play Store的缓存和更新
在Android的App管理中,清除Google Play Stroe的程序数据和缓存。Android会有一个提醒,不必管它,哪些东西都会回来的。如果Google Play更新过,也卸载更新。Google Play Store一般是保存在Rom中的,所以不会被卸载,只能卸载更新。 - 完成
在Android设备中拨上美帝VPN,重新打开Google Play Store。如果你能在首页看到收费应用,就说明已经成功了。
五、参考
以下是参考资料中有价值的一小部分,大部分资料都需要跨墙:
- 招行信用卡绑定Google Checkout
- 有人在国内成功使用过google market的in-app-billing吗?
- 解决“此商品无法在您设备所在的国家使用”(更新)
- 关于google checkout绑定信用卡
- In App Billing Implementaion
- In-app Billing Overview (感谢这位苦B的in china兄弟,让我不至于偏的太远)
- Android In App BIlling v3 doesn't work Nexus 7
这两篇可能用得上,一并放这里。第一篇也是字字血泪啊!!
- 文章ID:1801
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/use_android_iab_in_china/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。