Google支付接入参考

上篇文章简单的提了句Google支付,现在详细的说一点官方文档以及官方文档点到即止的地方。
首先,确定你在Google Play Console已经成功建立了工程,同时添加几个测试账号(测试账号为谷歌账号,测试账号测试支付时不用用钱支付,属于模拟支付)
做之前先看看官方文档以及官方给的demo,并把相关类别放到你的工程里,在此前提下,做下简单的我当时遇到的坑,包括,接口调通,获取商品

坑一:官方demo并未指定base64EncodedPublicKey,所以运行demo时会直接报错,官方demo给的是汽油这种消耗品,以及预购,所以你可以根据你自己的行为去做研究
坑二:运行工程时并未报错,做debug调试(返回回调处显示成功),发现接口已经调通,显示成功,但是就是拿不到商品

首先,应用的商店发布->应用内商品 添加需要出售的商品(商品id留存)
然后,
应用的开发工具->服务和API->二进制文件中的 Base64 编码 RSA 公共密钥,复制下来,先放到工程里,并赋值给base64EncodedPublicKey,运行工程。
Google支付接入参考_第1张图片
关于坑二,如果获取不到商品就无法购买测试,查了很多文献都没说明,不知道是因为太简单,还是说因为知道后感觉太简单就没说,在这呢,如果有跟我不一样的或者我不对的地方可以指出来大家参考:
在支付界面:
New skuList = new ArrayList<>();
skuList.add(“coin1”);
skuList.add(“coin2”);
skuList.add(“coin3”);
skuList.add(“coin4”);
skuList.add(“coin5”);

其中coin1…coin5为商品id,就是上面说的留存的id,改写官方demo里的
mHelper.queryInventoryAsync(mGotInventoryListener)方法为mHelper.queryInventoryAsync(skuList,mGotInventoryListener);
类IabHelp里改方法:
public void queryInventoryAsync(ArrayList skuList,QueryInventoryFinishedListener listener)
throws IabAsyncInProgressException{
// queryInventoryAsync(false, null, null, listener);
queryInventoryAsync(true, skuList, null, listener);
}
运行工程时神奇地发现了,你拿到了应用内商品列表(把商品id发过去,谷歌后台系统根据id查询商品并返回);

因为身边也没有人做过Google支付的接入,所以并没有很好的借鉴,关于上面的skuList可以由后台直接返回而不用手动添加,以及base64EncodedPublicKey做成动态获取可以更安全;还有就是直接从自己后台获取商品列表,购买时再请求谷歌后台。
其实我也是意识到如果商品过多,这样处理是不是显得有点low,但是目前能解决目前的功能需求,如果有更好的方式,谢谢给予意见!

你可能感兴趣的:(Google支付接入参考)