应用创建
创建应用需要上传一个签名后的包。可以是个空包,也就是说,可以上传一个和正式包一样包名和签名的就可以提前获得回复的key。
GooglePay内购及订阅概念
1.GoogleInapp(内购)
GoogleInapp也叫google内购,内购分为两个步骤,第一步为购买。购买成功后,需要消耗该商品。如果该商品未消耗,那么当前设备下次购买该商品将会失败,返回code码为7.用户如果第一次购买该商品,在两小时内可以不通过开发者同意进行退款(该规则同样适用于订阅功能)。在服务器校验流程中,可以根据code码判断是否退款。
2.GoogleSubs(订阅)
googleSubs也叫google订阅。定期的扣除用户的费用。直到用户到googlePlay中接触订阅。
/**
* 用于订阅商品
*
* @param context
* @param productId Google play store 后台定义的商品的id。如果错误的话,将提示检索失败
* @param payload 该字段随机生成一定长度的字符串,用于生成的订单支付成功后根据google返回的订单信息关联。
*/
public void subsGoods(Activity context, String productId, String payload)
复制代码
业务接入流程
- 调用queryProductDetails(productId,listener)方查询google后台是否拥有该商品id。如果有该商品id,同时返回该商品价格,货币,描述信息等信息
- 根据返回信息到服务器创建预支付订单。
- 创建成功后,调用googlePay.buyGoods(activity,productId,developerPayload)购买方法,下面分为两种情况,一种是购买成功,触发onBuySuccess(OrderParam orderParam)方法(下一步骤为4),一种是购买失败,而失败中如果是由于未消耗造成的会返回状态码为7(下一步骤为6);触发haveGoodsUnConsume()方法。
- 购买成功,到服务器校验该商品.
- 如果商品校验成功,调用googlePay.consumeAsync(mPurchasingItemType,purchaseData, dataSignature)方法消耗该商品,如果消耗失败,那么下次购买时,到步骤1,直到消耗成功后才能进行下一次支付,这样可以百分百的保证不丢单.
- 根据返回的状态码为7时,会触发haveGoodsUnConsume方法,在该方法中调用handQueryInventoryAsync()方法查询未消耗商品的信息
- 根据查询到的信息,到服务器校验该商品信息;(下一步骤为5)。
GooglePay接入方法说明
初始化GooglePay对象
/**
* 初始化Google pay
*
* @param context 上下文参数
* @param base64EncodedPublicKey 购买需要的公钥
* @param listener 初始化和购买的回调
*/