1.苹果服务器存在不稳定现象,客户端在用户支付后往往没办法马上拿到receipt,通常会在苹果服务器稳定之后并且用户再次登录时,苹果服务器再推送之前没有推送的receipt
2.系统架构逻辑如下,客户端存在一个队列,存储平台订单信息和receipt,平台订单与receipt一一对应。
正常的支付流程,用户创建平台订单,支付,客户端获得苹果的receipt,将平台订单号与receipt共同发回给平台服务器,发货。
当苹果服务器不稳定时,用户创建平台订单,支付,客户端无法获得苹果的receipt,阻塞队列,阻止用户创建第二笔平台订单。待苹果服务器稳定后,用户重新登录,客户端获得苹果的receipt,将平台订单号与receipt共同发回给平台服务器,发货。
但以上有两个缺陷,当用户卸载客户端后会丢失平台订单信息,阻塞操作影响用户充值
3.综上,无论是取消阻塞操作还是丢失平台订单信息后,都需要从苹果那里拿到与平台订单相关的信息,问,如何获取?
扩展阅读
①receipt相关知识
②解压后的receipt demo
{
"receipt": {
"original_purchase_date_pst": "2017-03-31 04:04:09 America/Los_Angeles",
"unique_identifier": "5a972c9ff76b8d07d5f9c45accc4438a68123456",
"original_transaction_id": "330000215123456",
"bvrs": "2.4",
"app_item_id": "1126123456",
"transaction_id": "330100215123456",
"quantity": "1",
"unique_vendor_identifier": "1776055D-0F28-498F-A872-683A8D123456",
"product_id": "N3",
"item_id": "1147123456",
"version_external_identifier": "819123456",
"bid": "com.demo.test.bid",
"purchase_date_ms": "1490958249000",
"purchase_date": "2017-03-31 11:04:09 Etc/GMT",
"purchase_date_pst": "2017-03-31 04:04:09 America/Los_Angeles",
"original_purchase_date": "2017-03-31 11:04:09 Etc/GMT",
"original_purchase_date_ms": "1490958249000"
},
"status": 0
}