ios 蘋果內購訂單驗證 --- php實現


驗證函數:

function appleVerify($receipt_data,$orderId = 0)
{
    /*
     * 21000 App Store不能讀取你提供的JSON對象
     * 21002 receipt-data域的數據有問題
     * 21003 receipt無法通過驗證
     * 21004 提供的shared secret不匹配你賬號中的shared secret
     * 21005 receipt服務器當前不可用
     * 21006 receipt合法,但是訂閱已過期。服務器接收到這個狀態碼時,receipt數據仍然會解碼並一起發送
     * 21007 receipt是Sandbox receipt,但卻發送至生產系統的驗證服務
     * 21008 receipt是生產receipt,但卻發送至Sandbox環境的驗證服務
     * $receipt_data 蘋果返回的支付憑證
     * 正式 : https://buy.itunes.apple.com/verifyReceipt
     * 沙箱 : https://sandbox.itunes.apple.com/verifyReceipt
     */

    $env = App::environment();
    if($env == 'online'){
     //線上環境
$url = 'https://buy.itunes.apple.com/verifyReceipt'; }else{
     //沙盒環境
$url = 'https://sandbox.itunes.apple.com/verifyReceipt'; } $num = 0; while (1){ $num ++; $response = Curl::to($url) ->withData(array('receipt-data' => $receipt_data)) ->asJson(true) ->post(); if($response['status'] != 21005 || $num >= 3){ break; } } // $response = json_decode($response,true); // $data['status']==0 成功 // $data['receipt']['in_app'][0]['transaction_id'] 蘋果訂單號 // $data['receipt']['in_app'][0]['product_id']; 商品價格 // $data['receipt']['in_app'][0]['purchase_date_ms'] $status = 0; $purchaseTime = 0; if ($response['status'] == 0) { $status = 1; try{ $inapps = $response['receipt']['in_app']; $purchaseTime = $inapps[0]['purchase_date_ms']; if(!empty($orderId)){ foreach ($inapps as $item){ if($orderId == $item['transaction_id']){ $purchaseTime = $item['purchase_date_ms']; break; } } } }catch (Exception $e){ return ['status'=>0,'purcaseTime' => 0]; } } return ['status'=>$status,'purcaseTime' => $purchaseTime]; }

參數說明:

//$receipt_data : ios購買時蘋果服務器返回的訂單信息
//$orderId : 訂單號,驗證訂單是返回的內購訂單數據可能會有多條($response['receipt']['in_app']有多條數據),所以需要遍歷每條記錄,找到跟訂單ID一樣的那一條數據的購買時間。
$receipt_data="MIIbWQYJKoZIhvcNAQcCoIIbSjCCG0YCAQExCzAJBgUrDgMCGgUA......";
$orderId="1000000461350339";

返回數據:驗證訂單獲取的數據  $response:(其中in_app有多個)。

{
  "receipt": {
    "receipt_type": "Production",
    "adam_id": 127345,
    "app_item_id": 12732445,
    "bundle_id": "com.frd.cros",
    "application_version": "62",
    "download_id": 6703453,
    "version_external_identifier": 829054,
    "receipt_creation_date": "2019-03-29 02:03:00 Etc/GMT",
    "receipt_creation_date_ms": "1553820000",
    "receipt_creation_date_pst": "2019-03-28 19:03:00 America/Los_Angeles",
    "request_date": "2019-04-03 07:04:10 Etc/GMT",
    "request_date_ms": "1554275050780",
    "request_date_pst": "2019-04-03 00:04:10 America/Los_Angeles",
    "original_purchase_date": "2017-10-27 19:28:27 Etc/GMT",
    "original_purchase_date_ms": "1509132507000",
    "original_purchase_date_pst": "2017-10-27 12:28:27 America/Los_Angeles",
    "original_application_version": "3",
    "in_app": [
      {
        "quantity": "1",
        "product_id": "com.wordguess.go.in2",
        "transaction_id": "270004425012",
        "original_transaction_id": "270000425012",
        "purchase_date": "2019-03-29 02:02:59 Etc/GMT",
        "purchase_date_ms": "1553879000",
        "purchase_date_pst": "2019-03-28 19:02:59 America/Los_Angeles",
        "original_purchase_date": "2019-03-29 02:02:59 Etc/GMT",
        "original_purchase_date_ms": "1553824979000",
        "original_purchase_date_pst": "2019-03-28 19:02:59 America/Los_Angeles",
        "is_trial_period": "false"
      },
      {
        "quantity": "1",
        "product_id": "com.fil.removeads10",
        "transaction_id": "2700005471",
        "original_transaction_id": "27005471",
        "purchase_date": "2017-11-16 16:44:08 Etc/GMT",
        "purchase_date_ms": "1510850648000",
        "purchase_date_pst": "2017-11-16 08:44:08 America/Los_Angeles",
        "original_purchase_date": "2017-11-16 16:44:08 Etc/GMT",
        "original_purchase_date_ms": "1510850648000",
        "original_purchase_date_pst": "2017-11-16 08:44:08 America/Los_Angeles",
        "is_trial_period": "false"
      }
    ]
  },
  "status": 0,
  "environment": "Production"
}

 


免責聲明!

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



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