apiClient = new \DefaultIcbcClient( $this->APP_ID, $this->PRI_KEY, $this->signType, 'UTF-8', '', $this->APIGW_PUBLIC_KEY, '', '', '', '' ); } // 工行支付 public function pay($money="",$decive_info="111",$type=""){ $user_id = $this->user_id; $merchant = 70; //商户获取金额比例 $our = 5; //服务费 $other = 3; // 其他分销推广人员费用 $user_billions = 22; // 其他+服务费 $user_msg = UserAuth::where("user_id",$user_id)->find(); $msg_id = $this->getMsgId(); // var_dump($msg_id); $out = "dlh".time().$user_id; $ip = ''; if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != 'unknown') { // 判断是否有HTTP_CLIENT_IP这个请求头,存在优先使用 $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != 'unknown') { // 判断是否有HTTP_X_FORWARDED_FOR这个请求头,存在优先使用 $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != 'unknown') { // 获取REMOTE_ADDR这个服务器变量 $ip = $_SERVER['REMOTE_ADDR']; } $orig_date_time = date("Y-m-d\TH:i:s"); $mer_url = "https://dlh.hainings.com/index/index/localReturn"; $order_num = 3; $basic = $this->basic($user_id,$out,$money,$our,$user_msg,$type); $general1 = $this->general1($user_id,$out,$money,$other,$user_msg,$type); $general2 = $this->general2($user_id,$out,$money,$user_billions,$user_msg,$type); $userAccount = ""; $order_submit_act_input = array($basic,$general1,$general2); if($type != 0){ $userAccount = $this->userAccount($user_id,$out,$money,$merchant,$user_msg); $order_num = 4; $order_submit_act_input = array($userAccount,$basic,$general1,$general2); } $request = [ 'serviceUrl' => 'https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/consumepurchase/V2', 'method' => 'POST', 'isNeedEncrypt'=>false, 'biz_content' => array( "mer_id"=>"120448160200", "ser_id"=>"120400005722", "out_trade_no"=>$out, "pay_mode"=>"9", "access_type"=>"9", "mer_prtcl_no"=>"1204481602000201", "orig_date_time"=>$orig_date_time, "decive_info"=>$decive_info, "body"=>"东龙汇", "fee_type"=>"001", "spbill_create_ip"=>$ip, "total_fee"=>strval($money*100), "mer_url"=>$mer_url, "notify_type"=>"HS", "shop_appid"=>$this->shop_appid, "icbc_appid"=>$this->APP_ID, "open_id"=>$user_msg['openid'], "expire_time"=>"300", "is_suborder"=>"1", "order_num"=>(string)$order_num, "order_submit_act_input"=>$order_submit_act_input ), 'extraParams'=>[] ]; // $res = $this->apiClient->execute($request,$msg_id,""); // print_r("
");
        // var_dump($request);
        $data['mer_id'] = "120448160200";
        $data['ser_id'] = "120400005722";
        $data['out_trade_no'] = $out;
        $data['pay_mode'] = "9";
        $data['access_type'] = "9";
        $data['mer_prtcl_no'] = "1204481602000201";
        $data['orig_date_time'] = $orig_date_time;
        $data['spbill_create_ip'] = $ip;
        $data['decive_info'] = $decive_info;
        $data['total_fee'] = $money;
        $data['fee_type'] = "001";
        $data['mer_url'] = $mer_url;
        $data['notify_type'] = "HS";
        $data['shop_appid'] = $this->shop_appid;
        $data['icbc_appid'] = $this->APP_ID;
        $data['user_id'] = $user_id;
        $data['open_id'] = $user_msg['openid'];
        $data['dtime'] = date("Y-m-d H:i:s");
        $rest = Db::name("abutment_log")->save($data);
        $res = $this->apiClient->execute($request,$msg_id,"");
        $result = json_decode($res,true);
        //   print_r("
");
        // var_dump($result);
        $r = json_decode($result['wx_data_package'],true);
        $r['nonceStr'] = $r['noncestr'];
        $r['timeStamp'] = $r['timestamp'];
        $r['paySign'] = $r['sign'];
        $r['order_num'] = $order_num;
        return JsonServer::success('查询成功',$r);

    }
    public function getMsgId(){
        return substr(md5("donglonghui".time().mt_rand(1,1000000)),8,13);
    }
    // 查询回调记录
    public function checkReturn($money=1,$type=""){
        $aa = urldecode(file_get_contents("php:://input"));
        Log::write($aa, 'test_aaa');die;
        $user_id =  $this->user_id;
        $merchant = 70; //商户获取金额比例
        $our = 5; //服务费
        $other = 3; // 其他分销推广人员费用
        $user_billions = 22; // 其他+服务费
        $user_msg = UserAuth::where("user_id",$user_id)->find();
        $out = "dlh1731383512979";
        $basic = $this->basic($user_id,$out,$money,$our,$user_msg,$type);
        $general1 = $this->general1($user_id,$out,$money,$other,$user_msg,$type);
        $general2 = $this->general2($user_id,$out,$money,$user_billions,$user_msg,$type);
        //  $basic['']
        $order_submit_act_input = array($basic,$general1,$general2);
        if($type != 0){
            $userAccount = $this->userAccount($user_id,$out,$money,$merchant,$user_msg);
            $order_num = 4;
            $order_submit_act_input = array($userAccount,$basic,$general1,$general2);
        }

        $request = [
            'serviceUrl' => 'https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/consumepurchase/V2',
            'method' => 'POST',
            'isNeedEncrypt'=>false,
            'biz_content' => array(
                "return_code"=>"0",
                "return_msg"=>"success",
                "order_submit_act_input"=>$order_submit_act_input
            ),
            'extraParams'=>[]
        ];
        print_r("
");
        var_dump($request);
        $msg_id = $this->getMsgId();
        $res = $this->apiClient->execute($request,$msg_id,"");
        $result = json_decode($res,true);
        var_dump($result);
    }
    // 用户账户
    public function userAccount($user_id,$out,$money,$merchant,$user_msg){
        $out1 = "dlh".time().$user_id."1";
        $data1['rec_num'] = "1";
        $data1['seq_no'] = $out;
        $data1['sub_order_id'] = $out1;
        $data1['oper_flag'] = "0";
        $data1['busi_type'] = "1";
        $data1['sub_mer_id'] = "120448160198";
        $data1['sub_mer_prtcl_no'] = "1204481601980201";
        $data1['classify_amt'] = $money*$merchant;
        $data1['user_id'] = $user_id;
        $data1['open_id'] = $user_msg['openid'];
        $data1['dtime'] = date("Y-m-d H:i:s");
        $rest = Db::name("abutment_log")->save($data1);
        return  array(
            "rec_num"=>"1",
            "sub_order_id"=>$out1,
            "oper_flag"=>"0",
            "busi_type"=>"1",
            "ori_mer_id"=>"120448160200",
            "seq_no"=>$out,
            "mer_acct"=>"1911025009202050845",
            "ori_trx_date"=>date("Y-m-d"),
            "sub_mer_id"=>"120448160198",
            "sub_mer_prtcl_no"=>"1204481601980201",
            "classify_amt"=>strval($money*$merchant)
        );
    }

    // 基本户
    public function basic($user_id,$out,$money,$our,$user_msg,$type){
        // $out2 = "dlh17314648899792";
        $out2 = "dlh".time().$user_id."2";
        $data2['rec_num'] = "1";
        $data2['seq_no'] = $out;
        $data2['sub_order_id'] = $out2;
        $data2['oper_flag'] = "0";
        $data2['busi_type'] = "1";
        $data2['sub_mer_id'] = "120448160201";
        $data2['sub_mer_prtcl_no'] = "1204481602010201";
        $data2['classify_amt'] = $money*$our;
        if($type == ""){
            $data2['classify_amt'] = $money*$our+$money*40;
        }
        $data2['user_id'] = $user_id;
        $data2['open_id'] = $user_msg['openid'];
        $data2['dtime'] = date("Y-m-d H:i:s");
        $rest = Db::name("abutment_log")->save($data2);
        return array(
            "rec_num"=>"1",
            "sub_order_id"=>$out2,
            "oper_flag"=>"0",
            "busi_type"=>"1",
            "ori_mer_id"=>"120448160200",
            "seq_no"=>$out,
            "mer_acct"=>"1204068809100138961",
            "ori_trx_date"=>date("Y-m-d"),
            "sub_mer_id"=>"120448160201",
            "sub_mer_prtcl_no"=>"1204481602010201",
            "classify_amt"=>strval($data2['classify_amt'])
        );
    }

    // 一般户1
    public function general1($user_id,$out,$money,$other,$user_msg,$type){
        // $out3 = "dlh17314648899793";
        $out3 = "dlh".time().$user_id."3";
        $data3['rec_num'] = "2";
        $data3['seq_no'] = $out;
        $data3['sub_order_id'] = $out3;
        $data3['oper_flag'] = "0";
        $data3['busi_type'] = "1";
        $data3['sub_mer_id'] = "120448160202";
        $data3['sub_mer_prtcl_no'] = "1204481602020201";
        $data3['classify_amt'] = $money*$other;
        if($type == ""){
            $data3['classify_amt'] = $money*$other+$money*30;
        }
        $data3['user_id'] = $user_id;
        $data3['open_id'] = $user_msg['openid'];
        $data3['dtime'] = date("Y-m-d H:i:s");
        $rest = Db::name("abutment_log")->save($data3);
        return    array(
            "rec_num"=>"2",
            "sub_order_id"=>$out3,
            "oper_flag"=>"0",
            "busi_type"=>"1",
            "ori_mer_id"=>"120448160200",
            "seq_no"=>$out,
            "mer_acct"=>"1204064019200152507",
            "ori_trx_date"=>date("Y-m-d"),
            "sub_mer_id"=>"120448160202",
            "sub_mer_prtcl_no"=>"1204481602020201",
            "classify_amt"=>strval($data3['classify_amt'])
        );
    }
    // 一般户2
    public function general2($user_id,$out,$money,$user_billions,$user_msg){
        $out4 = "dlh".time().$user_id."4";
        //  $out4 = "dlh17314648899794";
        $data4['rec_num'] = "3";
        $data4['seq_no'] = $out;
        $data4['sub_order_id'] = $out4;
        $data4['oper_flag'] = "0";
        $data4['busi_type'] = "1";
        $data4['sub_mer_id'] = "120448160203";
        $data4['sub_mer_prtcl_no'] = "1204481602030201";
        $data4['classify_amt'] = $money*$user_billions;
        $data4['user_id'] = $user_id;
        $data4['open_id'] = $user_msg['openid'];
        $data4['dtime'] = date("Y-m-d H:i:s");
        $rest = Db::name("abutment_log")->save($data4);
        return   array(
            "rec_num"=>"3",
            "sub_order_id"=>$out4,
            "oper_flag"=>"0",
            "busi_type"=>"1",
            "ori_mer_id"=>"120448160200",
            "seq_no"=>$out,
            "mer_acct"=>"1204064419000115357",
            "ori_trx_date"=>date("Y-m-d"),
            "sub_mer_id"=>"120448160203",
            "sub_mer_prtcl_no"=>"1204481602030201",
            "classify_amt"=>strval($money*$user_billions)
        );
    }
}