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


IAP流程

IAP流程分為兩種:

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

另一種就是自己假設服務器進行驗證。由於國內網絡連接Apple服務器驗證非常慢,而且也為了防止黑客偽造購買憑證,通用做法是自己架設服務器進行驗證。

下面我們通過圖來看看兩種方式的差別:

使用Apple服務器


 

自己架設服務器


這里重要主要講講服務端這一塊的校驗過程因為涉及到校驗合法性。
1、首先拿到客戶端的支付receiptData和transaction信息
2、服務端通過receiptData通過向蘋果服務器post數據發起校驗
3、服務端端對蘋果服務器響應數據做處理和校驗訂單的合法性。
3、如果訂單合法則對訂單做出相應處理。
附錄:
蘋果服務器響應體數據
{
"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 收據信息是產品環境中使用,但卻被發送到測試環境中驗證


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM