Content

IOS苹果AppStore内购付款的服务器端php验证方法(使用thinkphp)(apple商店付款)奔走相告

文章摘要

这篇文章介绍了一个名为`validate_apple_pay`的函数,用于验证Apple Pay交易的正确性。函数通过发送curl请求来验证购买信息,主要包括以下步骤: 1. **函数定义**:`validate_apple_pay`接收一个参数`$receipt_data`,用于小票信息验证。 2. **参数检查**:首先检查`$receipt_data`的长度是否小于20,如果小于20,则返回错误信息。 3. **curl请求**:调用`acurl`函数发送curl请求,验证交易信息。`acurl`函数接收`$receipt_data`和一个布尔参数`$sandbox`,分别用于正式购买地址和沙盒验证。 4. **沙盒模式处理**:如果响应数据为沙盒模式(status=21007),则重新发送curl请求,并设置`sandbox`字段为'1'。 5. **状态判断**:根据验证结果判断购买状态。如果成功(status=0),返回true和成功信息;否则返回false并包含错误信息。 总结:该函数通过curl请求验证Apple Pay交易的合法性和完整性,并支持正式验证和沙盒验证模式。

function validate_apple_pay($receipt_data){ function acurl($receipt_data, $sandbox=0){ //小票信息 $POSTFIELDS=array(“receipt-data”=> $receipt_data); $POSTFIELDS=json_encode($POSTFIELDS); //正式购买地址 沙盒购买地址 $url_buy=”https://buy.itunes.apple.com/verifyReceipt”; $url_sandbox=”https://sandbox.itunes.apple.com/verifyReceipt”; $url=$sandbox ? $url_sandbox : $url_buy; //简单的curl $ch=curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS); $result=curl_exec($ch); curl_close($ch); return $result; } // 验证参数 if (strlen($receipt_data)<20){ $result=array( ‘status’=>false, ‘message’=>’非法参数’ ); return $result; } // 请求验证 $html=acurl($receipt_data); $data=json_decode($html,true); // 如果是沙盒数据 则验证沙盒模式 if($data[‘status’]==’21007′){ // 请求验证 $html=acurl($receipt_data, 1); $data=json_decode($html,true); $data[‘sandbox’]=’1′; } if (isset($_GET[‘debug’])) { exit(json_encode($data)); } // 判断是否购买成功 if(intval($data[‘status’])===0){ $result=array( ‘status’=>true, ‘message’=>’购买成功’ ); }else{ $result=array( ‘status’=>false, ‘message’=>’购买失败 status:’.$data[‘status’] ); } return $result; }