2、google普通商品校验返回,没有实际支付价格及支付货币类型,如果要统计的话,可由客户端上传上来;订阅商品的校验返回有这两个数据。ios返回里没有这两个数据。
3、ios校验时,如果有订阅商品,那么所有票据的校验都要传 password 参数;传 exclude-old-transactions 参数并设置为true,可以只返回最后一个订阅数据(减少返回的数据量)。
4、ios普通商品校验返回数据时,注意检查 bundle_id 是否是当前app的,防刷。
5、google/ios校验返回后,都需要把交易号(ios:transaction_idgoogle:orderId)记录下来,表示这一笔支付已完成了,防刷。
6、ios校验的返回,在in_app数组里可能有多笔支付(未正确销单或有订阅的),处理的时候需要遍历一下,找到正确的支付数据。
7、订阅免费试用:如果设置了免费试用,校验返回里有相应标记(ios:is_trial_period=truegoogle:paymentState=2),处理发货时注意免费试用的天数。
8、设置了免费试用的,用户试用过后需要有记录,防止用户切换不同的支付账号刷试用。
9、google订阅如果设置有宽限期的,校验返回paymentState=0,但有效期往后延了大概12个小时,服务器处理时,只需要把订阅扣款截止时间往后延就好了,不要处理发货。
10、ios/google支付时,最好不要做服务器预下单逻辑(创建自己的一个order)。客户端可以先到服务器判断是否可购买当前商品(限购等判断),若可以购买,则客户端支付,然后让服务器验票据,这个时候服务器可以根据需求来创建自己的订单,并且验票据。这么做的目的是因为我们发现ios透传上去的自己的orderId,在补单时不知道为什么有时拿到的orderId跟支付的票据不是对应的,造成无法补单,无法销单(这个有可能是客户端的bug,但还没查出来)。
Updated by Leo: Google支付可以预下单,因为谷歌侧也提供了两个扩展字段来存储服务端的订单号已经用户ID,若App原因导致未能调用接口入账时,也可以通过谷歌的通知实现入账.
11、ios/google支付,一定要注意销单问题,如果某商品不销单,就无法再次购买这个商品,并且google的在几天后会自动退款。理论上客户端在服务器返回正确后就处理销单,但服务器为了防刷,可能有很复杂的逻辑判断认为支付失败(比如服务器验单成功后返回,但客户端因为某些原因未销单,再次登录后,客户端发起补单流程,服务器发现当前票据已验过了)。所以,最好的办法是让服务器返回参数,告诉客户端当前票据要不要销单,这样客户端就不用去判断哪些情况下需要销单,哪些不能销单。
12、订阅续订,如果是在服务器到截止日期去平台查询是否有续订的话,记得在客户端重新购买订阅商品时,把最新的票据更新一下;ios的票据校验返回会有一个 latest_receipt,可以取这个来更新。
13、ios的官方有说,订阅的 transaction_id 在更换设备后是会变化的,所以,不能只依赖 transaction_id 来判断当前订阅是否有效,还需要依据 purchase-date-ms、expires_date_ms 等来判断当前票据是否有效。
服务没起来。更新失败原因:1、网络问题,换个网络试一下,最好是稳定的wifi环境下更新。
2、设备不兼容,最好是选择配置比较高的手机,这样才能更加流畅的玩耍。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)