"FWH000015822", 'custId'=>"60000008228471", 'timeStamp'=>time(), 'version'=>"1.0.0" ]; $d =$this->ASCII($data); $data['sign'] = $this->sign($d,$this->publicKey); $b = json_encode($data,true); var_dump($b); $url = "http://jghwucyshtgjcbrnxgwe.gtxygroup.com/testterpay/yyfsevr/order/connectCust"; $result = $this->curl_post($url,$b); var_dump($result); } public function wxPay($money='1'){ $user_id = $this->user_id; $user_id = 979; $user = Db::name("user_auth")->where("user_id",$user_id)->find(); // $publicKey = "-----BEGIN PUBLIC KEY----- //MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwRUsPpbQPhBWrxFhG00k9VBgnHc7dCZyTQYIZ0efDEZOPHtDfbldfBDlfZglvfUsVuxea4NffzkbCm9pakoQilSy7hioiF8sxhUYxpwFIbx15KaQsjpeCtu5yOr3bKb5qZNzf+QtL70EDPfdVdZ5mBlO7CMa01W7CtqkxBlc4iSfVeavFK7rzOJpTAoamHdcdjtffYlNAsg2q3I1SDIUkiasVCo+BtNgzLY+7y1mSt9SbXO5nCMBT9DQVqsccBHu4SYS6kExISfLDjfeAldgtNtMuuyESiyp53EEk/Xe8JzrrjnHloHB63H47TxElsApAEmz0dabJyMBqT8Ow/m5OQIDAQAB //-----END PUBLIC KEY-----"; $user_id = 979; $data = [ 'agetId'=>"FWH000015822", 'custId'=>"60000008228471", 'orderNo'=>"dlh".time().$user_id, 'txamt'=>$money, 'openid'=>$user['openid'], 'payWay'=>"1", 'ip'=>$_SERVER['REMOTE_ADDR'], 'timeStamp'=>time(), 'version'=>"1.0.0", 'wxAppid'=>'wx586d77b9edb0636d', 'traType'=>'8' ]; $d =$this->ASCII($data); $data['sign'] = $this->sign($d,$this->publicKey); print_r("
");
        var_dump($data);
        $b = json_encode($data,true);
        var_dump($b);
        $url = "http://jghwucyshtgjcbrnxgwe.gtxygroup.com/testterpay/yyfsevr/order/pay";
        $result = $this->curl_post($url,$b);
        var_dump($result);
    }

    // 查询mcc
    public function checkMcc(){
        $data = [
            'agetId'=>"FWH000015822",
            'type'=>"1",
            'version'=>"1.0.0"
        ];
        $d =$this->ASCII($data);
        $sign = $this->sign($d,$this->publicKey);
        $b = $d."&sign=".$sign;
        $url = "http://jghwucyshtgjcbrnxgwe.gtxygroup.com/testterpay/yyfsevr/addCust/getTopMcc";
        $u = $url."?".$b;
        $result = $this->curl_get($u);
        $r = $result['data'];
        foreach($r as $key=>$value){
            $data_arr['mccName'] = $value['mccName'];
            $data_arr['update_time'] = date("Y-m-d H:i:s");
            $mcc = Db::name("gt_mcc")
                ->where("parent_id",0)
                ->where("state",1)
                ->where("busMccId",$value['busMccId'])
                ->find();
            if($mcc == null){
                $data_arr['busMccId'] = $value['busMccId'];
                $data_arr['dtime'] = date("Y-m-d H:i:s");
                Db::name("gt_mcc")->save($data_arr);
            }else{
                if($mcc['mccName'] != $value['mccName'] ){
                    Db::name("gt_mcc")->where("mcc_id",$mcc['mcc_id'])->update($data_arr);
                }
            }
        }
        print("
");
        var_dump($result);
    }
    // 获取二级mcc
    public function checkSecondMcc(){
        $data = [
            'agetId'=>"FWH000015822",
            'busMccId'=>"278",
            'version'=>"1.0.0"
        ];
        $d =$this->ASCII($data);
        $sign = $this->sign($d,$this->publicKey);
        $b = $d."&sign=".$sign;
        var_dump($b);
        $url = "http://jghwucyshtgjcbrnxgwe.gtxygroup.com/testterpay/yyfsevr/addCust/getSecondMcc";
        $u = $url."?".$b;
        var_dump($u);
        $result = $this->curl_get($u);
        var_dump($result);
    }
    // 异步支付回调
    public function payNotify(){

    }
    //异步提现回调
    public function payWithdrawal(){

    }
    //异步进件
    public function inComing(){

    }
    function ASCII($params=array()){
        ksort($params);
        reset($params);
        $str = http_build_query($params,'','&');
        return $str;
    }
    public function sign($param,$key_pem)
    {
        $sha256 = hash("sha256", $param);
        $privateKey = openssl_pkey_get_public($key_pem); //检测是否公钥
        openssl_public_encrypt($sha256, $sign, $privateKey); //公钥加密
        $sign = base64_encode($sign);
        return $sign;
    }
    private function curl_post($url,$postdata){
        $curl = curl_init(); // 启动一个CURL会话
        curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            'Expect:'
        )); // 解决数据包大不能提交
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); // Post提交的数据包
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
// curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
        $tmpInfo = curl_exec($curl); // 执行操作
        if (curl_errno($curl)) {
            echo 'Errno' . curl_error($curl);
        }
        curl_close($curl); // 关键CURL会话
        $tmpInfo=json_decode($tmpInfo,true);
        return $tmpInfo;
    }
    private function curl_get($url) {
        //初使化curl
        $curl = curl_init();
        //请求的url,由形参传入
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            'Expect:'
        )); // 解决数据包大不能提交
        //将得到的数据返回
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //不处理头信息
        curl_setopt($curl, CURLOPT_HEADER, 0);
        //连接超过10秒超时
        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
        curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
//        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
        //执行curl
        $output = curl_exec($curl);
        if (curl_errno($curl)) {
            echo 'Errno' . curl_error($curl);
        }
        //关闭资源
        curl_close($curl);
        //返回内容
        $tmpInfo=json_decode($output,true);
        return $tmpInfo;
    }
}