苹7php按响声,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];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值