ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

iOS应用内支付(IAP)php后端验证代码

2021-09-06 17:02:08  阅读:334  来源: 互联网

标签:ch setopt receipt iOS json curl php IAP CURLOPT


        $is_sandbox = input('is_sandbox', 0, 'intval');
        $receipt = urlencode($_REQUEST['receipt-data']);
        $receipt = str_replace('%2F','/',$receipt);
        $receipt = str_replace('%5C','',$receipt);
        $receipt = str_replace('%3D','=',$receipt);
        $receipt = str_replace('%2B','+',$receipt);
        if ($is_sandbox == 1) {
            $url = "https://sandbox.itunes.apple.com/verifyReceipt";
        } else {
            $url = "https://buy.itunes.apple.com/verifyReceipt";
        }
        $json = '{"receipt-data":"'.$receipt.'"}';
        $result = $this->http_post_json($url, $json);
        if (isset($result['status']) && $result['status'] == 0 && !empty($result['receipt']['in_app'])) {
            $pay_log_insert = [];
            $time = time();
            foreach ($result['receipt']['in_app'] as $key => $val) {
                $pay_log_insert[] = [
                        'user_id' => $user_id,
                        'order_id' => 0,
                        'title' => $title,
                        'price' => $price,
                        'article_type' => $type,
                        'log_type' => 2,
                        'question_num' => $num,
                        'create_time' => $time,
                        'delete_time' => 0,
                        'receipt_data' => $receipt,
                    ];
            }
            
    private function http_post_json($url, $json)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS,$json);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'Content-Length: ' . strlen($json))
        );
        // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // curl_setopt($ch, CURLOPT_POST, 1);
        // curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  //这两行一定要加,不加会报SSL 错误
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        $response = curl_exec($ch);
        $errno = curl_errno($ch);
        $errmsg = curl_error($ch);
        curl_close($ch);
        if (!$response) {
            return $errmsg;
        }
        $data = json_decode($response, true);
        return $data;
    }

标签:ch,setopt,receipt,iOS,json,curl,php,IAP,CURLOPT
来源: https://blog.csdn.net/lvchengming268268/article/details/120139458

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有