【Apple支付和Google支付】支付问题

支付问题总结

手机支付后,通过服务器验证支付的结果,并下发用户权益。

Google支付

透传字段

Google支付有2个重要的字段,可以传递给Google支付平台,回调时会返回。

  • ObfuscatedAccountId: 用来透传代表用户的唯一识别码。
  • ObfuscatedProfileId:这个透传字段有点难为理解,这里打一个比方,例如这样的一个业务场景,主用户为自己的子用户购买一个商品,这个商品最终要给到子用户,那么ObfuscatedProfileId这个字段就可以用来存储子用户的唯一识别码,这样谷歌支付完成后会有一个回调,从这个回调中就能判断出主用户为哪个子用户购买的,方便下发权益。相当于在ObfuscatedAccountId 用户识别码下,多了一个二级用户识别码,当然也能用在其他业务场景下,但是一定要结合ObfuscatedAccountId一起来使用。

支付回调

支付成功后,Google会给我们的服务器发送回调信息,通过HTTP的POST请求发送到我们的回调接口上。
在沙盒环境下,月度订阅每隔5分钟自动续订一次,年度订阅每隔30分钟自动续订一次,最多续订6次。
Google的回调也有重试机制,Google与Apple类似,通过http的状态码决定回调是否执行成功,成功后不会再次发送,失败后会重试,如果失败次数过多会有退避算法,进行延迟重试。

参考文档

Google支付官方文档:https://developer.android.com/google/play/billing/backend

Apple支付

透传字段

  • 旧版API使用applicationUsername,已经废弃但可在旧版API中使用。当用户将一个UUID数据设置到该字段时,Apple支付平台将存储起来并于本次交易关联起来,用来标识支付的用户。在支付回调中,或者Apple的API中,使用appAccountToken获取到设置的UUID值(applicationUsername存储的值,用appAccountToken读取)。
    注意:这个字段是用来识别用户的,一定要为业务用户生成一个唯一的UUID,不要试图存储其他值,也不要试图存储非UUID值。

参考文档:https://developer.apple.com/documentation/storekit/skmutablepayment/applicationusername

  • 新版API使用appAccountToken,旧版API只能通过applicationUsername字段设置一个UUID值来关联一个业务用户,再通过appAccountToken获取这个UUID值。新版API中,可以直接通过appAccountToken字段设置任意的字符串值,并通过回调接口或Apple API中用返回的appAccountToken字段来获取对应的值。
    注意:一定将appAccountToken字段用来关联业务用户,可以是一个UUID字符串,也可以是其他字符串。

参考文档:https://developer.apple.com/documentation/appstoreserverapi/appaccounttoken

自动续订

沙盒环境下,首次购买订阅后,只有5分钟(可在支付平台设置时长)有效期,5分钟到期后会自动续订一次,续订后再过5分钟订阅失效。
建议:将苹果的订阅过期时间与业务侧的权益过期时间设置成一致,这样两边的权益都是同时过期。

支付回调

支付成功后,Apple会给我们的服务器发送回调信息,通过HTTP的POST请求发送到我们回调接口上。
回调处理完成后,业务服务器需要返回一个http的响应状态码给苹果支付平台,返回错误的状态码会导致苹果重复发送回调信息。

  • 200and206:表示回调处理成功。
  • 50xor40x :表示回调处理异常,此时苹果支付平台会间隔一段时间后再次发送回调。

支付平台重复发送回调的间隔时间如下:

  • V2版本的回调, 重试5次, 分别在1, 12, 24, 48, 72小时之后。
  • V1版本的回调, 重试3次, 分别在6, 24, 48小时之后。

注意:重试逻辑只发生在正式环境,沙盒环境只发送一次。

支付问题

苹果返回的交易记录中找不到transaction_id

沙盒环境下,手机上支付后,偶尔会出现在苹果的支付校验接口(https://developer.apple.com/documentation/appstorereceipts/verifyreceipt)中找不到对应的交易信息,目前大家反馈是苹果bug导致。
解决办法:当出现该问题的时候,使用Apple提供的另外一个“查询交易信息”接口进行查询,接口官方文档:https://developer.apple.com
/documentation/appstoreserverapi/get-transaction-info。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shadon178

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值