这几天接入google Play支付,也算是碰壁不少,到处爬帖子,总算是调通了,下面把遇到的问题分享下,方便后来人少绕弯路吧。
至于google Play如果集成到安卓工程和如何写付费代码我这里就不介绍了,网上很多介绍的帖子介绍的很不错,自行百度和google吧。
主要说下我测试内置付费遇到的一些问题,其他遇到的问题也不多,主要有二个问题。
其中一个问题是用我自己后台的productID测试时,点击付费后弹出“系统无法找到您要购买的商品”,郁闷的是用android.test.purchased这个produceID测试却是正常的。这个问题困扰我了我2天。
百度查找基本都是说上传到后台的包名和测试包名不一致导致,或者签名不一致导致,其实这些都不是我问题的原因。还有些人解决后也不分享下怎么解决的(这里就不说了)
后来打印trace如下:
11-24 13:20:25.406: D/Finsky(23407): [1] CarrierParamsAction.createCarrierBillingParameters: Carrier billing config is null. Device is not targeted for DCB 2.
11-24 13:20:25.406: E/Finsky(23407): [946] FileBasedKeyValueStore.delete: Attempt to delete ‘paramsN5UQ3n3sZ-pMs6N0vSq1Kg‘ failed!
11-24 13:20:27.016: D/Finsky(23407): [1] PurchaseFragment.handleError: Error: PurchaseError{type=3 subtype=19}
11-24 13:20:27.021: D/Finsky(23407): [1] PurchaseFragment.fail: Purchase failed: PurchaseError{type=3 subtype=19}
google搜索相关trace才追到问题根源(还是国外问题更新比较快,国内接google play的比较少应该,相关帖子也很少)。
首先后台传的alpha包一定要和你测试包签名什么的保持一致。
导致我测试出问题的是,我没有把app publish。其实google有说明的,不发布是不能测试内置付费的(Draft Apps are No Longer Supported详细说明参照http://developer.android.com/google/play/billing/billing_testing.html),也怪我没详细阅读人家文档。
发布应用等待大概3个小时的时间再测试,系统无法找到您要购买的商品这个提示确实没有了,但又出现了新问题,提示”发布商不能购买此商品“,不过已经离成功近了一步。
第二个问题就是上面说的提示”发布商不能购买此商品“,查了下原来是不能用发布商的账号测试内置购买,好吧。我就新建了个google账号,把手机上原来的账号果断删除,添加新建的账号,这里不让忘记在google后台添加测试账号哈,账号间要用逗号隔开啊,这个google的说明就没有苹果友好。搞的我开始都不知道怎么分割两个账号。你好歹也说明要账号间用逗号隔开啊,总不能让别人去猜吧。。。其实到这里我的问题就解决了,接着新账号测试付费终于看到了产品信息。总算天晴了。。。。
如果后续有问题我会继续贴出来的。。。