iOS應用內支付(IAP)服務端端校驗詳解

IAP流程

IAP流程分爲兩種:服務器

一種是直接使用Apple的服務器進行購買和驗證,網絡

另外一種就是本身假設服務器進行驗證。因爲國內網絡鏈接Apple服務器驗證很是慢,並且也爲了防止黑客僞造購買憑證,通用作法是本身架設服務器進行驗證。app

下面咱們經過圖來看看兩種方式的差異:ide

使用Apple服務器


 

本身架設服務器


這裏重要主要講講服務端這一塊的校驗過程由於涉及到校驗合法性。
一、首先拿到客戶端的支付receiptData和transaction信息
二、服務端經過receiptData經過向蘋果服務器post數據發起校驗
三、服務端端對蘋果服務器響應數據作處理和校驗訂單的合法性。
三、若是訂單合法則對訂單作出相應處理。
附錄:
蘋果服務器響應體數據
{
"status": 0,
"environment": "Sandbox",
"receipt": {
"receipt_type": "ProductionSandbox",
"adam_id": 0,
"app_item_id": 0,
"bundle_id": "應用標識",
"application_version": "版本號",
"download_id": 0,
"version_external_identifier": 0,
"receipt_creation_date": "2017-07-13 08:33:57 Etc/GMT",
"receipt_creation_date_ms": "1499934837000",
"receipt_creation_date_pst": "2017-07-13 01:33:57 America/Los_Angeles",
"request_date": "2017-07-13 08:34:02 Etc/GMT",
"request_date_ms": "1499934842771",
"request_date_pst": "2017-07-13 01:34:02 America/Los_Angeles",
"original_purchase_date": "2013-08-01 07:00:00 Etc/GMT",
"original_purchase_date_ms": "1375340400000",
"original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles",
"original_application_version": "1.0",
"in_app": [
{
"quantity": "1",
"product_id": "",
"transaction_id": "",
"original_transaction_id": "",
"purchase_date": "2017-05-20 04:22:32 Etc/GMT",
"purchase_date_ms": "1495254152000",
"purchase_date_pst": "2017-05-19 21:22:32 America/Los_Angeles",
"original_purchase_date": "2017-05-20 04:22:32 Etc/GMT",
"original_purchase_date_ms": "1495254152000",
"original_purchase_date_pst": "2017-05-19 21:22:32 America/Los_Angeles",
"is_trial_period": "false"
},
{
"quantity": "1",
"product_id": "",
"transaction_id": "",
"original_transaction_id": "",
"purchase_date": "2017-05-20 04:28:32 Etc/GMT",
"purchase_date_ms": "1495254512000",
"purchase_date_pst": "2017-05-19 21:28:32 America/Los_Angeles",
"original_purchase_date": "2017-05-20 04:28:32 Etc/GMT",
"original_purchase_date_ms": "1495254512000",
"original_purchase_date_pst": "2017-05-19 21:28:32 America/Los_Angeles",
"is_trial_period": "false"
}
]
}
}
狀態說明
狀態碼 描述
21000 App Store沒法讀取你提供的JSON數據
21002 收據數據不符合格式
21003 收據沒法被驗證
21004 你提供的共享密鑰和帳戶的共享密鑰不一致
21005 收據服務器當前不可用
21006 收據是有效的,但訂閱服務已通過期。當收到這個信息時,解碼後的收據信息也包含在返回內容中
21007 收據信息是 測試用(sandbox),但卻被髮送到產品環境中驗證 21008 收據信息是產品環境中使用,但卻被髮送到測試環境中驗證
相關文章
相關標籤/搜索