遇到恶意退款不用怕,App 内购买项目的退款通知现已可用
前言
今年 WWDC 2020 苹果全球开发者大会,苹果宣布所有的内购项类型,当用户在应用内退款成功时,App Store Server 会发送实时的通知给开发者服务器告知有退款,开发者可通过处理该消息来更新用户的账户信息。
新的退款流程
- 用户购买内购商品
- 用户申请退款
- 苹果发起退款
- Apple Store Server 发送退款通知
- 用户收到退款成功的通知
- 开发者收到退款订单通知
配置用于接收 App Store 服务器通知的网址(URL)
若要接收 App Store 发送的服务器通知,您必须在 App Store Connect 中提供一个链接至您服务器的网址(URL)。
- 从“我的 App”中,选择您的 App。
- 在侧边栏的“综合”下方,点按“App 信息”。
- 向下滚动至“综合信息”,然后前往 App Store 服务器通知网址(URL)部分。
- 输入您的 App Store 服务器通知网址(URL),以接收订阅状态更新。
- 点按“存储”。
配置的回调链接必须满足条件:
- 满足应用传输安全要求(使用 https)
- URL 最长 255 字符
处理退款通知
您的服务器负责解析来自 App Store Server 的所有通知。对于 REFUND 通知,从响应中标识特定的交易,产品ID 和相关日期:
- 苹果返回的通知内容为 JSON 对象数据,通过检查 purchase_date 以选择最新交易,从而在 unified_receipt.latest_receipt_info 中找到 该 product_id 的最新交易。
在 unified_receipt 里的 latest_receipt_info 是一个数组,其中包含的最近的100次应用内购买交易:
退款字段说明:
- App Store 发出的退款日期在交易的 cancel_date_ms 字段中可以获取到。
响应退款通知
您的服务器应发送一个 HTTP 的状态码,以指明服务器到服务器的通知发布是否成功:
- 如果发送成功,则发送 HTTP 状态码 200。你的服务器不需要返回任何数据。
- 如果发送失败,请发送 HTTP 状态码 50x 或 40x 以使 App Store 重试该通知。 App Store 在一段时间内尝试重试该通知,但在连续失败尝试(3次)后最终停止。
注意事项:
- 当您使用包含退款交易的收据 transaction_data 向苹果服务器校验 verifyReceipt 时,JSON响应中不存在退款交易,自动续订订阅除外。
- 收到 REFUND 通知时,您有责任为每笔退款交易存储,监控并采取适当的措施。(因为苹果只通知一次,暂时无法在苹果后台查询退款的订单。也不能由开发者主动去苹果服务器查询)
对退款用户的处理
苹果给了一个示例,用户退款成功后,在 App 中给用户提示退款的时间和说明,可以重新购买,或者联系客服!
结语
其实退款通知的流程并不复杂,但是为什么苹果在今年才将它推出呢!因为根据 App Store 中国区的退款政策,一个 AppleID 有一次无条件的退款机会,一年有俩次有条件的退款,退款的时间最快也会在 48 小时内完成,但也有遇到 15 个工作日退还的。正是因为这些“条件”,导致了退款的滥用,比如“游戏代充工作室”,严重损害了开发者和苹果公司的利益。虽然 Apple 一直是想保护用户隐私,在它规则下实现退款自由,但当恶意退款滥用时,不得不提供了退款通知的接口。
- 点赞
- 收藏
- 关注作者
评论(0)