鉴于国内对亚马逊内购支付SDK集成的这块的参考资料相当的少,而且上架亚马逊App store也不像Google play那么简单,所以在此记录一下自己趟过的坑。
集成
集成的相关资料如下:
集成这一块还是相当简单的,照着官方文档和demo,然后根据自己的实际需求进行对应的代码编写。大概的流程如下:
- 实现并注册PurchasingListener
- 获取用户信息
- 获取产品信息
- 发起购买
- 查询更新
- 服务端验证
- 履行商品并使用notifyFulfillment
具体也可以参考Google Play Billing和亚马逊应用内购买(IAP)之间的区别,这样更容易理解。
应用测试
1、下载 Amazon App store;
2、在 Amazon App store下载 Amazon App Tester
(附:下载下来安装不了的去应用管理页面把相关的权限都打开,这样也方便以后的支付测试);
3、去亚马逊应用商品开发者后台下载商品列表json文件;
4、获取JSON数据文件并且文件命名为amazon.sdktester.json
,将该文件复制至手机系统中的内存文件夹 ;
5、打开 Amazon App Tester选择IAP Items in JSON File
查看json文件拷贝路径是否正确,有文件则正确;
6、以上步骤都完成了,就可以开始测试应用内购了。
趟坑
测试集成的过程中
onProductDataResponse()
始终返回response.getProductData()
为空
趟坑:刚开始以为非得是亚马逊的设备才可以测试支付,后面向亚马逊的相关人员咨询才知道安装了Amazon App store的Android设备都可以进行亚马逊支付
。这里的sku
可以用官方demo里面的那个sku
(亲测有用),在这个本地测试阶段,如果始终找不到有效的sku
,建议换一台手机试试。本地沙盒测试模式下,发起购买后无任何反应,即没有亚马逊的弹窗出现。
趟坑:手机设置->应用管理->Amazon App Store->权限->后台弹窗权限打开。-
App living test过程中收到测试邮件,点击
Amazon.com
发现没有我要测试的应用
趟坑:可以点击Amazon.co.uk
链接跳转到测试应用界面,然后将链接copy到Android手机的Google Chrome
(别的浏览器点击下载是打不开这个下载链接的,貌似只有Google浏览器才能跳转到Amazon App store),通过点击下载,可以跳转到Amazon App store
进行下载(附:不要用QQ邮箱注册亚马逊开发者,因为可能不会及时收到亚马逊相关邮件)
测试支付的话,如果本地测试没多大问题的话,可以直接提交App living test,不需要什么沙盒测试(避坑),这样后端的同学直接配正式环境,然后按照文档流程来,测完了可以直接提交转正;
因为Amazon App store上架过程中比较严格(相对于Google来说),会遇到各种问题,关键是网上还没有解决办法,这种情况下,最好是联系亚马逊相关人员咨询解决。
正式上线后测试支付,如果始终查询不到有效的
sku
的话,大概有以下几种情况:
1.注册亚马逊的账号不是国外的;
2.在保证亚马逊账号注册的是国外的前提下,自己的默认收件地址也不是国外的;
3.手机自身的问题,建议换一台手机在注册
PurchasingListener
的前提下,本地沙盒测试环境下调用PurchasingService
的相关方法,可以监听到事件的回调,但是上传到LAT测试环境和正式环境后,调用PurchasingService
相关方法后PurchasingListener
无任何监听回调(天坑)
解决办法:
添加亚马逊的混淆(鬼特么知道包上传亚马逊后台后还有这种操作
)
-dontwarn com.amazon.**
-keep class com.amazon.** {*;}
-keepattributes *注释*