背景

最新的WWDC2020苹果爸爸终于添加一个功能,就是可以实时的推送退款订单号给开发者,以便开发即使针对玩家退款做处理,减少损失,这个功能一出,我也第一时间研究了一番,这里也跟大家分享下

如何配置

苹果爸爸给出推送退款的功能,是 server to server,所以我们需要将接收退款通知推送的接口填入苹果后台

位置如下

只要这个接口请求的时候不会报404,503,500这一类的错误,正常返回200就行

数据结构

我这边已经抓到了苹果退款的数据,数据格式如下,供大家参考,具体字段意思可以查看苹果文档:https://developer.apple.com/documentation/appstoreservernotifications

{
    "notification_type": "REFUND",
    "password": "",
    "environment": "PROD",
    "latest_receipt": "",
    "latest_receipt_info": {
        "cancellation_reason": "0",
        "is_trial_period": "false",
        "is_in_intro_offer_period": "false",
        "unique_identifier": "",
        "unique_vendor_identifier": "",
        "cancellation_date": "2020-06-29 14:53:14 Etc/GMT",
        "cancellation_date_ms": "1593442394000",
        "cancellation_date_pst": "2020-06-29 07:53:14 America/Los_Angeles",
        "purchase_date": "2020-05-15 09:28:35 Etc/GMT",
        "purchase_date_ms": "1589534915000",
        "purchase_date_pst": "2020-05-15 02:28:35 America/Los_Angeles",
        "original_purchase_date": "2020-05-15 09:28:35 Etc/GMT",
        "original_purchase_date_ms": "1589534915000",
        "original_purchase_date_pst": "2020-05-15 02:28:35 America/Los_Angeles",
        "item_id": "",
        "app_item_id": "",
        "version_external_identifier": "",
        "bid": "",
        "product_id": "",
        "transaction_id": "",
        "original_transaction_id": "",
        "quantity": "1",
        "bvrs": ""
    },
    "unified_receipt": {
        "status": 0,
        "environment": "Production",
        "latest_receipt_info": [
            {
                "quantity": "1",
                "product_id": "",
                "transaction_id": "",
                "purchase_date": "2020-05-15 09:30:02 Etc/GMT",
                "purchase_date_ms": "1589535002000",
                "purchase_date_pst": "2020-05-15 02:30:02 America/Los_Angeles",
                "original_purchase_date": "2020-05-15 09:30:02 Etc/GMT",
                "original_purchase_date_ms": "1589535002000",
                "original_purchase_date_pst": "2020-05-15 02:30:02 America/Los_Angeles",
                "is_trial_period": "false",
                "original_transaction_id": "",
                "cancellation_date": "2020-06-29 14:53:14 Etc/GMT",
                "cancellation_date_ms": "1593442394000",
                "cancellation_date_pst": "2020-06-29 07:53:14 America/Los_Angeles",
                "cancellation_reason": "0"
            }
        ],
        "latest_receipt": ""
    },
    "bid": "",
    "bvrs": ""
}

主要是先判断notification_type是否为REFUND,然后拿外层的 latest_receipt_info里的original_transaction_id字段来去自己订单库里找对应的苹果订单,这样就能知道是哪个用户退款,并对其做相应的资源追回,减少损失,甚至于可以针对有恶意刷退的黑产进行风控,终于可以狠狠的打击这些黑产刷退薅羊毛的工作室了

附上苹果相关文档

新发布的功能文档:https://developer.apple.com/news/

如何配置接收通知文档:https://developer.apple.com/documentation/storekit/in-app_purchase/subscriptions_and_offers/enabling_server-to-server_notifications

这里其实和订阅是一样操作的,接收推送的地址和接收订阅通知的填写地址也是一样的,所以这个接收通知的接口要对notification_type 这个字段进行判断并区分是哪种回调,然后用不同方式处理数据

如何处理通知:https://developer.apple.com/documentation/storekit/in-app_purchase/handling_refund_notifications

喜大普奔,苹果可以推送退款通知了相关推荐

  1. 苹果正式推送iPadOS 13.1、iOS 13.1,修复大量Bug,速升!

    在iOS 13正式推送几天后,今日凌晨,苹果终于推送了iPadOS 13.1正式版操作系统.iPadOS是一款专门针对iPad所推出的操作系统,虽然和iOS有着千丝万缕的联系,但苹果还是特别针对iPa ...

  2. 手把手教你配置苹果APNS推送服务|钿畑的博客 | 钿畑的博客

    http://www.360doc.com/content/15/0118/17/1073512_441822850.shtml# 钿畑的文章索引 1. 什么是推送通知 2. 什么是APNS? 3. ...

  3. 手把手教你配置苹果APNS推送服务

    1. 什么是推送通知 消息通知分本地通知和远程推送通知,是没有运行在前台的应用程序可以让它们的用户获得相关消息通知的方式.消息通知可能是一条消息,即将发生的日历事件,或远程服务器的新数据.当被操作系统 ...

  4. 苹果消息推送服务教程:第二部分(共2部分)

    这篇文章还可以在这里找到 英语 Create a simple chat app with Apple Push Notification Services! 这个教程的原作者是Matthijs Ho ...

  5. 苹果消息推送服务教程:第一二部分(共2部分)

    苹果消息推送服务教程:第一部分(共2部分) 转自 http://www.raywenderlich.com/zh-hans/24732/苹果消息推送服务教程:第一部分(共2部分) 这是iOS教程团队的 ...

  6. 苹果消息推送服务教程:第2部分(共2部分)

    苹果消息推送服务教程:第2部分(共2部分) 转自 http://www.raywenderlich.com/zh-hans/24733/苹果消息推送服务教程:第而部分(共2部分) 这个教程的原作者是M ...

  7. 苹果消息推送服务教程:第一部分(共2部分)

    这篇文章还可以在这里找到 英语 Learn how to add Push Notifications into your iPhone app! 这是iOS教程团队的Matthijs Hollema ...

  8. python http2_实战 | Python使用HTTP2实现苹果原生推送

    原标题:实战 | Python使用HTTP2实现苹果原生推送 本文约 4405 字,读完可能需要 6 分钟. 作者:风中纸鸢 原文: 说起苹果的推送,可能很多开发人员就开始头疼了,因为实现苹果推送服务 ...

  9. android与苹果 推送,科普下安卓和苹果的推送区别

    看到很多人说苹果推送比安卓好太多,安卓关掉app就没法收到推送消息,作为从业者,来给大家科普下安卓和苹果的推送区别. 首先上苹果推送的整体流程图 简单描述一下,开发者先接入苹果推送服务,有消息需要推送 ...

最新文章

  1. 介绍下计算机的一些常识?
  2. P3321 [SDOI2015]序列统计
  3. flash cs 3组件学习笔记
  4. java报错 日志_java 日志报错
  5. 终于,我读懂了所有Java集合——List篇
  6. python实例 优化目标函数_Scipy优化算法--scipy.optimize.fmin_tnc()/minimize()
  7. html5视频播放器隐藏控制,HTML5 video标签(播放器)学习笔记(二):播放控制
  8. python标准库math用法精要
  9. linux系统redis单机版安装及设置解决DENIED Redis is running in protected mode because protected mode is enabled问题
  10. 短视频聚合直播app源码/软件系统开发方案
  11. mysql规格单位转化_存储单位的换算(KB, MB, GB)
  12. 【高级数据结构】线段树 | 求区间和
  13. 【转载】人工智能发展简史
  14. 汉语中的 熟语中的成语900个
  15. 有关3DES、DUKPT和MK/SK学习记录
  16. JAVA逻辑推理题1-谁是凶手
  17. uniapp/微信获取用户定位
  18. Linux kill 强制关闭 进程
  19. 《码农翻身》读后感---程序员的潜规则
  20. 《阿里巴巴全域数据建设》(实录/PPT干货)

热门文章

  1. 讨论SQLite数据库损坏与修复
  2. IDEA调整字体没反应?原地爆炸?
  3. C语言程序设计CAP——C语言学习笔记(七) 上
  4. Commonjs和Esmodule
  5. 删除含有某个字符的文件
  6. 循环、函数、对象-JS
  7. mediumtext java类型_编辑框不支持MEDIUMTEXT数据类型
  8. 人工智能-seaborn单双多变量绘图、两案例:NBA球员数据分析、北京租房数据统
  9. hap项目功能总结,以及技术注意点
  10. vnc linux新用户,realvnc linux,realvnc linux配置的8个步骤