PHP处理IOS交易认证模块,发送数据认证功能

  1. 注意:主要是两个,一个是要设content-type:application/json ,一个是发过去的数据必须是json格式的字符串

  2. <?php 
  3.      
  4.     //服务器二次验证代码  
  5.     function getReceiptData($receipt$isSandbox = false)     
  6.     {     
  7.         if ($isSandbox) {     
  8.             $endpoint = 'https://sandbox.itunes.apple.com/verifyReceipt';     
  9.         }     
  10.         else {     
  11.             $endpoint = 'https://buy.itunes.apple.com/verifyReceipt';     
  12.         }     
  13.       
  14.         $postData = json_encode(     
  15.             array('receipt-data' => $receipt)     
  16.         );     
  17.       
  18.         $ch = curl_init($endpoint);     
  19.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     
  20.         curl_setopt($ch, CURLOPT_POST, true);     
  21.         curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);     
  22.        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);  //这两行一定要加,不加会报SSL 错误  
  23.         curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);   
  24.   
  25.   
  26.         $response = curl_exec($ch);     
  27.         $errno    = curl_errno($ch);     
  28.         $errmsg   = curl_error($ch);     
  29.         curl_close($ch);     
  30.     //判断时候出错,抛出异常  
  31.         if ($errno != 0) {     
  32.             throw new Exception($errmsg$errno);     
  33.         }     
  34.                   
  35.         $data = json_decode($response);     
  36.     //判断返回的数据是否是对象  
  37.         if (!is_object($data)) {     
  38.             throw new Exception('Invalid response data');     
  39.         }     
  40.     //判断购买时候成功  
  41.         if (!isset($data->status) || $data->status != 0) {     
  42.             throw new Exception('Invalid receipt');     
  43.         }     
  44.       
  45.     //返回产品的信息             
  46.         return array(     
  47.             'quantity'       =>  $data->receipt->quantity,     
  48.             'product_id'     =>  $data->receipt->product_id,     
  49.             'transaction_id' =>  $data->receipt->transaction_id,     
  50.             'purchase_date'  =>  $data->receipt->purchase_date,     
  51.             'app_item_id'    =>  $data->receipt->app_item_id,     
  52.             'bid'            =>  $data->receipt->bid,     
  53.             'bvrs'           =>  $data->receipt->bvrs     
  54.         );     
  55.     }     
  56.       
  57.     //获取 App 发送过来的数据,设置时候是沙盒状态  
  58.         $receipt   = $_GET['data'];     
  59.         $isSandbox = true;     
  60.     //开始执行验证  
  61.     try  
  62.      {  
  63.          $info = getReceiptData($receipt$isSandbox);     
  64.          // 通过product_id 来判断是下载哪个资源  
  65.          switch($info['product_id']){  
  66.             case 'com.application.xxxxx.xxxx':  
  67.                 Header("Location:xxxx.zip");  
  68.             break;             
  69.         }  
  70.      }  
  71.     //捕获异常  
  72.     catch(Exception $e)  
  73.     {  
  74.         echo 'Message: ' .$e->getMessage();  
  75.     }  
  76. ?> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值