关于苹果内购商品退款的开发联调
苹果在今年6月的开发者大会上宣告支持普通商品的退款回调服务,只需要在开发者后台配置回调网址即可收到退款通知
由于中文资料的缺失直到最近才解决了这个问题。整理资料如下
nginx收到数据日志格式如下:
[2020-12-26T02:43:30+00:00] - 28.188.206.127 - 0.176 - 404 - xxxx.xxx.com - [POST /api/applepay/callback] - [41] - 172.18.0.5:9000 - 0.013 - "PostmanRuntime/7.26.8" - [{
"notification_type": "REFUND",
"password": "xxx",
"environment": "PROD",
"latest_receipt": "xxxxxx=",
"latest_receipt_info": {
"cancellation_reason": "0",
"is_trial_period": "false",
"is_in_intro_offer_period": "false",
"unique_identifier": "xxxx",
"unique_vendor_identifier": "xxxx",
"cancellation_date": "2020-12-24 23:32:42 Etc/GMT",
"cancellation_date_ms": "1608852762000",
"cancellation_date_pst": "2020-12-24 15:32:42 America/Los_Angeles",
"purchase_date": "2020-12-22 02:18:01 Etc/GMT",
"purchase_date_ms": "1608603481000",
"purchase_date_pst": "2020-12-21 18:18:01 America/Los_Angeles",
"original_purchase_date": "2020-12-22 02:18:01 Etc/GMT",
"original_purchase_date_ms": "1608603481000",
"original_purchase_date_pst": "2020-12-21 18:18:01 America/Los_Angeles",
"item_id": "14643xxx06268",
"app_item_id": "xxxx",
"version_external_identifier": "839621918",
"bid": "xxxx",
"product_id": "xxxx",
"transaction_id": "xxxxxx",
"original_transaction_id": "xxx",
"quantity": "1",
"bvrs": "1.0.68",
"in_app_ownership_type": "PURCHASED"
},
"unified_receipt": {
"status": 0,
"environment": "Production",
"latest_receipt_info": [
{
"quantity": "1",
"product_id": "xxx",
"transaction_id": "490000728536895",
"purchase_date": "2020-12-25 13:46:15 Etc/GMT",
"purchase_date_ms": "1608903975000",
"purchase_date_pst": "2020-12-25 05:46:15 America/Los_Angeles",
"original_purchase_date": "2020-12-25 13:46:15 Etc/GMT",
"original_purchase_date_ms": "1608903975000",
"original_purchase_date_pst": "2020-12-25 05:46:15 America/Los_Angeles",
"is_trial_period": "false",
"original_transaction_id": "490000728536895",
"in_app_ownership_type": "PURCHASED"
}
],
"latest_receipt": "x/QaiaDyEO2rpzGU+12TZ/x+9jVcZ5+x+x+DhYR/rG8tC+x/x/Zyq6qmL2yEez+kmc="
},
"bid": "xxxx",
"bvrs": "1.0.68"
}] - [] - ""
苹果直接以post json形式发送数据过来,接收后注意判断环境及receipt数据
latest_receipt_info中如果是退款的订单会返回cancellation_date等字段,可以作为判断是否退款的依据
总体来说,苹果难得的开放了这部分接口,但对开发者仍然不够友好。
没有开发环境,只能靠用户真实的退款后收到数据做参考,否则你在文档里连一个请求的完整参考示例都没有,很难保证上线不出问题。
另外这个数据苹果应该没有重发机制,可能会导致用户退款的没有处理的情况。
发布于 2020-12-26 13:09