1. 程式人生 > >iOS應用內支付(IAP)服務端端校驗詳解

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

imageview sof 客戶端 標識 知識庫 ndb json replace undle

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 收據信息是產品環境中使用,但卻被發送到測試環境中驗證

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