Google play billing内置付费测试问题总结

这几天接入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的说明就没有苹果友好。搞的我开始都不知道怎么分割两个账号。你好歹也说明要账号间用逗号隔开啊,总不能让别人去猜吧。。。其实到这里我的问题就解决了,接着新账号测试付费终于看到了产品信息。总算天晴了。。。。

如果后续有问题我会继续贴出来的。。。



时间: 2024-10-06 21:40:22

Google play billing内置付费测试问题总结的相关文章

页面静态化1---概念(Apache内置压力测试工具使用方法)

三个概念 ①静态网址: http://127.0.0.1/regis.html ②动态网址:在请求页面时可以动态的传一些值进去. http://127.0.0.1/regis.php?id=45&title=今天天气不错 ③伪静态网址: 伪静态仅仅是对动态网址的一个重写,伪静态网址不能让动态网址静态化,搜索引擎不会认为伪静态就是HTML文档,其次伪静态可取,但是应把重心放在取出冗余参数.规范URL,竟可能的避免重复也等等. 举例说明:http://v.youku.com/v_show/id_XM

jersey 集成spring,并使用grizzly内置容器测试jersey

jersey集成spring相对来说比较简单,需要注意的几点是: 1.引入maven依赖jersey-spring,其中包含了spring的相关依赖,如果和项目中所使用的spring版本相冲突,可以通过exclusions清除掉. 2.确保jersey资源类所在的包路径,能被spring扫描到,即spring配置中的<context:component-scan base-package="" />. 3.确保jersey资源类打上注解@Component,这样可以注入sp

Ansible内置变量测试(五)

1.Ansible内置了一些变量以方便主机之间相互调用各自的变量.这些变量包括: * hostvars允许你访问另一个主机的变量,当然前提是ansible已经收集到这个主机的变量了: group_names:是当前主机所在的group列表 groups:是所有inventory的group列表 inventory_hostname:是在inventory里定义的主机名(ip或主机名称) play_hosts是当前的playbook范围内的主机列表 inventory_dir和inventory_

苹果的IAP 内置付费

第一步:你需要在iTunesConnect中创建个新的App,然后为这个App设置一些产品(付费道具)等: OK,这里Himi稍微解释下,iTunesConnect是苹果提供的一个平台,主要提供AP发布和管理App的,最重要的功能是创建管理项目信息,项目付费产品(道具)管理.付费的测试账号.提交App等等,这里就简单介绍这么多,关于产品一词在此我们可以理解成游戏道具即可:在苹果看来所有付费都属于产品 =. =千万不要纠结字眼哦- OK,打开iTunesConnect网站:https://itun

Google play billing(Google play 内支付)

http://www.bubuko.com/infodetail-930440.html [html] view plain copy 如billing开发文档所说,要在你的应用中实现In-app Billing只需要完成以下几步就可以了. [html] view plain copy 第一,把你上篇下载的AIDL文件添加到你的工程里,第二,把 <uses-permission android:name="com.android.vending.BILLING" /> 这个

Google play billing(Google play 内支付) 下篇

开篇: 如billing开发文档所说,要在你的应用中实现In-app Billing只需要完成以下几步就可以了. 第一,把你上篇下载的AIDL文件添加到你的工程里,第二,把 <uses-permission android:name="com.android.vending.BILLING" /> 这个权限加到你工程的AndroidManifest.xml文件中,第三,创建一个ServiceConnection,并把它绑定到IInAppBillingService中.完成上

Django框架进阶7 forms组件(pycharm内置测试环境Python Console), cookie与session操作

forms组件 写一个注册页面 获取用户输入的用户名和密码 用户点击注册发送到后端做用户名密码的校验 用户名中不能包含金瓶mei 不符合社会主义核心价值观 密码不能为空 你个DSB,密码怎么能为空 1.手写获取用户输入的前端页面代码 渲染页面 2.后端获取用户数据并做合法性校验 校验数据 3.将校验之后的结果渲染到前端页面 展示信息 不用forms组件代码: app01/views.py from django.shortcuts import render,HttpResponse # Cre

python测试开发(01-递归函数+内置函数)

# 生成器三个方法:send,close throw# send()发送数据 f# def gen():# for i in range(10):# j=yield i# print(j)# g=gen()## print(next(g))# print(g.send(100))# print(next(g))# print(next(g))# print(g.send(10000))# print(next(g))## close()关闭生成器# g.close()# print(g.send

ASP.NET MVC Display Mode 移动端视图 配置对微信内置浏览器的识别

最近在捣鼓一个稍微有点low的商城网站,没有计划做app却要求有个wap版,而前端又没有做成响应式,时间WTF,直接利用了asp.net mvc的Display Mode Provider. 使用方式依照上面的链接地址,asp.net mvc application启动的时候会在全局变量 DisplayModeProvider.Instance.Modes 集合中加入 DisplayModeId == "Mobile" 的 IDisplayMode ,因此如果想要在移动端浏览器中展示移