ios 订阅类收据的服务器处理

先看苹果验证收据可能返回的错误码:

  • 21000App Store无法读取你提供的JSON数据
  • 21002 收据数据不符合格式
  • 21003 收据无法被验证
  • 21004 你提供的共享密钥和账户的共享密钥不一致
  • 21005 收据服务器当前不可用
  • 21006 收据是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中
  • 21007 收据信息是测试用(sandbox),但却被发送到产品环境中验证
  • 21008 收据信息是产品环境中使用,但却被发送到测试环境中验证

一个票据会有3中情况:

  1. 刚付费,有效状态
  2. 时间到了,没有续费,返回21006
  3. 时间到了后,又续费了,返回的为0,即使是之前返回21006 的老凭据,只要续费后也返回0

状态为0时的返回内容:

{
  "auto_renew_status": 1,
  "status": 0,
  "auto_renew_product_id": "mango_star_vip10",
  "receipt": {	//当前票据的信息
    "original_purchase_date_pst": "2019-08-14 01:28:54 America/Los_Angeles",
    "quantity": "1",
    "unique_vendor_identifier": "3873A4E2-FB10-4BA4-A24E-11C50E53BD4A",
    "bvrs": "1014",
    "expires_date_formatted": "2019-08-21 09:11:43 Etc/GMT",
    "is_in_intro_offer_period": "false",
    "purchase_date_ms": "1566378403000",
    "expires_date_formatted_pst": "2019-08-21 02:11:43 America/Los_Angeles",
    "is_trial_period": "false",
    "item_id": "1476506027",
    "unique_identifier": "7468f08dc6b0cb8fa02580c5f35ef943ff3ca6da",
    "original_transaction_id": "1000000557452125",
    "expires_date": "1566378703000",
    "transaction_id": "1000000559740927",
    "web_order_line_item_id": "1000000046388850",
    "version_external_identifier": "0",
    "bid": "mango.star.risingsun",
    "product_id": "mango_star_vip10",
    "purchase_date": "2019-08-21 09:06:43 Etc/GMT",
    "original_purchase_date": "2019-08-14 08:28:54 Etc/GMT",
    "purchase_date_pst": "2019-08-21 02:06:43 America/Los_Angeles",
    "original_purchase_date_ms": "1565771334000"
  },
  "latest_receipt_info": {	//最后一次购买的票据信息  主要处理这个结构体就可以了
    "original_purchase_date_pst": "2019-08-14 01:28:54 America/Los_Angeles",		第一次购买时间
    "unique_identifier": "81179dcc383d21f866ab314b1e57429d7cf86244",
    "original_transaction_id": "1000000557452125",	第一次购买订单号
    "expires_date": "1566378703000",			// 当前最终的过期时间
    "transaction_id": "1000000559740878",	// 最后一次订阅订单号
    "quantity": "1",	//商品数量
    "product_id": "mango_star_vip10",	商品名称, 跟后台一致
    "bvrs": "1014",
    "bid": "mango.star.risingsun",
    "unique_vendor_identifier": "B4418824-55B0-4D6C-B072-5B1CACB8801D",
    "web_order_line_item_id": "1000000046388850",
    "original_purchase_date_ms": "1565771334000",
    "expires_date_formatted": "2019-08-21 09:11:43 Etc/GMT",
    "purchase_date": "2019-08-21 09:06:43 Etc/GMT",
    "is_in_intro_offer_period": "false",
    "purchase_date_ms": "1566378403000",
    "expires_date_formatted_pst": "2019-08-21 02:11:43 America/Los_Angeles",
    "is_trial_period": "false",
    "purchase_date_pst": "2019-08-21 02:06:43 America/Los_Angeles",
    "original_purchase_date": "2019-08-14 08:28:54 Etc/GMT",
    "item_id": "1476506027"
  },
  "latest_receipt": "ewoxxxxx=="
}

状态为21006 的时候的返回内容:

{
  "auto_renew_status": 1,
  "latest_expired_receipt_info": {		最后一个过期的发票信息  如果之前续了 1月 2月  到了3月过期了,这里就是2月的信息
    "original_purchase_date_pst": "2019-08-14 01:28:54 America/Los_Angeles",
    "unique_identifier": "7468f08dc6b0cb8fa02580c5f35ef943ff3ca6da",
    "original_transaction_id": "1000000557452125",
    "expires_date": "1566377359000",
    "transaction_id": "1000000559728292",
    "quantity": "1",
    "product_id": "mango_star_vip10",
    "bvrs": "1014",
    "bid": "mango.star.risingsun",
    "unique_vendor_identifier": "412CFCEF-0DE0-458B-8743-BA78D7C3C183",
    "web_order_line_item_id": "1000000046385938",
    "original_purchase_date_ms": "1565771334000",
    "expires_date_formatted": "2019-08-21 08:49:19 Etc/GMT",
    "purchase_date": "2019-08-21 08:44:19 Etc/GMT",
    "is_in_intro_offer_period": "false",
    "purchase_date_ms": "1566377059000",
    "expires_date_formatted_pst": "2019-08-21 01:49:19 America/Los_Angeles",
    "is_trial_period": "false",
    "purchase_date_pst": "2019-08-21 01:44:19 America/Los_Angeles",
    "original_purchase_date": "2019-08-14 08:28:54 Etc/GMT",
    "item_id": "1476506027"
  },
  "status": 21006,
  "auto_renew_product_id": "mango_star_vip10",
  "receipt": {		本发票的信息
    "original_purchase_date_pst": "2019-08-14 01:28:54 America/Los_Angeles",
    "quantity": "1",
    "unique_vendor_identifier": "839FCCAF-5CF6-45CF-BFCA-2926D94B4DD6",
    "bvrs": "1014",
    "expires_date_formatted": "2019-08-21 08:49:19 Etc/GMT",
    "is_in_intro_offer_period": "false",
    "purchase_date_ms": "1566377059000",
    "expires_date_formatted_pst": "2019-08-21 01:49:19 America/Los_Angeles",
    "is_trial_period": "false",
    "item_id": "1476506027",
    "unique_identifier": "7468f08dc6b0cb8fa02580c5f35ef943ff3ca6da",
    "original_transaction_id": "1000000557452125",
    "expires_date": "1566377359000",
    "transaction_id": "1000000559734983",
    "web_order_line_item_id": "1000000046385938",
    "version_external_identifier": "0",
    "bid": "mango.star.risingsun",
    "product_id": "mango_star_vip10",
    "purchase_date": "2019-08-21 08:44:19 Etc/GMT",
    "original_purchase_date": "2019-08-14 08:28:54 Etc/GMT",
    "purchase_date_pst": "2019-08-21 01:44:19 America/Los_Angeles",
    "original_purchase_date_ms": "1565771334000"
  },
  "is_in_billing_retry_period": "1"
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
iOS开发中,触摸事件处理是非常重要的,因为用户与应用程序的交互主要是通过触摸屏幕来完成的。iOS提供了一整套触摸事件处理机制,包括手势识别、触摸事件响应等。下面我们来介绍一下iOS中常用的触摸事件处理方法。 1. 触摸事件响应方法 在iOS中,触摸事件主要由以下4个方法来响应: - touchesBegan:withEvent: //手指开始接触屏幕 - touchesMoved:withEvent: //手指在屏幕上移动 - touchesEnded:withEvent: //手指离开屏幕 - touchesCancelled:withEvent: //触摸事件取消 这些方法都在UIView中定义,所以如果你的应用程序需要响应触摸事件,你需要重写UIView的这些方法。 2. 手势识别器 在iOS中,手势识别器是一种非常方便的触摸事件处理方式。手势识别器可以识别出一些常用的手势,比如轻击、长按、拖动、捏合等等,并且可以通过回调方法来处理这些手势。 手势识别器有很多种,比如UITapGestureRecognizer、UILongPressGestureRecognizer、UIPanGestureRecognizer、UIPinchGestureRecognizer等等。使用手势识别器可以让你的应用程序更加灵活,同时也可以提高用户体验。 3. 响应者链 在iOS中,事件的传递是通过响应者链来完成的。当用户发生了触摸事件时,事件会从最上层的UIWindow开始传递,直到找到第一个响应该事件的对象。如果没有任何对象响应该事件,事件就会被丢弃。 因此,在处理触摸事件时,你需要注意响应者链的结构,确保事件能够正确地传递到你想要处理事件的对象。 总之,在iOS开发中,触摸事件处理是一个非常重要的部分,需要我们认真对待。通过合理地使用触摸事件处理方法和手势识别器,我们可以为用户提供更加灵活、友好的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值