PHP 苹果内购iap支付

$receiptData = $_POST;
// 验证参数
if (strlen($receiptData['receipt']) < 1000) {
    return;
}
$receipt = $receiptData['receipt'];
$receipt = urlencode($receipt);
$receipt = str_replace('%2F','/',$receipt);
$receipt = str_replace('%5C','',$receipt);
$receipt = str_replace('%3D','=',$receipt);
$receipt = str_replace('%2B','+',$receipt);

// 默认向真实环境发请求
$html = acurl($receipt);
$data = json_decode($html, true);

// 如果是沙盒数据 则验证沙盒模式
if ($data['status'] == '21007') {
    $html = acurl($receipt, 1);// 1代表向沙箱环境url发送验证请求
    $data = json_decode($html, true);
}

if (intval($data['status']) === 0) {
	// 验证APP应用包名,这个非必须的
    if($data['receipt']['bundle_id'] != 'com.qinglin.recruit'){
        $res = [
            'code' => 500,
            'message' => '非法操作',
            'data' => ''
        ];
        echo json_encode($res);
        exit;
    }

	// 找出时间最大的凭据数组
    $receiptitem = $data['receipt']['in_app'];
    $item = arraySort($receiptitem,'purchase_date','desc');
    $order_third = $item['transaction_id'];

   	// 验证凭据是否被使用,没别使用就更新到订单中

	// 订单回调处理
	
	

}else{
	$res = [
	        'code' => 500,
	        'message' => 'receipt参数有误',
	        'data' => ''
	    ];
	    echo json_encode($res);
	    exit;
}


// curl模拟http请求
function acurl($receiptData, $sandbox = 0)
{
    //小票信息
    $POSTFIELDS = '{"receipt-data":"'.$receiptData.'"}';

    //正式购买地址 沙盒购买地址
    $urlBuy = "https://buy.itunes.apple.com/verifyReceipt";
    $urlSandbox = "https://sandbox.itunes.apple.com/verifyReceipt";
    $url = $sandbox ? $urlSandbox : $urlBuy;//向正式环境url发送请求(默认)

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS,$POSTFIELDS);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                       'Content-Type: application/json',
                       'Content-Length: ' . strlen($POSTFIELDS))
    );
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  //这两行一定要加,不加会报SSL 错误
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天都进步一点点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值