当前位置:网站首页>遇到恶意退款不用怕,App 内购买项目的退款通知现已可用

遇到恶意退款不用怕,App 内购买项目的退款通知现已可用

2022-08-09 10:36:00 华为云

前言

今年 WWDC 2020 苹果全球开发者大会,苹果宣布所有的内购项类型,当用户在应用内退款成功时,App Store Server 会发送实时的通知给开发者服务器告知有退款,开发者可通过处理该消息来更新用户的账户信息。

新的退款流程

  1. 用户购买内购商品
  2. 用户申请退款
  3. 苹果发起退款
  4. Apple Store Server 发送退款通知
  5. 用户收到退款成功的通知
  6. 开发者收到退款订单通知

配置用于接收 App Store 服务器通知的网址(URL)

若要接收 App Store 发送的服务器通知,您必须在 App Store Connect 中提供一个链接至您服务器的网址(URL)。

  1. 从“我的 App”中,选择您的 App。
  2. 在侧边栏的“综合”下方,点按“App 信息”。
  3. 向下滚动至“综合信息”,然后前往 App Store 服务器通知网址(URL)部分。
  4. 输入您的 App Store 服务器通知网址(URL),以接收订阅状态更新。
  5. 点按“存储”。

image

配置的回调链接必须满足条件:

  • 满足应用传输安全要求(使用 https)
  • URL 最长 255 字符

处理退款通知

您的服务器负责解析来自 App Store Server 的所有通知。对于 REFUND 通知,从响应中标识特定的交易,产品ID 和相关日期:

  • 苹果返回的通知内容为 JSON 对象数据,通过检查 purchase_date 以选择最新交易,从而在 unified_receipt.latest_receipt_info 中找到 该 product_id 的最新交易。

image

在 unified_receipt 里的 latest_receipt_info 是一个数组,其中包含的最近的100次应用内购买交易:

image

退款字段说明:

image

  • App Store 发出的退款日期在交易的 cancel_date_ms 字段中可以获取到。

响应退款通知

您的服务器应发送一个 HTTP 的状态码,以指明服务器到服务器的通知发布是否成功:

  • 如果发送成功,则发送 HTTP 状态码 200。你的服务器不需要返回任何数据。
  • 如果发送失败,请发送 HTTP 状态码 50x 或 40x 以使 App Store 重试该通知。 App Store 在一段时间内尝试重试该通知,但在连续失败尝试(3次)后最终停止。

注意事项:

  • 当您使用包含退款交易的收据 transaction_data 向苹果服务器校验 verifyReceipt 时,JSON响应中不存在退款交易,自动续订订阅除外。
  • 收到 REFUND 通知时,您有责任为每笔退款交易存储,监控并采取适当的措施。(因为苹果只通知一次,暂时无法在苹果后台查询退款的订单。也不能由开发者主动去苹果服务器查询)

对退款用户的处理

苹果给了一个示例,用户退款成功后,在 App 中给用户提示退款的时间和说明,可以重新购买,或者联系客服!

image

结语

其实退款通知的流程并不复杂,但是为什么苹果在今年才将它推出呢!因为根据 App Store 中国区的退款政策,一个 AppleID 有一次无条件的退款机会,一年有俩次有条件的退款,退款的时间最快也会在 48 小时内完成,但也有遇到 15 个工作日退还的。正是因为这些“条件”,导致了退款的滥用,比如“游戏代充工作室”,严重损害了开发者和苹果公司的利益。虽然 Apple 一直是想保护用户隐私,在它规则下实现退款自由,但当恶意退款滥用时,不得不提供了退款通知的接口。

原网站

版权声明
本文为[华为云]所创,转载请带上原文链接,感谢
https://bbs.huaweicloud.com/blogs/369457