苹果自动续签是很大的坑,不会自动通知后端

第一次购买苹果自动续签商品时,校验通过后返回的数据结构

{

"latest_receipt": "*****",

"latest_receipt_info": {

"original_purchase_date_pst": "2020-01-17 23:57:08 America\/Los_Angeles",

"quantity": "1",

"subscription_group_identifier": "20588826",

"unique_vendor_identifier": "0B78F3A0-FECF-4FBC-9F48-59BEFE8418E0",

"original_purchase_date_ms": "1579334228000",

"expires_date_formatted": "2020-01-18 08:02:07 Etc\/GMT",

"is_in_intro_offer_period": "false",

"purchase_date_ms": "1579334227000",

"expires_date_formatted_pst": "2020-01-18 00:02:07 America\/Los_Angeles",

"is_trial_period": "false",

"item_id": "1494425169",

"unique_identifier": "6f68a698a2b0c2e3fc92618f94b561e5e8def646",

"original_transaction_id": "1000000616612083",

"expires_date": "1579334527000",

"transaction_id": "1000000616612083",

"bvrs": "1",

"web_order_line_item_id": "1000000049649460",

"version_external_identifier": "0",

"bid": "com.Anyue.Cleaner",

"product_id": "m1",

"purchase_date": "2020-01-18 07:57:07 Etc\/GMT",

"purchase_date_pst": "2020-01-17 23:57:07 America\/Los_Angeles",

"original_purchase_date": "2020-01-18 07:57:08 Etc\/GMT"

},

"environment": "Sandbox",

"auto_renew_status": "true",

"password": "086b56c6662b4d13b546fec06d14b0cb",

"auto_renew_product_id": "m1",

"notification_type": "INITIAL_BUY"

}

1,首先用户第一次购买订阅,苹果会通知服务端,其中notification_type 对应值为 INITIAL_BUY,保存起来在数据表中,苹果坑就坑在第二次第三次自动订阅是不会有回调的

2,服务器做计划任务每天定期向苹果服务器检测(下面代码),通过latest_receipt检测目前已有的所有订阅订单是否过期,如果发现过期了,就去苹果服务器验证receipt,其中苹果返回的latest_receipt_info 字段,会告诉最新的订阅订单情况,你可以校验expires-date与当前时间比较,判断该订阅有没有续订成功,并同时更新上述让记录的record_expires_date字段.

/**IOS内购验证票据

* @param string $receipt_data 付款后凭证

* @param bool $sandbox 是否为沙盒

* @param bool $transactions 自动续订是必须为true

* @return mixed

*/

public function validate_applepay($receipt_data,$sandbox=true,$transactions=true)

{

$jsonData = array('receipt-data' => $receipt_data, 'password' => config('apple_pay')['password'],'exclude-old-transactions'=>$transactions);

$post_json = json_encode($jsonData);

$url=$sandbox===true?"https://sandbox.itunes.apple.com/verifyReceipt":"https://buy.itunes.apple.com/verifyReceipt";

$client=new Client(['verify' => false]);

$response= $client->post($url,[

'body'=>$post_json,

'headers' => [

'Content-Type' => 'application/json'

]

]);

$result= (string)$response->getBody()->getContents();

$res= json_decode($result, true);

if (intval($res['status']) == 0) { //验证成功

//校验通过后的处理

}

}

苹果服务器会在订阅过期的前一天,对用户进行自动扣费,如果扣费成功了,苹果服务器并不会通知我们的服务器,这是重点。不过有个特例,如果苹果订阅过期前一天扣费失败了,苹果服务器后面几天还会尝试对用户自动扣费,如果后面扣费成功了(这时候用户实际状态是没有续订成功),苹果会通知我们的server的,其中notification_type 对应值为 RENEWAL,对于RENEWAL我们还是需要给用户更新为正在订阅的状态。

正式环境下,用户主动取消订阅,苹果会通知我们的server的,其中notification_type 对应值为 CANCEL,我们需要更新用户订阅的状态为取消。

总结,对于自动续订订阅,我们自己的服务器完全可以与apple server的交互应对用户的订阅状态,只需要确定客户端传来的用户第一次购买, user id 对应 original-transaction-id的关系。后面的续订,取消,变更套餐,完全不依赖于客户端传来的信息。

php扣费到期自动续期,PHP 处理苹果的自动续签相关推荐

  1. 如何关闭苹果手机自动扣费_手机下载软件,岂料每月自动扣费?快看你手机有没有...

    如今走在马路上 随便一看 就是一大堆低头族 正在玩手机 说句实话 手机其实没啥好玩 但好玩的是 各色各样的app 玩游戏.逛某宝 叫外卖.刷某音 -- 不过,手机应用市场 "鱼龙混杂&quo ...

  2. 如何关闭苹果手机自动扣费_怎么关闭绑定wx扣款的自动续费和免密支付功能(以苹果手机为例)...

    前言 你是否有以下困扰: 1.开通某网站会员,为了享受优惠而选择连续包月,开通后在取消连续包月: 2.苹果app store应用商城购买付费软件或游戏和滴滴打车开通了免密支付,现在想关闭: 3.长期开 ...

  3. 如何关闭苹果手机自动扣费_教你关闭苹果手机系统的自动更新功能,旧手机还能再用几年!...

    大家都知道,苹果手机在更新几个大版本后,手机不是变得非常卡,就是非常的耗电,大大的缩短了手机的使用寿命. 所以,许多人都不会选择更新系统,但是手机只要连上WiFi并且在充电状态,就会在半夜自动更新系统 ...

  4. 如何关闭华为自动杀进程_手机自动扣费该如何删除,教你正确关闭,我们要知道!...

    手机自动扣费该如何删除,教你正确关闭,我们要知道! 随着社会的不断发展扩张,技术的进步和经济的发展都让人们的生活有了很大的改观.大家会发现,人们的生活方式较以前有了很大的改变,像出行方面随着打车APP ...

  5. 如何关闭苹果手机自动扣费_手机自动扣费?三招教你关闭

    前几天,小宁君翻翻自己"自动续费"的扣款记录,突然发现我去年订视频网站VIP包月,费用一直在扣. 刚开始都是首月只要几元,看着好便宜就开通了,结果自动续费就开始了,都忘记使用这个视 ...

  6. 如何关闭苹果手机自动扣费_如何解决手机App自动扣费?你被无脑自动扣费过么?...

    你被自动扣费过么? 今天跟大家分享的技巧是,教你如何关闭手机App自动续费扣费. 相信不少朋友都有购买付费会员或者开启免密支付的经历,现在很多App的付费订阅功能也都很智能:在你购买一个月的情况下,可 ...

  7. 怎么关闭苹果手机自动扣费_iPhone 关闭支付宝自动扣费服务提示“无法解约”怎么办?...

    有很多 iPhone 用户会通过支付宝购买应用.订阅服务或在应用内购买,当不想再使用支付宝.或为了防止盗刷,可以前往支付宝"设置"-"支付设置"-"免 ...

  8. 收到银行短信你正在使用Android设备,手机收到扣费短信,无故被扣钱?小心自动订阅的大坑!...

    原标题:手机收到扣费短信,无故被扣钱?小心自动订阅的大坑! 近日,全国数家音视频网站被约谈,要求整改取消默认自动续费条约等. 现在的付费方式越来越多,也越来越方便,而后衍生的自动订阅付费更是让人防不胜 ...

  9. ios自动订阅服务器,iOS IAP - 自动续期订阅

    自动续期订阅是苹果推出的一项苹果内购服务,当用户在App Store订阅了某项服务后,App Store会在订阅时间快到期之前,自动扣费并帮用户续订该服务. 自动续期订阅的优势 创建自动续期订阅 1. ...

最新文章

  1. 哪些人适合学习软件测试
  2. 基于(Mixed)Integer Programming方法的服务组合相关论文实验介绍 (1)
  3. redis中的intset
  4. Apache下部署Django 的样式问题
  5. 直播预告丨基于 SDAF 闭环制胜 2022 数字化运营
  6. 算法学习之路|打印排名
  7. 阮一峰react demo代码研究的学习笔记 - demo7 debug - create ref element
  8. 自省:我为什么没有成功--对照35前务必完成的12跳
  9. X86Windows 相关链接....持续更新中....
  10. visio防火墙可以连接什么_分享一款网工必备网络拓扑图绘制工具Visio以及大量厂商图标库...
  11. 前端JS-页面延迟刷新
  12. 怎么设置计算机语言中文,Windows10 IE11浏览器怎么把默认语言设置为中文
  13. 空降如何快速融入接管团队
  14. R语言使用t.test函数执行t检验获取总体平均值的置信区间(默认输出结果包括95%置信水平的置信区间)
  15. linux cpu 时间,【Linux】CPU时间与处理器耗时
  16. 用什么软件可以记录并提醒每天的工作任务?
  17. 大龄程序员的前途令人担忧
  18. ITBP 是什么职位?
  19. Verilog学习笔记——04——补码转换器、七段译码器
  20. [Audio]基础声电-THD分析

热门文章

  1. Vertica—操作汇总
  2. Android终端实现个人中心界面
  3. 杨叔子院士:人生在勤,贵在励志
  4. skinme找不到java_配置forge后,无法获取依赖
  5. 传统图像去噪方法(三)之非局部均值去噪(NLM)
  6. MIMO-OFDM无线通信技术及MATLAB实现(3)MIMO信道模型
  7. 深入探析CAN收发器各项参数
  8. 浅析微营销的几个成功模式
  9. 关于飞塔防火墙做端口聚合的时候应该如何选择端口可以达到最好效果。
  10. 【医学图像分割】CT医学图像的预处理(重采样)