旧版苹果退款通知

1、前言

今年 WWDC 2020 苹果全球开发者大会,苹果宣布所有的内购品项类型,当用户退款成功时,开发者都能收到退款通知!!!退款通知!!!退款通知!!!

针对 App 内购买项目的退款通知现已可用

2020 年 06 月 24 日 App Store 服务器通知现在包含所有类型的 App 内购买项目的退款通知 (包括消耗型项目、非消耗型项目和非续期订阅)。这些信息能帮助您采取相应的行动,并告知他们相关的优惠更改,以及如何重新订阅。

针对 App 内购买项目的退款通知现已可用 - 新闻 - Apple Developer

2、处理退款

2.1 退款流程

在 2020 年 06 月 24 日之前,开发者完全不知道有用户退款了!(只有每月账单里看到退款的一个总数量 -。-):

2020 年 06 月 24 日开始,苹果新增流程:

2.2 退款通知

在苹果后台可以配置一个退款通知的回调地址(一个App配置一条链接):

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

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

注意:这里的 https 是指苹果的 App Transport Security (ATS),其中有协议的要求,比如使用 Transport Layer Security (TLS) protocol 1.2 版本,具体见苹果文档: Preventing Insecure Network Connections | Apple Developer Documentation

2.3 退款通知的类型

苹果把回调的通知分为2种类型:

  • 退款通知类型
  • 取消通知类型

其中新增加的退款通知类型是针对:

  • 消耗型
  • 非消耗型
  • 非续期订阅

取消通知类型是针对:

  • 自动续期订阅

2.4 退款通知的内容

苹果返回的通知内容为 JSON 对象数据,所有的退款订单的通知是在 unified_receipt 里的 latest_receipt_info 数组中:

字段说明
environment收据生成的环境。values: SandboxPROD。自动续订订阅是可以沙盒环境测试取消订阅。
latest_receiptBase64编码的最新交易收据。
latest_receipt_info收据的列表
notification_type通知类型,退款的值应该是:REFUND, 可参考:notification_type
password验证收据时的 password,App 专用共享密钥是用于接收此 App 自动续订订阅收据的唯一代码。如果您需要将此 App 转让给其他开发者,或者需要将主共享密钥设置为专用,可能需要使用 App 专用共享密钥。
bidApp的 bundle id(包名)
bvrsApp的版本号
unified_receipt退款的订单信息在这里

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

数据中每个退款订单的主要字段:

字段说明
original_transaction_id苹果订单的唯一标识 transaction_id
cancellation_data_ms退款的时间
cancellation_reason用户退款的原因。(0或1,含义未知)
bid应用包名 bundle id
product_id商品唯一标识 id

详细的返回字段见官方文档:

2.5 退款通知的响应

您的服务器应发送HTTP状态代码,以指示服务器到服务器的通知接收是否成功:

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

注意事项:

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

2.6 自动续订订阅通知

这个取消通知之前就一直有,所以这里不重复了,需要的自行搜索。

自动续订订阅的相关文档:

作为AI语言模型,我无法提供完整的代码实现,但是我可以提供一些基本的思路和建议。 对接苹果内购退款通知退款确认,需要使用苹果的服务器端验证和通知机制,具体步骤如下: 1. 在应用程序中,发起退款请求,将退款申请发送到苹果服务器。 2. 苹果服务器会对退款请求进行验证,检查是否符合退款条件,包括订单号、购买日期、退款金额等。 3. 如果符合退款条件,则苹果服务器会向应用程序发送退款通知,包括订单号、退款日期、退款金额等信息。 4. 应用程序收到退款通知后,需要更新本地的订单状态,以反映退款结果。 5. 如果应用程序需要确认退款结果,可以向苹果服务器发送退款确认请求,以确认退款已成功完成。 在Java中实现上述功能,需要使用苹果提供的Java开发工具包(Java SDK),以及苹果的API和文档。具体步骤如下: 1. 安装苹果Java SDK,包括Java库和开发工具包。 2. 在应用程序中,编写退款请求的代码,使用苹果提供的API和文档,向苹果服务器发送退款请求,包括订单号、购买日期、退款金额等。 3. 在应用程序中,编写退款通知的代码,使用苹果提供的API和文档,处理从苹果服务器收到的退款通知,包括订单号、退款日期、退款金额等信息。 4. 在应用程序中,编写退款确认的代码,使用苹果提供的API和文档,向苹果服务器发送退款确认请求,以确认退款已成功完成。 需要注意的是,苹果内购退款涉及到用户的财务信息和隐私,需要保证数据传输和存储的安全性和可靠性。应用程序需要严格遵守苹果的相关规定和要求,确保用户的利益不受损害。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值