首页 > 其他分享 >AppStore服务端通知(订阅/退款回调通知)

AppStore服务端通知(订阅/退款回调通知)

时间:2023-10-20 15:22:07浏览次数:36  
标签:订阅 续订 DID 通知 App AppStore Store 服务端

appStore 设置支付回调,通常支付回调称为notify

Notify一般会加密携带订单的支付数据,成功与否等,相当于给后端一个比较安全的确认,因为前端即时的反馈数据并不能保证绝对的可靠。 早前在做苹果的应用内支付的时候就对苹果没有回调通知感到很苦恼,因为确认只能自己从服务端向苹果发送验证请求,而且通常是要二次确认才能判断充值是否有效。

这次苹果更新了服务端通知功能,当然是用起来了。

这个功能的使用也是非常简单,苹果的要求有3点:

 

1. 服务器支持ATS访问

这个其实也就是后台的连接可以支持443( https: ) 方式访问

2. 配置一个用于接收POST消息的 URL

实际上就是提供一个POST接口地址专门用来接收苹果的消息通知 譬如说 举个例子: https://api.shezw.com/notify/appstore

3. 在App Store Connect中配置对应的URL

这个比较简单,打开App Store connect,在 应用 > App信息 > 综合信息 > App Store 服务器通知网址 (URL)中填入上面的URL就可以了

 

 

首先看一下,通知类型:

notification_type

/*
CANCEL
表示Apple客户支持取消了订阅或用户升级了订阅。 cancel_date键包含更改的日期和时间。

DID_CHANGE_RENEWAL_PREF
指示客户对其订购计划进行了更改,该更改在下一次续订时生效。当前有效的计划不受影响。

DID_CHANGE_RENEWAL_STATUS
指示订阅续订状态的更改。在JSON响应中,检查auto_renew_status_change_date_ms以了解上一次状态更新的日期和时间。检查auto_renew_status以了解当前的续订状态。

DID_FAIL_TO_RENEW
表示由于计费问题而无法续订的订阅。检查is_in_billing_retry_period以了解订阅的当前重试状态。如果订阅处于计费宽限期内,请检查grace_period_expires_date以了解新服务的到期日期。

DID_RECOVER
表示成功的自动更新已过期的订阅,而该订阅过去无法更新。检查expires_date,以确定下一个续订日期和时间。

DID_RENEW
表示客户的订阅已成功自动续订了新的交易期。

INITIAL_BUY
在用户最初购买订阅时发生。通过在App Store上对其进行身份验证,可以将Latest_receipt作为令牌存储在服务器上,以随时验证用户的订阅状态。

INTERACTIVE_RENEWAL
指示客户使用您的应用程序界面或在该帐户的“订阅”设置中的App Store上以交互方式续订了订阅。立即提供服务。

PRICE_INCREASE_CONSENT
表示App Store已开始要求客户同意您的应用的订阅价格上涨。在Unified_receipt.Pending_renewal_info对象中,price_consent_status值为0,表示App Store正在征求客户的同意,但尚未收到。除非用户同意新价格,否则订阅不会自动续订。当客户同意提价时,系统将price_consent_status设置为1。使用verifyReceipt检查收货以查看更新的价格同意状态。

REFUND
表示App Store成功退还了一笔交易。 cancel_date_ms包含已退款交易的时间戳。 original_transaction_id和product_id标识原始交易和产品。 cancel_reason包含原因。

RENEWAL (在沙盒中弃用)
表示成功的自动更新已过期的订阅,而该订阅过去无法更新。检查expires_date,以确定下一个续订日期和时间。此通知在沙箱环境中已弃用,计划于2021年3月在生产中弃用。更新现有代码以改为依赖DID_RECOVER通知类型。

REVOKE 撤销
表示用户不再可以通过“家庭共享”获得应用内购买。当购买者禁用产品的家庭共享,购买者(或家庭成员)离开家庭组或购买者要求并收到退款时,StoreKit会发送此通知。您的应用程序还将收到PaymentQueue(_:didRevokeEntitlementsForProductIdentifiers :)调用。有关家庭共享的更多信息,请参阅在应用程序中支持家庭共享。
*/

 

标签:订阅,续订,DID,通知,App,AppStore,Store,服务端
From: https://www.cnblogs.com/zhaoyingjie/p/17777180.html

相关文章

  • 通知|2023年8月PMP认证考试成绩公布啦!
    2023年8月PMP®、PMI-ACP®、PMI-PBA®、PgMP®考试终于公布啦! 从2023年10月16日(美国东部时间)开始,2023年8月中国大陆考试的成绩将于大约一周内上传到PMI网站! 成绩是分批出的,如果暂时没查到成绩的同学请耐心等待,预计一周内成绩会全部出来。  如何查询考试成绩?1、收到PMI邮件提......
  • python request向服务端发送文件
    本篇文章主要介绍1.如何使用pythonrequest向服务端发送文件2.服务端如何接收文件3.服务端如何发送文件如何使用pythonrequest向服务端发送文件request.post可以发送file类型deffoo():local_url="http://127.0.0.1:5000/test_api"file={'video':open("......
  • xcode15在appstore上显示的更新日志-机翻
    swiftmacrosupportbringsinlineexpansionsandbreakpointdebugginginthesourceeditorGitstaginghelpscraftyournextcommitwithoutleavingyourcodeStringcatalogsstreamlinelocalizationwithasingleplacetoviewandeditstringsBookmarkshe......
  • IntelliJ IDEA 连接远程 Docker 服务端
    IntelliJIDEA连接远程Docker服务端 一、背景说明在使用IntelliJIDEA做Java项目开发时,如果需要将服务打包,根据Dockerfile生成镜像,并上传到远程Linux服务器上,并部署运行容器。可以将打好的工程jar包先上传在Linux服务器上,执行Dockerfile文件,生成镜像,然后运行......
  • 【WCH蓝牙系列芯片】-基于CH582开发板—从机主动使能通知(notify)
    -------------------------------------------------------------------------------------------------------------------------------------在EVT例程BLE-UART蓝牙透传功能中,通过串口发送数据至蓝牙时,每次需要开启notify,才能接受新的数据。当串口向蓝牙发送数据后,再打开notif......
  • 金蝶云星空,采购单下推收货通知单没有收料组织、采购组织问题:未启用库存管理
          ......
  • libevent简单服务端和客户端实现
    1.生成动态库说明在开始使用之前,我们需要先搞清楚libevent编译生成的各个动态库的作用。在下载libevent源码包进行编译以后,当前目录生成.libs目录,该目录下是所有的目标文件,这里我们只说明个动态库so文件的作用,通过makefile我们可以知道各个动态库包含内容:下面使用libevent实......
  • 封装利用libwebsockets写出的客户端、服务端程序为客户端服务端类
    1.封装我们后续将使用c++来开发程序,因此有必要将用c写成的wss客户端、服务端程序作进一步封装,使其成为wss客户端类和服务端类,这样更便于调用。封装后的程序结构: ubuntu@ubuntu-virtual-machine:~/work/test_libwebsockets/lws_class$tree .├──client│  ├──cl......
  • 传奇服务端Mirserver功能讲解
    DBServer(数据库服务端)ConnectionFDB(人物数据库,数据库格式为传奇自定义格式)Log(角色选择服务端日志)AddrTable.txt(IP地址配置)!IdList.txt(缴费账号列表,!Setup.exe中ServiceMode=TRUE时起作用)!ServerInfo.txt(IP地址配置)DBServer.exe(数据库主程序)DBSrc.ini(数据库主程序配......
  • 搭建游戏服务端初始准备
    1.  开发游戏服务端,一般会从编写联网的程序着手,因为游戏服务端最重要的任务是处理网络请求。尽管网络编程很重要,但从“学以致用”的角度来看,先“不择手段”(用现成的库)把游戏做出来,再深入了解,也未尝不可。......