1.验证苹果receipt接口
- 请求方式 post Content-Type: application/json
- 测试环境url https://sandbox.itunes.apple.com/verifyReceipt
- 正式环境url https://buy.itunes.apple.com/verifyReceipt
- 请求参数:
请求参数 | 参数类型 | 是否必须 | 描述 |
---|---|---|---|
receipt-data | string | 是 | Base64-encoded receipt data |
password | string | 否 | 有订阅商品的时候必须有该参数,共享秘钥 |
exclude-old-transactions | boolean | 否 | 专门给订阅商品使用 |
- 响应参数:
{
"environment": "Sandbox", //Sandbox, Production
"receipt": {
"adam_id": 0,
"app_item_id": 0,
"application_version": "2.0.6",
"bundle_id": "com.appstoreMJB.mobao", //包名
"download_id": 0,
"in_app": [{
"is_trial_period": "false",
"original_purchase_date": "2019-10-25 01:07:14 Etc/GMT",
"original_purchase_date_ms": "1571965634000",
"original_transaction_id": "1000000583857816", //原始交易id
"product_id": "com.wha.***.6",
"purchase_date": "2019-10-25 01:07:14 Etc/GMT",
"purchase_date_ms": "1571965634000",
"quantity": "1", //购买数量
"transaction_id": "1000000583857816" //交易id唯一
}],
"original_application_version": "1.0",
"original_purchase_date": "2013-08-01 07:00:00 Etc/GMT",
"original_purchase_date_ms": "1375340400000",
"receipt_creation_date": "2019-10-25 01:07:14 Etc/GMT",
"receipt_creation_date_ms": "1571965634000",
"receipt_type": "ProductionSandbox",
"request_date": "2019-10-25 01:07:16 Etc/GMT",
"request_date_ms": "1571965636457",
"version_external_identifier": 0
},
"status": 0 //0成功 其他失败
}
- 官方文档 https://developer.apple.com/documentation/appstorereceipts/verifyreceipt
2.接收解析v1版本苹果通知(订阅,退款)
基本步骤
- 1.苹果后台创建订阅商品,创建共享密钥password
- 2.苹果后台配置通知自己服务器地址url
- 3.解析苹果通知,开发自己的逻辑(主要编程部分)
1.苹果后台创建订阅商品
苹果后台创建商品列表的上方,就会有创建共享密钥的按钮,只有拥有该权限的人才能看到,重点来了,创建了共享密钥,在验证苹果收据的时候所有的商品都要增加参数,把收据和共享密钥都要发到苹果服务器进行验证,共享密钥作用于所有商品。
进入苹果后台-管理-创建共享密钥,后台地址 https://appstoreconnect.apple.com/apps
2.苹果后台配置通知地址url(v1版本)
苹果所有的通知都会发送到这个url,包括退款,订阅续订,取消订阅等,参数都在请求体里面,数据格式为json格式,使用@RequestBody接收。进入后台-信息-服务器通知地址。参考官方文档 https://help.apple.com/app-store-connect/#/dev0067a330b
3.解析苹果通知(重点)
通知样例如下,详细参数请见官方文档 https://developer.apple.com/documentation/appstoreservernotifications/responsebodyv1
{
"environment":"sandbox", //环境
"notification_type":"REFUND", //通知类型
"password":"aaaaaaaa", //共享秘钥
"bid":"afafsdf.com", //包名
"auto_renew_status":"false", //续期状态
"unified_receipt":{ //需要解析的数据
"status":"0", //通知状态,0有效,其他无效
"latest_receipt_info": [
{
"cancellation_date_ms":"15016625461111", //退款时间毫秒级
"cancellation_reason":"1", //退款原因
"original_transaction_id":"1000000321215919", //原始交易id
"product_id":"aadfasdfsdfasdf", //商品id
"expires_date_ms":"15554554454", //续订过期时间
"transaction_id":"10005877888478" //交易id
},
{
...
}
]
}
}
notification_type:
INITIAL_BUY : 初次购买(可不解析)
DID_RENEW : 订阅成功自动续订
DID_RECOVER : 自动恢复续订
INTERACTIVE_RENEWAL : 用户手动恢复续订
CANCEL : 取消订阅
REFUND : 退款
4.测试对应的时间段
实践时限 | 测试时限 |
---|---|
1周 | 3分钟 |
1个月 | 5分钟 |
2个月 | 10分钟 |
3个月 | 15分钟 |
6个月 | 30分钟 |
1年 | 60分钟 |
苹果中文文档 https://developer.apple.com/cn/documentation/