_payConf($uid, $params); $out_trade_no1 = rand(1000000000, 9999999999) . (string)date('ymdhis', time()) . (int)microtime(true); // 订单号 $params = [ 'appid'=>'9d5e3cb9a4946cf28a42b99f4f8bf978', 'method'=>'payment.wxjsapp', 'merchant'=>'220951176399985946', 'body'=>'购买商品', 'external_order_no'=>$out_trade_no1, // 我们自己的订单号 'total_amount'=>$total_amount, // 'notify_url'=>'http://api.meikangjw.com/api/aliResult' 'notify_url'=>'http://zy.suncorex.com:2080/api/aliResultDLB' ]; $sign = thirdPayGetSign($params, '897d9ea909093173b24dd89c772181e4'); $params['sign'] = $sign; // return $params; $res = _curlrequest('http://openpay.duolaibei.com/api/gateway', $params, 'post'); // sr_log(sr_getcurtime(time()).$res); // {"code":200,"msg":"success","content":{"order_no":"DLB1649853909589099089998901OP","external_order_no":"12365847092204130845091649853909","total_amount":11970,"body":"\u8d2d\u4e70\u5546\u54c1","trans_type":"AL_JSAPP","JSAPPID":"2021002148663267","url":"alipays:\/\/platformapi\/startapp?appId=2021002148663267&page=pages\/open-pay\/open-pay&query=order_no%3DDLB1649853909589099089998901OP","sign":"FA06F884C143DA40E505950918D4AD45"}} $res = json_decode($res); if ($res && isset($res->code) && $res->code == 200){ $out_trade_no = $res->content->order_no; $this->setPaymentOrder(compact('body', 'out_trade_no','out_trade_no1', 'total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 5); // return api_succ_return(['msg'=>'请求成功', 'data'=>['thirdpaydlbalipay'=>['url'=>$res->content->url]]]); return api_succ_return(['msg'=>'请求成功', 'data'=>['thirdpaydlbwx'=>['url'=>$res->content->url, 'jsappid'=>$res->content->JSAPPID]]]); }else{ return api_error_return('获取失败'); } } //多乐宝微信支付 public function getWxPayInfo($uid, $params){ // return $params; list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // 这是测试 线要干掉 // $total_amount = floatval('0.'.mt_rand(1, 3).mt_rand(1, 9)); $out_trade_no1 = rand(1000000000, 9999999999) . (string)date('ymdhis', time()) . (int)microtime(true); // 订单号 $params = [ 'appid'=>'9d5e3cb9a4946cf28a42b99f4f8bf978', 'method'=>'payment.wxjsapp', 'merchant'=>'220951176399985946', 'body'=>'购买商品', 'external_order_no'=>$out_trade_no1, // 我们自己的订单号 'total_amount'=>$total_amount, // 'notify_url'=>'http://api.meikangjw.com/api/aliResult' 'notify_url'=>'http://zy.suncorex.com:2080/api/wechatResultDLB' ]; $sign = thirdPayGetSign($params, '897d9ea909093173b24dd89c772181e4'); $params['sign'] = $sign; // return $params; $res = _curlrequest('http://openpay.duolaibei.com/api/gateway', $params, 'post'); // sr_log(sr_getcurtime(time()).$res); // {"code":200,"msg":"success","content":{"order_no":"DLB1649853909589099089998901OP","external_order_no":"12365847092204130845091649853909","total_amount":11970,"body":"\u8d2d\u4e70\u5546\u54c1","trans_type":"AL_JSAPP","JSAPPID":"2021002148663267","url":"alipays:\/\/platformapi\/startapp?appId=2021002148663267&page=pages\/open-pay\/open-pay&query=order_no%3DDLB1649853909589099089998901OP","sign":"FA06F884C143DA40E505950918D4AD45"}} $res = json_decode($res); if ($res && isset($res->code) && $res->code == 200){ $out_trade_no = $res->content->order_no; $this->setPaymentOrder(compact('body', 'out_trade_no','out_trade_no1', 'total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 5); // return api_succ_return(['msg'=>'请求成功', 'data'=>['thirdpaydlbalipay'=>['url'=>$res->content->url]]]); return api_succ_return(['msg'=>'请求成功', 'data'=>['thirdpaydlbwx'=>['url'=>$res->content->url, 'jsappid'=>$res->content->JSAPPID]]]); }else{ return api_error_return('获取失败'); } } // 畅联微信支付 public function getWxPayInfoCL($uid, $params){ // return $params; list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // 这是测试 线要干掉 // $total_amount = floatval('0.'.mt_rand(1, 3).mt_rand(1, 9)); $out_trade_no = 'CL'.rand(1000000000, 9999999999) . (string)date('ymdhis', time()) . (int)microtime(true); // 订单号 $success_url = getWebUrl().'/api/thirdPayClSuccess'; $error_url = getWebUrl().'/api/thirdPayClError'; $params = [ 'appid'=>'1059174', 'pay_type'=>'partnerJs', 'amount'=>sprintf("%.2f",$total_amount), 'callback_url'=> getWebUrl().'/api/wechatResultCL', 'success_url'=>$success_url, 'error_url'=>$error_url, 'extend'=>'{"body":"购买商品"}', 'out_trade_no'=>$out_trade_no ]; // sr_log(json_encode($params)); $sign = thirdPayGetSignCL('XMLfjHMPOGexsSaadIWSVCNG0XJBClZZ', $params); $params['sign'] = $sign; // sr_log(json_encode($params)); // return $params; $res = _curlrequest('https://api.payunk.com/index/unifiedorder?format=json', $params, 'post'); sr_log(sr_getcurtime(time()).$res); $res = json_decode($res); if ($res && isset($res->code) && $res->code == 200){ $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 7); return api_succ_return(['msg'=>'请求成功', 'data'=>['thirdpayclwx'=>['url'=>$res->url,'success_url'=>$success_url, 'error_url'=>$error_url]]]); }else{ return api_error_return('获取失败'); } } // 畅联支付宝支付 type aban(A版本) h5ban(h5版本) dban(D版本) public function getAliPayInfoCL($uid, $params, $type){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // 这是测试 线要干掉 // $total_amount = floatval('0.'.mt_rand(1, 3).mt_rand(1, 9)); // $total_amount = 0.01; $out_trade_no = 'CL'.rand(1000000000, 9999999999) . (string)date('ymdhis', time()) . (int)microtime(true); // 订单号 $success_url = getWebUrl().'/api/thirdPayClSuccess'; $error_url = getWebUrl().'/api/thirdPayClError'; $type_arr = [ 'aban'=>'alipayApp', 'h5ban'=>'adapayH5', 'dban'=>'alipayPrecreate' ]; $params = [ 'appid'=>'1059174', 'pay_type'=>$type_arr[$type], 'amount'=>sprintf("%.2f",$total_amount), 'callback_url'=> getWebUrl().'/api/AliResultCL', 'success_url'=>$success_url, 'error_url'=>$error_url, 'extend'=>'{"body":"购买商品","subject":"购买商品"}', 'out_trade_no'=>$out_trade_no ]; // sr_log(json_encode($params)); $sign = thirdPayGetSignCL('XMLfjHMPOGexsSaadIWSVCNG0XJBClZZ', $params); $params['sign'] = $sign; // sr_log(json_encode($params)); // return $params; $res = _curlrequest('https://api2.payunk.com/index/unifiedorder?format=json', $params, 'post'); // sr_log(sr_getcurtime(time()).$res); $res = json_decode($res); if ($res && isset($res->code) && $res->code == 200){ $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), ($type=='aban'?10:8)); return api_succ_return(['msg'=>'请求成功', 'data'=>['thirdpayclali'=>['url'=>$res->url,'success_url'=>$success_url, 'error_url'=>$error_url]]]); }else{ return api_error_return('获取失败'); } } // mo宝 富有 银联支付 public function getBankPayInfoFY($uid, $paramscon){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $paramscon); // 这是测试 线要干掉 // $total_amount = floatval('0.'.'1'.mt_rand(1, 9)); // $total_amount = 0.01; // 商户号 $mchnt_cd = env('api.PAY_FUYOU_MCHNT_id'); $time = time(); $time_end = time() + 2*60*60; $order_date = sr_getcurtime($time, 'Ymd'); $order_timestart = sr_getcurtime($time, 'YmdHis'); $order_timeend = sr_getcurtime($time_end, 'YmdHis'); $order_id = $paramscon['order_id']; $out_trade_no = 'FYYL'.$order_id; $mess_arr = ['mchnt_cd'=>$mchnt_cd, 'order_date'=>$order_date, 'order_id'=>$paramscon['order_id'], 'ver'=>'1.0.0']; // sr_log('message_json'.json_encode($mess_arr)); $params = ['mchnt_cd'=>$mchnt_cd, 'message'=>RSA_openssl(json_encode($mess_arr))]; // 测试 // $url = 'https://aggapp-test.fuioupay.com/token.fuiou'; // 正式 $url = 'https://aggapp.fuioupay.com/token.fuiou'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $headers = ['Content-type: application/json']; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // POST数据 curl_setopt($ch, CURLOPT_POST, 1); // curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); // 把post的变量加上 $data = json_encode($params); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $output = curl_exec($ch); curl_close($ch); // sr_log('ccc'.$output); $rsares = json_decode($output); $res_decode = json_decode(RSA_openssl($rsares->message, 'decode')); sr_log('ccc'.json_encode($res_decode)); if (isset($res_decode->order_date) && isset($res_decode->order_token) && isset($res_decode->mchnt_cd) && isset($res_decode->order_id)){ if ($res_decode->mchnt_cd == $mchnt_cd && $res_decode->order_id == $order_id ){ $bank_params = [ 'mchnt_cd'=>$mchnt_cd, 'order_date'=>$order_date, 'order_amt'=>bcmul($total_amount, 100, 0), 'order_id'=>$order_id, 'page_notifyurl'=>($paramscon['app_sources'] =='ios'?getWebUrl().'/api/thirdPayClSuccess':AESjiami(getWebUrl().'/api/thirdPayClSuccess')), 'back_notifyurl'=>($paramscon['app_sources'] =='ios'?getWebUrl().'/api/BankResultFY':AESjiami(getWebUrl().'/api/BankResultFY')), 'order_timestart'=>$order_timestart, 'order_timeend'=>$order_timeend, 'order_token'=>$res_decode->order_token ]; $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 9); return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayflyl'=>$bank_params]]); }else{ return api_error_return('获取失败,订单校验失败1'); } }else{ return api_error_return('获取失败,订单校验失败'); } return api_error_return('获取失败'); } // 易票联 支付宝支付 public function getZfbPayInfoYPL($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // 这是测试 线要干掉 // $total_amount = floatval('0.'.'1'.mt_rand(1, 9)); // $total_amount = 0.01; // 商户号 $mchnt_cd = env('api.PAY_FUYOU_MCHNT_id'); $time = time(); $time_end = time() + 2*60*60; $order_date = sr_getcurtime($time, 'Ymd'); $order_timestart = sr_getcurtime($time, 'YmdHis'); $order_timeend = sr_getcurtime($time_end, 'YmdHis'); $order_id = $params['order_id']; $out_trade_no = 'YPL'.$order_id.mt_rand(1, 10000); // $mess_arr = ['mchnt_cd'=>$mchnt_cd, 'order_date'=>$order_date, 'order_id'=>$params['order_id'], 'ver'=>'1.0.0']; //// sr_log('message_json'.json_encode($mess_arr)); // $params = ['mchnt_cd'=>$mchnt_cd, 'message'=>RSA_openssl(json_encode($mess_arr))]; $success_url = getWebUrl().'/api/thirdPayClSuccess'; $error_url = getWebUrl().'/api/thirdPayClError'; $notify_url = getWebUrl().'/api/ZfbResultYPL'; // 商品订单信息 // {"businessType":"100007","goodsList":[{"amount":1,"name":"商品名称","number":"1箱"}],"id":"id34535"} $orderInfo=array(); $orderInfo['Id'] = 'id34535'; $orderInfo['businessType'] = '130001'; $orderInfo['goodsList'] = array(array('name'=>'pay','number'=>'one','amount'=>1)); // $order_timestart = sr_getcurtime($time, 'YmdHis'); $params = [ 'areaInfo'=>'440106', 'attachData'=>'attachData', 'clientIp'=>request()->ip(), 'customerCode'=>'562012003860535', 'nonceStr'=>nonce_str(32), 'notifyUrl'=>$notify_url, 'orderInfo'=>$orderInfo, 'outTradeNo'=>$out_trade_no, 'payAmount'=>bcmul($total_amount, 100, 0), 'payCurrency'=>'CNY', 'payMethod'=>'7', 'redirectUrl'=>$success_url, 'transactionStartTime'=>date('YmdHis'), 'version'=>'3.0' ]; sr_log(json_encode($params)); // 测试 // $url = 'http://test-efps.epaylinks.cn'; // 正式 $url = 'https://efps.epaylinks.cn'; $url = $url . '/api/txs/pay/NativePayment'; // $ch = curl_init(); // curl_setopt($ch, CURLOPT_POST, 1); // curl_setopt($ch, CURLOPT_URL, $url); // // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过检查 // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过检查 //curl_setopt($ch, CURLOPT_HEADER, true); // curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); $sign = $this->YPLsign(json_encode($params)); $headers = [ // 'Content-type: application/json', 'x-efps-sign-no'=>'562012003860535001', 'x-efps-sign-type'=>'SHA256withRSA', 'x-efps-sign'=>$sign, 'x-efps-timestamp'=>date('YmdHis') ]; sr_log(json_encode('header'.json_encode($headers))); // J+08ZMVCkZnMq0roi3JikP//ODGsy9UvYBM09b921RvU0/3Z+4opOwAFQGPBLrKRGhkZzVhHRJwVDZHA9Iu/wWX13SJyowRYkr8zVsYivNQhYKyt3uPScdN/BVfLM3d5OuA9o2ypIqVuoinorYDsrqXixyYg7LEA4pWTDZc9dtuSRWFF+DFvLTW4UODyiwhBCq7bFaa+MOVmWuiahZMM79MhKxiTqsfFQLptsnlc2crlYuok2Bp2TAbEDM7FZhlLIGiidux0kaLhC3dK31tRc6Y72NlukXJc3sN4HVLqj0GAiw+9jzmGf0NwhvxdHvBC6/7uOp2ShCMxSXUA/qPbLmA7Vh/Zv0njHbxJ0j3oylrhjCjUKGPTKf//GD/vgnVQz2m3KXW6+60PBfWRYwQYkSPFRHj2lRALBYe97q4w0kWa9xO/2yRrIW2lNBqt7ZKSmSstsA+NgiOU4u/LCBmIoxMqk9HzygfDPLhQ9oimOuM/7d//qjP0z6mPD4SbhdVKjfgsp9yqN7h9jR3BJJxDGRAtzJJpDA6/YIcTbkDnJIvHwIx4Fkcf22tBYW436W7f +0GeMLxBp5mAr8qlDJt0R3GoPD4hZ5Omh/FxYhOjN9RKG8QcqSykZSQgYgVAKsGeFWVeXes2XNo2AB1F7MlGuZSypOTv73BL5iE75xJVjRupk6qplmOo2YHLKs8USDSX3Y+QprbAC8irxQ5QtK4ayGbLZ8BDHuKnGLLA1/ID++2ccYJsnfA+9cqvSTm8lo19W1btBl9iZQC8Wfv94rfDsIAe2pc3Gd+LJv47i1mwzK03SQ5c6W8LBxgtStinz/f8Rm5oVn6hTgoRfV93F8ZGRVj5K+KYva5qIjBSyweYToPoXCirUO0UdA96PmU7+oVVOVu4pDcqBJjuSxPXIzRLXbSQUlFHecKjedx2DuOlHPdVMhn2XRjpdd+Ka70Grbw0dro76EvaBzHC2x/rN7g8nIe7ReG4LS2ya07bIXrbHyk6b45XfrneBGHnKDpIX6ymlDKZ2NAWyfXkBEPhiQrsT3AVGrokFjMTRVqubXqRW29Q8if2C5MYduen34s3QtmVHaVUZ24N6cX5FIvCwZYIyBvpFrTCfQZztRz3QngjhclbngGGyBv040WFfQ/sqzkWgdO8XP7cIUWlKmD0xANVq9dQqQiwwcvYpWFzMTpQcw9daGYWltwfzKfRveVnXHyfxaq6XVeHlZCboTDv4Fg5/nVW+s4JCmTXNPedU53ZYcDkrrZcHbygFXgPPOM8KMlowq8KnA9lXUYunHATpa2Q9vKnTED8Ro9gn6IGFpGRdZIeuYOJ+vKMA9sy55AIQiJVUMit7iw2M0ZehPwm4k5Dpi6RMzgC/5+OZc1u+Rt13Borvd3/7EuyqaNwhUkITp7Kl0dv75PQkK0Btcsg+PLVs+2h+GadNurWhl3Bvo6y++5HbkcEfymSFV/phDaAZBTYQFyzjAJhwJizMUBp1HFOetOiLEZSs4iMPj/gwps0BSwqCCRFZXJj3ifLo+fi/bE3rU+/nHcTBo9Dhzw/EVE2KLF1QbZw3fGLnhHqCK+PyOv4i7NwEQKqsA== $response = $this->http_post_json($url, json_encode($params), $sign); sr_log($response); if($response && $response[0] == 200){ $re_data = json_decode($response[1],true); if($re_data['returnCode'] == '0000') { $payurl = $re_data['codeUrl']; $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 12); return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPL'=>['pay_url'=>$payurl]]]); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpay'=>['url'=>$payurl]]]); // } }else{ return api_error_return('获取失败,请联系客服'); } return api_error_return('获取失败,请联系客服'); // if (isset($res_decode->order_date) && isset($res_decode->order_token) && isset($res_decode->mchnt_cd) && isset($res_decode->order_id)){ // if ($res_decode->mchnt_cd == $mchnt_cd && $res_decode->order_id == $order_id ){ // $bank_params = [ // 'mchnt_cd'=>$mchnt_cd, // 'order_date'=>$order_date, // 'order_amt'=>bcmul($total_amount, 100, 0), // 'order_id'=>$order_id, // 'page_notifyurl'=>AESjiami(getWebUrl().'/api/thirdPayClSuccess'), // 'back_notifyurl'=>AESjiami(getWebUrl().'/api/BankResultFY'), // 'order_timestart'=>$order_timestart, // 'order_timeend'=>$order_timeend, // 'order_token'=>$res_decode->order_token // ]; // // $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 9); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayflyl'=>$bank_params]]); // }else{ // return api_error_return('获取失败,订单校验失败1'); // } // }else{ // return api_error_return('获取失败,订单校验失败'); // } return api_error_return('获取失败'); } // 易票联云闪付 public function getYsfPayInfoYPL($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // 这是测试 线要干掉 // $total_amount = floatval('0.'.'1'.mt_rand(1, 9)); // $total_amount = 0.01; // 商户号 $mchnt_cd = env('api.PAY_FUYOU_MCHNT_id'); $time = time(); $time_end = time() + 2*60*60; $order_date = sr_getcurtime($time, 'Ymd'); $order_timestart = sr_getcurtime($time, 'YmdHis'); $order_timeend = sr_getcurtime($time_end, 'YmdHis'); $order_id = $params['order_id']; $out_trade_no = 'YPL'.$order_id.mt_rand(1, 10000); // $mess_arr = ['mchnt_cd'=>$mchnt_cd, 'order_date'=>$order_date, 'order_id'=>$params['order_id'], 'ver'=>'1.0.0']; //// sr_log('message_json'.json_encode($mess_arr)); // $params = ['mchnt_cd'=>$mchnt_cd, 'message'=>RSA_openssl(json_encode($mess_arr))]; $success_url = getWebUrl().'/api/thirdPayClSuccess'; $error_url = getWebUrl().'/api/thirdPayClError'; $notify_url = getWebUrl().'/api/ZfbResultYPL'; // 商品订单信息 // {"businessType":"100007","goodsList":[{"amount":1,"name":"商品名称","number":"1箱"}],"id":"id34535"} $orderInfo=array(); $orderInfo['Id'] = 'id34535'; $orderInfo['businessType'] = '130001'; $orderInfo['goodsList'] = array(array('name'=>'pay','number'=>'one','amount'=>1)); // $order_timestart = sr_getcurtime($time, 'YmdHis'); $params = [ 'areaInfo'=>'440106', 'attachData'=>'attachData', 'clientIp'=>request()->ip(), 'customerCode'=>'562012003860535', 'nonceStr'=>nonce_str(32), 'notifyUrl'=>$notify_url, 'orderInfo'=>$orderInfo, 'outTradeNo'=>$out_trade_no, 'payAmount'=>bcmul($total_amount, 100, 0), 'payCurrency'=>'CNY', // 'payMethod'=>'7', 'redirectUrl'=>$success_url, 'transactionStartTime'=>date('YmdHis'), 'version'=>'3.0' ]; sr_log('ypl'.json_encode($params)); // 测试 // $url = 'http://test-efps.epaylinks.cn'; // 正式 $url = 'https://efps.epaylinks.cn'; $url = $url . '/api/txs/pay/UnionAppPayment'; // $url = $url . 'api/txs/pay/UnifiedPayment'; sr_log('yplurl:'.$url); // $ch = curl_init(); // curl_setopt($ch, CURLOPT_POST, 1); // curl_setopt($ch, CURLOPT_URL, $url); // // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过检查 // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过检查 //curl_setopt($ch, CURLOPT_HEADER, true); // curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); $sign = $this->YPLsign(json_encode($params)); $headers = [ // 'Content-type: application/json', 'x-efps-sign-no'=>'562012003860535001', 'x-efps-sign-type'=>'SHA256withRSA', 'x-efps-sign'=>$sign, 'x-efps-timestamp'=>date('YmdHis') ]; sr_log('yplheader'.json_encode($headers)); // J+08ZMVCkZnMq0roi3JikP//ODGsy9UvYBM09b921RvU0/3Z+4opOwAFQGPBLrKRGhkZzVhHRJwVDZHA9Iu/wWX13SJyowRYkr8zVsYivNQhYKyt3uPScdN/BVfLM3d5OuA9o2ypIqVuoinorYDsrqXixyYg7LEA4pWTDZc9dtuSRWFF+DFvLTW4UODyiwhBCq7bFaa+MOVmWuiahZMM79MhKxiTqsfFQLptsnlc2crlYuok2Bp2TAbEDM7FZhlLIGiidux0kaLhC3dK31tRc6Y72NlukXJc3sN4HVLqj0GAiw+9jzmGf0NwhvxdHvBC6/7uOp2ShCMxSXUA/qPbLmA7Vh/Zv0njHbxJ0j3oylrhjCjUKGPTKf//GD/vgnVQz2m3KXW6+60PBfWRYwQYkSPFRHj2lRALBYe97q4w0kWa9xO/2yRrIW2lNBqt7ZKSmSstsA+NgiOU4u/LCBmIoxMqk9HzygfDPLhQ9oimOuM/7d//qjP0z6mPD4SbhdVKjfgsp9yqN7h9jR3BJJxDGRAtzJJpDA6/YIcTbkDnJIvHwIx4Fkcf22tBYW436W7f +0GeMLxBp5mAr8qlDJt0R3GoPD4hZ5Omh/FxYhOjN9RKG8QcqSykZSQgYgVAKsGeFWVeXes2XNo2AB1F7MlGuZSypOTv73BL5iE75xJVjRupk6qplmOo2YHLKs8USDSX3Y+QprbAC8irxQ5QtK4ayGbLZ8BDHuKnGLLA1/ID++2ccYJsnfA+9cqvSTm8lo19W1btBl9iZQC8Wfv94rfDsIAe2pc3Gd+LJv47i1mwzK03SQ5c6W8LBxgtStinz/f8Rm5oVn6hTgoRfV93F8ZGRVj5K+KYva5qIjBSyweYToPoXCirUO0UdA96PmU7+oVVOVu4pDcqBJjuSxPXIzRLXbSQUlFHecKjedx2DuOlHPdVMhn2XRjpdd+Ka70Grbw0dro76EvaBzHC2x/rN7g8nIe7ReG4LS2ya07bIXrbHyk6b45XfrneBGHnKDpIX6ymlDKZ2NAWyfXkBEPhiQrsT3AVGrokFjMTRVqubXqRW29Q8if2C5MYduen34s3QtmVHaVUZ24N6cX5FIvCwZYIyBvpFrTCfQZztRz3QngjhclbngGGyBv040WFfQ/sqzkWgdO8XP7cIUWlKmD0xANVq9dQqQiwwcvYpWFzMTpQcw9daGYWltwfzKfRveVnXHyfxaq6XVeHlZCboTDv4Fg5/nVW+s4JCmTXNPedU53ZYcDkrrZcHbygFXgPPOM8KMlowq8KnA9lXUYunHATpa2Q9vKnTED8Ro9gn6IGFpGRdZIeuYOJ+vKMA9sy55AIQiJVUMit7iw2M0ZehPwm4k5Dpi6RMzgC/5+OZc1u+Rt13Borvd3/7EuyqaNwhUkITp7Kl0dv75PQkK0Btcsg+PLVs+2h+GadNurWhl3Bvo6y++5HbkcEfymSFV/phDaAZBTYQFyzjAJhwJizMUBp1HFOetOiLEZSs4iMPj/gwps0BSwqCCRFZXJj3ifLo+fi/bE3rU+/nHcTBo9Dhzw/EVE2KLF1QbZw3fGLnhHqCK+PyOv4i7NwEQKqsA== $response = $this->http_post_json($url, json_encode($params), $sign); sr_log('yplresponse'.json_encode($response)); if($response && $response[0] == 200){ $re_data = json_decode($response[1],true); if($re_data['returnCode'] == '0000') { $tn = $re_data['tn']; $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 13); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPL'=>['pay_url'=>$payurl]]]); return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPLYsf'=>['tn'=>$tn]]]); // } }else{ return api_error_return('获取失败,请联系客服'); } return api_error_return('获取失败,请联系客服'); // if (isset($res_decode->order_date) && isset($res_decode->order_token) && isset($res_decode->mchnt_cd) && isset($res_decode->order_id)){ // if ($res_decode->mchnt_cd == $mchnt_cd && $res_decode->order_id == $order_id ){ // $bank_params = [ // 'mchnt_cd'=>$mchnt_cd, // 'order_date'=>$order_date, // 'order_amt'=>bcmul($total_amount, 100, 0), // 'order_id'=>$order_id, // 'page_notifyurl'=>AESjiami(getWebUrl().'/api/thirdPayClSuccess'), // 'back_notifyurl'=>AESjiami(getWebUrl().'/api/BankResultFY'), // 'order_timestart'=>$order_timestart, // 'order_timeend'=>$order_timeend, // 'order_token'=>$res_decode->order_token // ]; // // $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 9); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayflyl'=>$bank_params]]); // }else{ // return api_error_return('获取失败,订单校验失败1'); // } // }else{ // return api_error_return('获取失败,订单校验失败'); // } return api_error_return('获取失败'); } // 汇付支付宝支付 public function getHfPayInfoHF($uid, $params){ // 加载基础 adapay 基础类 // SDK 初始化文件加载 // include_once dirname(__FILE__). "/../AdapaySdk/init.php"; include_once "../extend/thirdpay/AdapaySdk/init.php"; // 在文件中设置 DEBUG 为 true 时, 则可以打印日志到指定的日志目录下 LOG_DIR include_once "../extend/thirdpay/config.php"; list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // 这是测试 线要干掉 if (in_array(env('APP.CUR_SYS_PARAMS'), [1, 2])){ // 这是测试 线要干掉 $total_amount = floatval('1.'.mt_rand(1, 3).mt_rand(1, 9)); } // 商户号 // $mchnt_cd = env('api.PAY_FUYOU_MCHNT_id'); $time = time(); $time_end = time() + 2*60*60; // $order_date = sr_getcurtime($time, 'Ymd'); $order_timestart = sr_getcurtime($time, 'YmdHis'); $order_timeend = sr_getcurtime($time_end, 'YmdHis'); $order_id = $params['order_id']; $out_trade_no = 'HFPAY'.$order_id.mt_rand(1, 10000); // $success_url = getWebUrl().'/api/thirdPayClSuccess'; // $error_url = getWebUrl().'/api/thirdPayClError'; // $notify_url = getWebUrl().'/api/ZfbResultYPL'; // 商品订单信息 // {"businessType":"100007","goodsList":[{"amount":1,"name":"商品名称","number":"1箱"}],"id":"id34535"} // $orderInfo=array(); // $orderInfo['Id'] = 'id34535'; // $orderInfo['businessType'] = '130001'; // $orderInfo['goodsList'] = array(array('name'=>'pay','number'=>'one','amount'=>1)); // $order_timestart = sr_getcurtime($time, 'YmdHis'); // $params = [ // 'areaInfo'=>'440106', // 'attachData'=>'attachData', // 'clientIp'=>request()->ip(), // 'customerCode'=>'562012003860535', // 'nonceStr'=>nonce_str(32), // 'notifyUrl'=>$notify_url, // 'orderInfo'=>$orderInfo, // 'outTradeNo'=>$out_trade_no, // 'payAmount'=>bcmul($total_amount, 100, 0), // 'payCurrency'=>'CNY', //// 'payMethod'=>'7', // 'redirectUrl'=>$success_url, // 'transactionStartTime'=>date('YmdHis'), // 'version'=>'3.0' // ]; // sr_log('ypl'.json_encode($params)); // 测试 // $url = 'http://test-efps.epaylinks.cn'; // 正式 // $url = 'https://efps.epaylinks.cn'; // $url = $url . '/api/txs/pay/UnionAppPayment'; // $url = $url . 'api/txs/pay/UnifiedPayment'; // sr_log('yplurl:'.$url); // $ch = curl_init(); // curl_setopt($ch, CURLOPT_POST, 1); // curl_setopt($ch, CURLOPT_URL, $url); // // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过检查 // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过检查 //curl_setopt($ch, CURLOPT_HEADER, true); // curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); // $sign = $this->YPLsign(json_encode($params)); // $headers = [ //// 'Content-type: application/json', // 'x-efps-sign-no'=>'562012003860535001', // 'x-efps-sign-type'=>'SHA256withRSA', // 'x-efps-sign'=>$sign, // 'x-efps-timestamp'=>date('YmdHis') // ]; // sr_log('yplheader'.json_encode($headers)); // J+08ZMVCkZnMq0roi3JikP//ODGsy9UvYBM09b921RvU0/3Z+4opOwAFQGPBLrKRGhkZzVhHRJwVDZHA9Iu/wWX13SJyowRYkr8zVsYivNQhYKyt3uPScdN/BVfLM3d5OuA9o2ypIqVuoinorYDsrqXixyYg7LEA4pWTDZc9dtuSRWFF+DFvLTW4UODyiwhBCq7bFaa+MOVmWuiahZMM79MhKxiTqsfFQLptsnlc2crlYuok2Bp2TAbEDM7FZhlLIGiidux0kaLhC3dK31tRc6Y72NlukXJc3sN4HVLqj0GAiw+9jzmGf0NwhvxdHvBC6/7uOp2ShCMxSXUA/qPbLmA7Vh/Zv0njHbxJ0j3oylrhjCjUKGPTKf//GD/vgnVQz2m3KXW6+60PBfWRYwQYkSPFRHj2lRALBYe97q4w0kWa9xO/2yRrIW2lNBqt7ZKSmSstsA+NgiOU4u/LCBmIoxMqk9HzygfDPLhQ9oimOuM/7d//qjP0z6mPD4SbhdVKjfgsp9yqN7h9jR3BJJxDGRAtzJJpDA6/YIcTbkDnJIvHwIx4Fkcf22tBYW436W7f +0GeMLxBp5mAr8qlDJt0R3GoPD4hZ5Omh/FxYhOjN9RKG8QcqSykZSQgYgVAKsGeFWVeXes2XNo2AB1F7MlGuZSypOTv73BL5iE75xJVjRupk6qplmOo2YHLKs8USDSX3Y+QprbAC8irxQ5QtK4ayGbLZ8BDHuKnGLLA1/ID++2ccYJsnfA+9cqvSTm8lo19W1btBl9iZQC8Wfv94rfDsIAe2pc3Gd+LJv47i1mwzK03SQ5c6W8LBxgtStinz/f8Rm5oVn6hTgoRfV93F8ZGRVj5K+KYva5qIjBSyweYToPoXCirUO0UdA96PmU7+oVVOVu4pDcqBJjuSxPXIzRLXbSQUlFHecKjedx2DuOlHPdVMhn2XRjpdd+Ka70Grbw0dro76EvaBzHC2x/rN7g8nIe7ReG4LS2ya07bIXrbHyk6b45XfrneBGHnKDpIX6ymlDKZ2NAWyfXkBEPhiQrsT3AVGrokFjMTRVqubXqRW29Q8if2C5MYduen34s3QtmVHaVUZ24N6cX5FIvCwZYIyBvpFrTCfQZztRz3QngjhclbngGGyBv040WFfQ/sqzkWgdO8XP7cIUWlKmD0xANVq9dQqQiwwcvYpWFzMTpQcw9daGYWltwfzKfRveVnXHyfxaq6XVeHlZCboTDv4Fg5/nVW+s4JCmTXNPedU53ZYcDkrrZcHbygFXgPPOM8KMlowq8KnA9lXUYunHATpa2Q9vKnTED8Ro9gn6IGFpGRdZIeuYOJ+vKMA9sy55AIQiJVUMit7iw2M0ZehPwm4k5Dpi6RMzgC/5+OZc1u+Rt13Borvd3/7EuyqaNwhUkITp7Kl0dv75PQkK0Btcsg+PLVs+2h+GadNurWhl3Bvo6y++5HbkcEfymSFV/phDaAZBTYQFyzjAJhwJizMUBp1HFOetOiLEZSs4iMPj/gwps0BSwqCCRFZXJj3ifLo+fi/bE3rU+/nHcTBo9Dhzw/EVE2KLF1QbZw3fGLnhHqCK+PyOv4i7NwEQKqsA== // $response = $this->http_post_json($url, json_encode($params), $sign); # 初始化支付类 $payment = new \AdaPaySdk\Payment(); // sr_log('$total_amount'.$total_amount); // sr_throw(strval(intval($total_amount)).'.00'); # 支付设置 $payment_params = array( "app_id"=> "app_3906a188-adf7-4776-a126-fd1996b178d3", "order_no"=> $out_trade_no, "pay_channel"=> "alipay", "time_expire"=> $order_timeend, "pay_amt"=> strval(intval($total_amount)).'.00', "goods_title"=> "日用生活用品", "goods_desc"=> "多宝购买商品", "description"=> "购买商品", "notify_url"=>getWebUrl().'/api/ZfbResultHF' ); sr_log('汇付支付请求参数:'.json_encode($payment_params)); # 发起支付 $payment->create($payment_params); # 对支付结果进行处理 if ($payment->isError()){ //失败处理 $response = $payment->result; sr_log('hfresponseerror'.json_encode($response)); return api_error_return('获取失败,请联系客服'); } else { //成功处理 $response = $payment->result; $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 14); // sr_log('hfresponsesuccess'.json_encode($response)); // $info= json_decode($payment->result['expend']); // $payinfo = $info->pay_info; $bank_params = [ 'url'=>$response['expend']['pay_info'] ]; return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayhf'=>$bank_params]]); } return api_error_return('获取失败,请联系客服'); // if($response && $response[0] == 200){ // $re_data = json_decode($response[1],true); // if($re_data['returnCode'] == '0000') { // $tn = $re_data['tn']; // $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 13); //// return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPL'=>['pay_url'=>$payurl]]]); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPLYsf'=>['tn'=>$tn]]]); //// // } // // }else{ // return api_error_return('获取失败,请联系客服'); // } // // return api_error_return('获取失败,请联系客服'); // if (isset($res_decode->order_date) && isset($res_decode->order_token) && isset($res_decode->mchnt_cd) && isset($res_decode->order_id)){ // if ($res_decode->mchnt_cd == $mchnt_cd && $res_decode->order_id == $order_id ){ // $bank_params = [ // 'mchnt_cd'=>$mchnt_cd, // 'order_date'=>$order_date, // 'order_amt'=>bcmul($total_amount, 100, 0), // 'order_id'=>$order_id, // 'page_notifyurl'=>AESjiami(getWebUrl().'/api/thirdPayClSuccess'), // 'back_notifyurl'=>AESjiami(getWebUrl().'/api/BankResultFY'), // 'order_timestart'=>$order_timestart, // 'order_timeend'=>$order_timeend, // 'order_token'=>$res_decode->order_token // ]; // // $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 9); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayflyl'=>$bank_params]]); // }else{ // return api_error_return('获取失败,订单校验失败1'); // } // }else{ // return api_error_return('获取失败,订单校验失败'); // } return api_error_return('获取失败'); } // 易票联统一支付 public function getYsfPayInfoTY($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // 这是测试 线要干掉 // $total_amount = floatval('0.'.'1'.mt_rand(1, 9)); // $total_amount = 0.01; // 商户号 $mchnt_cd = env('api.PAY_FUYOU_MCHNT_id'); $time = time(); $time_end = time() + 2*60*60; $order_date = sr_getcurtime($time, 'Ymd'); $order_timestart = sr_getcurtime($time, 'YmdHis'); $order_timeend = sr_getcurtime($time_end, 'YmdHis'); $order_id = $params['order_id']; $out_trade_no = 'YPL'.$order_id.mt_rand(1, 10000); // $mess_arr = ['mchnt_cd'=>$mchnt_cd, 'order_date'=>$order_date, 'order_id'=>$params['order_id'], 'ver'=>'1.0.0']; //// sr_log('message_json'.json_encode($mess_arr)); // $params = ['mchnt_cd'=>$mchnt_cd, 'message'=>RSA_openssl(json_encode($mess_arr))]; $success_url = getWebUrl().'/api/thirdPayClSuccess'; $error_url = getWebUrl().'/api/thirdPayClError'; $notify_url = getWebUrl().'/api/ZfbResultYPL'; // 商品订单信息 // {"businessType":"100007","goodsList":[{"amount":1,"name":"商品名称","number":"1箱"}],"id":"id34535"} $orderInfo=array(); $orderInfo['Id'] = 'id34535'; $orderInfo['businessType'] = '130001'; $orderInfo['goodsList'] = array(array('name'=>'pay','number'=>'one','amount'=>1)); // $order_timestart = sr_getcurtime($time, 'YmdHis'); $params = [ 'areaInfo'=>'440106', 'attachData'=>'attachData', 'clientIp'=>request()->ip(), 'customerCode'=>'562012003860535', 'nonceStr'=>nonce_str(32), 'notifyUrl'=>$notify_url, 'orderInfo'=>$orderInfo, 'outTradeNo'=>$out_trade_no, 'payAmount'=>bcmul($total_amount, 100, 0), 'payCurrency'=>'CNY', // 'payMethod'=>'7', 'redirectUrl'=>$success_url, 'transactionStartTime'=>date('YmdHis'), 'version'=>'3.0' ]; sr_log('ypl'.json_encode($params)); // 测试 // $url = 'http://test-efps.epaylinks.cn'; // 正式 $url = 'https://efps.epaylinks.cn'; $url = $url . '/api/txs/pay/UnifiedPayment'; // $url = $url . 'api/txs/pay/UnifiedPayment'; sr_log('yplurl:'.$url); // $ch = curl_init(); // curl_setopt($ch, CURLOPT_POST, 1); // curl_setopt($ch, CURLOPT_URL, $url); // // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过检查 // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过检查 //curl_setopt($ch, CURLOPT_HEADER, true); // curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); // $sign = $this->YPLsign(json_encode($params)); $sign = '333'; $headers = [ // 'Content-type: application/json', 'x-efps-sign-no'=>'562012003860535001', 'x-efps-sign-type'=>'SHA256withRSA', 'x-efps-sign'=>$sign, 'x-efps-timestamp'=>date('YmdHis') ]; sr_log('yplheader'.json_encode($headers)); // J+08ZMVCkZnMq0roi3JikP//ODGsy9UvYBM09b921RvU0/3Z+4opOwAFQGPBLrKRGhkZzVhHRJwVDZHA9Iu/wWX13SJyowRYkr8zVsYivNQhYKyt3uPScdN/BVfLM3d5OuA9o2ypIqVuoinorYDsrqXixyYg7LEA4pWTDZc9dtuSRWFF+DFvLTW4UODyiwhBCq7bFaa+MOVmWuiahZMM79MhKxiTqsfFQLptsnlc2crlYuok2Bp2TAbEDM7FZhlLIGiidux0kaLhC3dK31tRc6Y72NlukXJc3sN4HVLqj0GAiw+9jzmGf0NwhvxdHvBC6/7uOp2ShCMxSXUA/qPbLmA7Vh/Zv0njHbxJ0j3oylrhjCjUKGPTKf//GD/vgnVQz2m3KXW6+60PBfWRYwQYkSPFRHj2lRALBYe97q4w0kWa9xO/2yRrIW2lNBqt7ZKSmSstsA+NgiOU4u/LCBmIoxMqk9HzygfDPLhQ9oimOuM/7d//qjP0z6mPD4SbhdVKjfgsp9yqN7h9jR3BJJxDGRAtzJJpDA6/YIcTbkDnJIvHwIx4Fkcf22tBYW436W7f +0GeMLxBp5mAr8qlDJt0R3GoPD4hZ5Omh/FxYhOjN9RKG8QcqSykZSQgYgVAKsGeFWVeXes2XNo2AB1F7MlGuZSypOTv73BL5iE75xJVjRupk6qplmOo2YHLKs8USDSX3Y+QprbAC8irxQ5QtK4ayGbLZ8BDHuKnGLLA1/ID++2ccYJsnfA+9cqvSTm8lo19W1btBl9iZQC8Wfv94rfDsIAe2pc3Gd+LJv47i1mwzK03SQ5c6W8LBxgtStinz/f8Rm5oVn6hTgoRfV93F8ZGRVj5K+KYva5qIjBSyweYToPoXCirUO0UdA96PmU7+oVVOVu4pDcqBJjuSxPXIzRLXbSQUlFHecKjedx2DuOlHPdVMhn2XRjpdd+Ka70Grbw0dro76EvaBzHC2x/rN7g8nIe7ReG4LS2ya07bIXrbHyk6b45XfrneBGHnKDpIX6ymlDKZ2NAWyfXkBEPhiQrsT3AVGrokFjMTRVqubXqRW29Q8if2C5MYduen34s3QtmVHaVUZ24N6cX5FIvCwZYIyBvpFrTCfQZztRz3QngjhclbngGGyBv040WFfQ/sqzkWgdO8XP7cIUWlKmD0xANVq9dQqQiwwcvYpWFzMTpQcw9daGYWltwfzKfRveVnXHyfxaq6XVeHlZCboTDv4Fg5/nVW+s4JCmTXNPedU53ZYcDkrrZcHbygFXgPPOM8KMlowq8KnA9lXUYunHATpa2Q9vKnTED8Ro9gn6IGFpGRdZIeuYOJ+vKMA9sy55AIQiJVUMit7iw2M0ZehPwm4k5Dpi6RMzgC/5+OZc1u+Rt13Borvd3/7EuyqaNwhUkITp7Kl0dv75PQkK0Btcsg+PLVs+2h+GadNurWhl3Bvo6y++5HbkcEfymSFV/phDaAZBTYQFyzjAJhwJizMUBp1HFOetOiLEZSs4iMPj/gwps0BSwqCCRFZXJj3ifLo+fi/bE3rU+/nHcTBo9Dhzw/EVE2KLF1QbZw3fGLnhHqCK+PyOv4i7NwEQKqsA== // $response = $this->http_post_json($url, json_encode($params), $sign); // sr_log('yplresponse'.json_encode($response)); // if($response && $response[0] == 200){ // $re_data = json_decode($response[1],true); // if($re_data['returnCode'] == '0000') { // $tn = $re_data['tn']; $tn = 'aaaa'; $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 13); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPL'=>['pay_url'=>$payurl]]]); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPLYsf'=>['tn'=>$tn]]]); return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPLYsf'=>['tn'=>$out_trade_no]]]); // // // } // }else{ // return api_error_return('获取失败,请联系客服'); // } return api_error_return('获取失败,请联系客服'); // if (isset($res_decode->order_date) && isset($res_decode->order_token) && isset($res_decode->mchnt_cd) && isset($res_decode->order_id)){ // if ($res_decode->mchnt_cd == $mchnt_cd && $res_decode->order_id == $order_id ){ // $bank_params = [ // 'mchnt_cd'=>$mchnt_cd, // 'order_date'=>$order_date, // 'order_amt'=>bcmul($total_amount, 100, 0), // 'order_id'=>$order_id, // 'page_notifyurl'=>AESjiami(getWebUrl().'/api/thirdPayClSuccess'), // 'back_notifyurl'=>AESjiami(getWebUrl().'/api/BankResultFY'), // 'order_timestart'=>$order_timestart, // 'order_timeend'=>$order_timeend, // 'order_token'=>$res_decode->order_token // ]; // // $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 9); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayflyl'=>$bank_params]]); // }else{ // return api_error_return('获取失败,订单校验失败1'); // } // }else{ // return api_error_return('获取失败,订单校验失败'); // } return api_error_return('获取失败'); } // 易票联进件申请 public function getYsfPayJJSubmit($uid, $params){ // list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // 这是测试 线要干掉 // $total_amount = floatval('0.'.'1'.mt_rand(1, 9)); // $total_amount = 0.01; $time = time(); $time_end = time() + 2*60*60; $order_date = sr_getcurtime($time, 'Ymd'); $order_timestart = sr_getcurtime($time, 'YmdHis'); $order_timeend = sr_getcurtime($time_end, 'YmdHis'); // $order_id = $params['order_id']; // $out_trade_no = 'YPL'.$order_id.mt_rand(1, 10000); // $mess_arr = ['mchnt_cd'=>$mchnt_cd, 'order_date'=>$order_date, 'order_id'=>$params['order_id'], 'ver'=>'1.0.0']; //// sr_log('message_json'.json_encode($mess_arr)); // $params = ['mchnt_cd'=>$mchnt_cd, 'message'=>RSA_openssl(json_encode($mess_arr))]; $success_url = 'https://api.meikangjw.com/api/yplApplyResult'; $error_url = getWebUrl().'/api/thirdPayClError'; $notify_url = getWebUrl().'/api/ZfbResultYPL'; // 商品订单信息 // {"businessType":"100007","goodsList":[{"amount":1,"name":"商品名称","number":"1箱"}],"id":"id34535"} // $orderInfo=array(); // $orderInfo['Id'] = 'id34535'; // $orderInfo['businessType'] = '130001'; // $orderInfo['goodsList'] = array(array('name'=>'pay','number'=>'one','amount'=>1)); // $order_timestart = sr_getcurtime($time, 'YmdHis'); $paper = array(); //------------------------------------------------------- // 经营地址 $paper['businessAddress'] = '重庆市渝北区回兴街道宝圣大道209号西政国际学术交流中心1幢'; // 证件人姓名 $paper['certificateName']='胡明冬'; // 证件效期(截止) 无限期填写“长期” $paper['certificateTo']='20270104'; // 省 $paper['province']='500000'; // 市 $paper['city']='500100'; // 区 $paper['area'] = '500112'; // MCC 码 参考附件商户类别 MCC 码 $paper['mcc']= '5399'; // 联系人姓名 $paper['contactPerson']='胡明冬'; // 联系人手机号码 $paper['contactPhone']='13330218461'; // 邮箱地址 $paper['email']='845313908@qq.com'; // $paper['isCc']='1'; // 证件号码 $paper['lawyerCertNo']='513002199602181213'; //// 证件背面 $paper['lawyerCertPhotoBack']= 'https://api.meikangjw.com/upload/20220707/42b46e4e6b82c81b9bb3c72d1c630c80.jpg'; /// // 证件正面照 $paper['lawyerCertPhotoFront']= 'https://api.meikangjw.com/upload/20220707/5fa0ff6cc891e545c1aa423db7613f63.jpg'; // 0:身份证;1:居住证;2:签证;3:护照;4:户口本;5:军人证;6:团员证;7:党员证;8:港澳通行证;9:台胞证;11:临时身份证;12:回乡证;13:营业执照:14:组织机构代码证;15:驾驶证;99:其他目前仅支持 0:身份证 $paper['lawyerCertType']= '0'; // 开户银行 填写银行名称,参见附件银行 $paper['openBank']='中国工商银行'; // 开户行联行号 settleAccountType 为“1:对公账户”时必填,参见附件支行及联行号 查询不到 看链接查询 https://www.lianhanghao.com/ $paper['openBankCode']='102290010045'; // 开户支行 settleAccountType 为“1:对公账户”时必填 $paper['openSubBank']='中国工商银行股份有限公司上海市闵行支行'; // 客服电话 $paper['serviceTel']='13330218461'; // 结算账户名 ①merchantType=1、2 且 settleAccountType=1 时,需与merchantName 一致; ②merchantType=1、2 且 settleAccountType=2 时,需与lawyerName 一致; ③merchantType=3 时,需与 certificateName 一致。 $paper['settleAccount']='胡明冬'; // 1:个体工商户;2:企业;3:个人(小微);4:政府 事业单位;9:其他组织 $paper['merchantType']='3'; // 结算账户类型 1:对公账户 2:法人账户 3:授权对公 4:授权对私 merchantType=3 时必填 2。 $paper['settleAccountType']='2'; // 银行卡正面照 $paper['bankCardPhotoFront'] = 'https://api.meikangjw.com/upload/20220707/1d80b9edb7773c0d1313270a9b39da6c.jpeg'; // 银行卡背面照 $paper['bankCardPhotoBack'] = 'https://api.meikangjw.com/upload/20220707/aff7377fff22225bff320a51cddaa75d.jpeg'; // 结算账户号 $paper['settleAccountNo']='6222031001022713072'; // 提现方式 1:自动提现;2:手动提现 $paper['settleTarget']='2'; // 商户简称 $paper['shortName']='hmd_xiaowei'; //------------------------------------------------------- //// 银行卡背面照 // $paper['bankCardPhotoBack']= 'http://api.meikangjw.com/upload/common/bank2.jpeg'; //// 银行卡正面照 // $paper['bankCardPhotoFront']= 'http://api.meikangjw.com/upload/common/bank1.jpeg'; // $paper['businessAddress'] = '四川省成都市天府新区华阳正北中街40号附70号'; // $paper['businessLicenseCode'] = '91510100MA7HGL78XY'; // $paper['businessLicenseFrom']= '20220304'; // $paper['businessLicenseName']= '四川蜀盛锦蓉科技有限公司'; //// 营业执照照片 // $paper['businessLicensePhoto']= 'http://api.meikangjw.com/upload/common/zhizhao.jpeg'; // $paper['businessLicenseTo']='长期'; // $paper['businessScope']='一般项目:技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广:计算机软硬件及辅助设备批发;计算机软硬件网设备销售'; //// $paper['businessScope']='技术服务'; // $paper['certificateFrom']='20160620'; // $paper['lawyerName']='张华贵'; // $paper['licenceAccount']='四川蜀盛锦蓉科技有限公司'; // $paper['licenceAccountNo']='22827401040017379'; // $paper['licenceOpenBank']='中国农业银行'; // $paper['licenceOpenSubBank']='中国农业银行股份有限公司成都华阳支行'; // $paper['openBankReservePhone']='19939960631'; //// 营业执照照片 // $paper['openingLicenseAccountPhoto']='http://api.meikangjw.com/upload/common/zhizhao.jpeg'; // $paper['organizationCode']= '91510100MA7HGL78XY'; // $paper['organizationCodeFrom']='20220304'; //// 组织机构代码照片 // $paper['organizationCodePhoto']='http://api.meikangjw.com/upload/common/zhizhao.jpeg'; // $paper['organizationCodeTo']='长期'; // $paper['otherPhoto']= array('http://api.meikangjw.com/upload/common/store_neibu.jpg', 'http://api.meikangjw.com/upload/common/store_neibu1.jpg'); // $paper['registerAddress']= '四川省成都市天府新区华阳正北中街40号附70号'; // 门店收银台照 // $paper['storeCashierPhoto']='http://api.meikangjw.com/upload/common/store.jpg'; // 门店内景照 $paper['storeHallPhoto']='https://api.meikangjw.com/upload/20220711/a9ed2ef249e919c8432f756bd4b29a0a.jpg'; // 门店门头照 $paper['storeHeadPhoto']='https://api.meikangjw.com/upload/20220711/e3491c28c5096fc20b6c84efff3b003e.jpg'; // 门店外景照 $paper['storeShopPhoto']='https://api.meikangjw.com/upload/20220711/e3491c28c5096fc20b6c84efff3b003e.jpg'; // $paper['unionShortName']='蜀盛锦蓉店铺'; // refundFeeRate 退款手续费费率 // settleCycle 结算周期 // stage 手续费费率 // stage.amountFrom 阶梯起始交易金额 // stage.feePer 单笔收费 // stage.feeRate 按比例收费 // 代付带储蓄卡 $b_withdraw = array('bankStage'=>[],'businessCode'=>'WITHDRAW','creditcardsEnabled'=>0,'refundEnabled'=>1,'refundFeePer'=>0,'refundFeeRate'=>0,'settleCycle'=>'D+0','stage'=>array(array('amountFrom'=>0, 'feePer'=>200))); // array_push($business, $b_withdraw); // 支付宝 主扫支付 $b_alinav = array('bankStage'=>[],'businessCode'=>'ALI_NATIVE_PAY','creditcardsEnabled'=>0,'refundEnabled'=>1,'refundFeePer'=>0,'refundFeeRate'=>0,'settleCycle'=>'D+1','stage'=>array(array('amountFrom'=>0, 'feeRate'=>60))); // array_push($business, $b_alinav); // 微信 主扫支付 // $b_weichatnav = array('bankStage'=>[],'businessCode'=>'WX_NATIVE_PAY','creditcardsEnabled'=>0,'refundEnabled'=>1,'refundFeePer'=>0,'refundFeeRate'=>0,'settleCycle'=>'D+1','stage'=>array(array('amountFrom'=>0, 'feeRate'=>60))); // array_push($business, $b_weichatnav); // 支付宝生活号支付 $b_alinav1 = array('bankStage'=>[],'businessCode'=>'ALI_JSAPI_PAY','creditcardsEnabled'=>0,'refundEnabled'=>1,'refundFeePer'=>0,'refundFeeRate'=>0,'settleCycle'=>'D+1','stage'=>array(array('amountFrom'=>0, 'feeRate'=>60))); // array_push($business, $b_alinav1); // $business = array($b_withdraw, $b_alinav, $b_weichatnav, $b_alinav1); $business = array($b_withdraw, $b_alinav, $b_alinav1); // $business = array($b_withdraw, $b_alinav); // sr_log($business); $params = [ // 是否收单 1 是,0 否 'acceptOrder'=>'1', // 平台商户编号 'acqSpId'=>'562012003860535', // 支付宝 MCC // 'alipayMcc'=>'5411', // 平台商户支付宝渠道商 PID // 'alipayChannelId'=>'', // 审核回调地址 'backUrl'=>$success_url, 'business'=>$business, // 填写进件的小微名字 // 个体户名称商户名称的,命名规则,按照银联标准进行 名称(市+地区+行业+姓名+个体户) // 小微商户名称,命名规则(地区+店铺名称) 'merchantName'=>'重庆闲食有趣', // 是否开户 'openAccount'=>'1', 'paper'=>json_encode($paper), // 更换子商户信息必传 'acqMerId'=>562227003867484 ]; sr_log('yplpaper'.json_encode($paper)); sr_log('ypl'.json_encode($params)); // return api_succ_return('成功'); // 测试 // $url = 'http://test-efps.epaylinks.cn'; // 正式 $url = 'https://efps.epaylinks.cn'; // 商户进件或者补件 $url = $url . '/api/cust/SP/Merchant/apply'; // $url = $url . 'api/txs/pay/UnifiedPayment'; sr_log('yplurl:'.$url); // $ch = curl_init(); // curl_setopt($ch, CURLOPT_POST, 1); // curl_setopt($ch, CURLOPT_URL, $url); // // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过检查 // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过检查 //curl_setopt($ch, CURLOPT_HEADER, true); // curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); $sign = $this->YPLsign(json_encode($params)); $headers = [ // 'Content-type: application/json', 'x-efps-sign-no'=>'562012003860535001', 'x-efps-sign-type'=>'SHA256withRSA', 'x-efps-sign'=>$sign, 'x-efps-timestamp'=>date('YmdHis') ]; sr_log('yplheader'.json_encode($headers)); // J+08ZMVCkZnMq0roi3JikP//ODGsy9UvYBM09b921RvU0/3Z+4opOwAFQGPBLrKRGhkZzVhHRJwVDZHA9Iu/wWX13SJyowRYkr8zVsYivNQhYKyt3uPScdN/BVfLM3d5OuA9o2ypIqVuoinorYDsrqXixyYg7LEA4pWTDZc9dtuSRWFF+DFvLTW4UODyiwhBCq7bFaa+MOVmWuiahZMM79MhKxiTqsfFQLptsnlc2crlYuok2Bp2TAbEDM7FZhlLIGiidux0kaLhC3dK31tRc6Y72NlukXJc3sN4HVLqj0GAiw+9jzmGf0NwhvxdHvBC6/7uOp2ShCMxSXUA/qPbLmA7Vh/Zv0njHbxJ0j3oylrhjCjUKGPTKf//GD/vgnVQz2m3KXW6+60PBfWRYwQYkSPFRHj2lRALBYe97q4w0kWa9xO/2yRrIW2lNBqt7ZKSmSstsA+NgiOU4u/LCBmIoxMqk9HzygfDPLhQ9oimOuM/7d//qjP0z6mPD4SbhdVKjfgsp9yqN7h9jR3BJJxDGRAtzJJpDA6/YIcTbkDnJIvHwIx4Fkcf22tBYW436W7f +0GeMLxBp5mAr8qlDJt0R3GoPD4hZ5Omh/FxYhOjN9RKG8QcqSykZSQgYgVAKsGeFWVeXes2XNo2AB1F7MlGuZSypOTv73BL5iE75xJVjRupk6qplmOo2YHLKs8USDSX3Y+QprbAC8irxQ5QtK4ayGbLZ8BDHuKnGLLA1/ID++2ccYJsnfA+9cqvSTm8lo19W1btBl9iZQC8Wfv94rfDsIAe2pc3Gd+LJv47i1mwzK03SQ5c6W8LBxgtStinz/f8Rm5oVn6hTgoRfV93F8ZGRVj5K+KYva5qIjBSyweYToPoXCirUO0UdA96PmU7+oVVOVu4pDcqBJjuSxPXIzRLXbSQUlFHecKjedx2DuOlHPdVMhn2XRjpdd+Ka70Grbw0dro76EvaBzHC2x/rN7g8nIe7ReG4LS2ya07bIXrbHyk6b45XfrneBGHnKDpIX6ymlDKZ2NAWyfXkBEPhiQrsT3AVGrokFjMTRVqubXqRW29Q8if2C5MYduen34s3QtmVHaVUZ24N6cX5FIvCwZYIyBvpFrTCfQZztRz3QngjhclbngGGyBv040WFfQ/sqzkWgdO8XP7cIUWlKmD0xANVq9dQqQiwwcvYpWFzMTpQcw9daGYWltwfzKfRveVnXHyfxaq6XVeHlZCboTDv4Fg5/nVW+s4JCmTXNPedU53ZYcDkrrZcHbygFXgPPOM8KMlowq8KnA9lXUYunHATpa2Q9vKnTED8Ro9gn6IGFpGRdZIeuYOJ+vKMA9sy55AIQiJVUMit7iw2M0ZehPwm4k5Dpi6RMzgC/5+OZc1u+Rt13Borvd3/7EuyqaNwhUkITp7Kl0dv75PQkK0Btcsg+PLVs+2h+GadNurWhl3Bvo6y++5HbkcEfymSFV/phDaAZBTYQFyzjAJhwJizMUBp1HFOetOiLEZSs4iMPj/gwps0BSwqCCRFZXJj3ifLo+fi/bE3rU+/nHcTBo9Dhzw/EVE2KLF1QbZw3fGLnhHqCK+PyOv4i7NwEQKqsA== $response = $this->http_post_json($url, json_encode($params), $sign); sr_log('yplresponse'.json_encode($response)); if($response && $response[0] == 200){ $re_data = json_decode($response[1],true); if($re_data['respCode'] == '0000') { // $tn = $re_data['tn']; // $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 13); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPL'=>['pay_url'=>$payurl]]]); return api_succ_return('成功'); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPLYsf'=>['tn'=>$tn]]]); // }else{ return api_error_return($re_data['respMsg']); } }else{ return api_error_return('获取失败,请联系客服'); } return api_error_return('获取失败,请联系客服'); return api_error_return('获取失败'); } protected function http_post_json($url, $jsonStr,$sign) { $ch = curl_init(); $headers = array( 'Content-Type: application/json; charset=utf-8', 'Content-Length: ' . strlen($jsonStr), 'x-efps-sign-no:'.'562012003860535001', 'x-efps-sign-type:SHA256withRSA', 'x-efps-sign:'.$sign, 'x-efps-timestamp:'.date('YmdHis'), ); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过检查 //curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); return array($httpCode, $response); } protected function YPLsign($data) { $certs = array(); if (env("app.CUR_SYS_PARAMS") == 1){ //其中password为你的证书密码 openssl_pkcs12_read(file_get_contents('/Users/sunriseos/Documents/www/wwwroot/cert/ypl/user-rsa.pfx'), $certs, 'zy2033.'); }else{ openssl_pkcs12_read(file_get_contents('/www/wwwroot/cert/ypl/user-rsa.pfx'), $certs, 'zy2033.'); //其中password为你的证书密码 } ($certs) or die('您使用的私钥格式错误,请检查RSA私钥配置'); openssl_sign($data, $sign, $certs['pkey'],OPENSSL_ALGO_SHA256); $sign = base64_encode($sign); return $sign; } /** * 费用配置 * @param int $uid * @param array $data * @param int $type * @return array */ public function _payConf(int $uid, array $data, int $type = 1) { $body = $total_amount = $remarks = ''; switch ($data['order_type']) { case 1: // 充值 $body = '充值'; $total_amount = $data['money']; break; case 2: // 实名认证 $total_amount = Db::name('user_data')->where('uid', $uid)->value('rz_money'); // if (!$total_amount || $total_amount < 1.5) // throw new Exception('认证费用不正确'); $body = '实名认证费用'; // $body = '购买商品'; break; case 3: // 开通会员 $vip_money = env('app.VIP_MONEY', 38); if (!$vip_money > 0) { throw new Exception('会员配置不存在'); } $body = '开通会员'; $total_amount = $vip_money; $remarks = $data['order_id']; break; case 4: //购买商品 $order_sn = $data['order_id']; // $checkingOrder = Order::checkingOrder($order_sn, $data['money'], $uid); // new $checkingOrder = Order::checkingOrder($order_sn, 0, $uid); if (!$checkingOrder) { throw new Exception('校验订单失败'); } if ($checkingOrder['flag'] !== 200) { throw new Exception($checkingOrder['msg']); } $body = '购买商品'; $total_amount = $checkingOrder['orderPayment']; $remarks = $order_sn; //更改订单支付状态为线下支付待审核状态 if ($data['channel'] == 4 && $data['order_type'] == 4) { Order::where('order_sn', 'in', $order_sn)->save(['pay_type' => 4, 'status' => 4]); } break; case 5: //余额充值 { if (intval($data['money']) < 0){ sr_throw('金额填写错误,请填写整数'); } if (!str_is_int($data['money'])){ sr_throw('充值金额有误,请输入正整数'); } if ($data['money'] > 10000 || $data['money'] < 20){ sr_throw('请输入20到10000之间金额充值'); } if ($data['channel'] == 19){ $usdt_price = Db::name('system_config')->where('name', 'usdt_price')->where('group', 'usdt_price')->value('value'); } // 保留两位小数进一 // ceil($data['money']/$usdt_price * 100)/100 $charge_sn = createdRechargeOrderSn(); Db::name('recharge_order')->insertGetId([ 'recharge_sn'=>$charge_sn, 'payment'=>$data['money'], 'total_price'=>$data['money'], 'usdt_money'=>($data['channel']==19?ceil($data['money']/$usdt_price * 100)/100:0), 'user_id'=>$uid, 'pay_type'=>$data['channel'], 'status'=>1, 'expires_time'=>sr_getcurtime(time()+0.5*3600), 'created_time'=>sr_getcurtime(time()) ]); $count = Db::name('recharge_order')->where('user_id', $uid)->where('pay_type', $data['channel'])->where('status', 1)->whereTime('created_time', '-2 hours')->count('order_id'); if ($count > 20){ sr_throw('未支付订单过多请2小时后在试'); } // $order_sn = $data['order_id']; //// $checkingOrder = Order::checkingOrder($order_sn, $data['money'], $uid); // // new // $checkingOrder = Order::checkingOrder($order_sn, 0, $uid); // if (!$checkingOrder) { // throw new Exception('校验订单失败'); // } // if ($checkingOrder['flag'] !== 200) { // throw new Exception($checkingOrder['msg']); // } $body = '用户充值'; $total_amount = $data['money']; $remarks = $charge_sn; // //更改订单支付状态为线下支付待审核状态 // if ($data['channel'] == 4 && $data['order_type'] == 4) { // Order::where('order_sn', 'in', $order_sn)->save(['pay_type' => 4, 'status' => 4]); // } } break; case 6: { // 保留两位小数进一 // ceil($data['money']/$usdt_price * 100)/100 $money = env('boxsetting.SERVICES_STORE_OPEN_PRICE'); $charge_sn = createdRechargeOrderSn(); Db::name('services_order')->insertGetId([ 'recharge_sn'=>$charge_sn, 'payment'=>$money, 'total_price'=>$money, 'usdt_money'=>0, 'user_id'=>$uid, 'pay_type'=>$data['channel'], 'status'=>1, 'expires_time'=>sr_getcurtime(time()+0.5*3600), 'created_time'=>sr_getcurtime(time()) ]); $count = Db::name('services_order')->where('user_id', $uid)->where('pay_type', $data['channel'])->where('status', 1)->whereTime('created_time', '-2 hours')->count('order_id'); if ($count > 20){ sr_throw('未支付订单过多请稍后在试'); } $body = '用户购买服务商服务'; $total_amount = $money; $remarks = $charge_sn; } break; } if (!$body || !$total_amount || $total_amount <= 0) throw new Exception('配置错误'); return [$body, $type == 1 ? $total_amount : bcmul($total_amount, 100, 2), $data['order_type'], $remarks, $data['trade_type'], $data['channel'], isset($data['voucher_img']) ? $data['voucher_img'] : '']; } public function getPayInfoSQZ($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); $sign_info = Db::name('user_bank_sign')->where('uid', $uid)->where('id', $params['sign_id'])->find(); if (!$sign_info){ sr_throw('参数错误'); } // if ($total_amount>2000){ // sr_throw('暂时只支持2000以下商品支付'); // } $order_id = ''; if ($order_type == 4){ $order_id = $params['order_id']; } if ($order_type == 5){ $order_id = $remarks; } if ($order_type == 6){ // 如果是购买服务商订单 order_id 就是 services_order 里面的order_id $order_id = $remarks; } $out_trade_no = 'SY'.$order_id.mt_rand(1, 10000); // PAYBACK_URL $pay_success_backurl = env('PAYSQZ.PAYBACK_URL'); if (in_array(env('APP.CUR_SYS_PARAMS'), [1, 2])){ // 这是测试 线要干掉 $total_amount = floatval('0.'.mt_rand(1, 3).mt_rand(1, 9)); } $parterid = env('PAYSQZ.PARTER'); $params = [ 'parter'=>$parterid, 'type'=>1000, 'value'=>$total_amount, 'orderid'=>$out_trade_no, 'callbackurl'=>$pay_success_backurl, 'payerIp'=>request()->ip(), 'userno'=>$sign_info['userno'] ]; // 提交确定支付 // sr_log('确认支付:'.json_encode($params)); $params['sign'] = md5('parter='.$parterid.'&type='.'1000'.'&value='.$total_amount.'&orderid='.$out_trade_no.'&callbackurl='.$pay_success_backurl.env('PAYSQZ.SIGNKEY')); $res = _curlrequest('http://pay.xindonglife.com/chargebank.aspx', $params, 'post'); // 这是测试 上线要干掉 // sr_log('确认支付:'.$res); // sr_log('sign:'.$res); $res = json_decode($res); if (isset($res->code) && $res->code == 'SUCCESS'){ // $this->setPaymentOrder(compact('body', 'out_trade_no','total_amount', 'remarks', 'uid', 'trade_type', 'order_type', 'pay_way', 'voucher_img'), 13); $insert = [ 'total_fee' => $total_amount, 'trade_type' => $trade_type, 'body' => $body, 'state' => 7, 'out_trade_no' => $out_trade_no, 'pay_way' => $pay_way, 'remarks' => $remarks, 'order_type' => $order_type, 'uid' => $uid, 'voucher_img' => $voucher_img, 'out_trade_no1'=>$res->orderid, 'hy_token_id'=>$res->hy_token_id ]; Db::name('payment')->insert($insert); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPL'=>['pay_url'=>$payurl]]]); // return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYPLYsf'=>['tn'=>$tn]]]); return api_succ_return(['msg'=>'成功', 'data'=>['thirdpaySYL'=>['orderid'=>$res->orderid,'mobile'=>$sign_info['phone']]]]); }else{ sr_log('error'.json_encode($res)); } } public function getPayInfoSQZAlipay($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // $sign_info = Db::name('user_bank_sign')->where('uid', $uid)->where('id', $params['sign_id'])->find(); // if (!$sign_info){ // sr_throw('参数错误'); // } $order_id = ''; if ($order_type == 4){ $order_id = $params['order_id']; } if ($order_type == 5){ $order_id = $remarks; } // $out_trade_no = 'SYP'.$order_id.mt_rand(1, 99); $out_trade_no = 'SA'.$order_id.mt_rand(1, 10000); // $has_get = false; // if ($pay_info = Db::name('payment')->where('remarks', $params['order_id'])->where('pay_way', 16)->where('state', 7)->find()){ // $has_get = true; // $out_trade_no = $pay_info['out_trade_no']; // } // PAYBACK_URL $pay_success_backurl = env('PAYSQZ.PAYAliBACK_URL'); // $total_amount = 1; if (in_array(env('APP.CUR_SYS_PARAMS'), [1, 2])){ // 这是测试 线要干掉 $total_amount = floatval('0.'.mt_rand(1, 3).mt_rand(1, 9)); } $parterid = env('PAYSQZ.PARTER'); $params = [ 'parter'=>$parterid, 'type'=>1010, 'value'=>$total_amount, 'orderid'=>$out_trade_no, 'callbackurl'=>$pay_success_backurl, 'payerIp'=>request()->ip() ]; // 提交确定支付 sr_log('确认支付支付宝:'.json_encode($params)); $params['sign'] = md5('parter='.$parterid.'&type='.'1010'.'&value='.$total_amount.'&orderid='.$out_trade_no.'&callbackurl='.$pay_success_backurl.env('PAYSQZ.SIGNKEY')); $url = 'http://pay.xindonglife.com/chargebank.aspx'; // if (!$has_get){ $insert = [ 'total_fee' => $total_amount, 'trade_type' => $trade_type, 'body' => $body, 'state' => 7, 'out_trade_no' => $out_trade_no, 'pay_way' => $pay_way, 'remarks' => $remarks, 'order_type' => $order_type, 'uid' => $uid, 'voucher_img' => $voucher_img, 'out_trade_no1'=>'', 'hy_token_id'=>'' ]; Db::name('payment')->insert($insert); // } $pay_url = $url . '?' . http_build_query($params); sr_log('支付宝支付链接:'.$pay_url); return api_succ_return(['msg'=>'成功', 'data'=>['thirdpaySQZAlipay'=>['pay_url'=>$pay_url]]]); } public function getPayInfoSQZWechat($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // $sign_info = Db::name('user_bank_sign')->where('uid', $uid)->where('id', $params['sign_id'])->find(); // if (!$sign_info){ // sr_throw('参数错误'); // } $order_id = ''; if ($order_type == 4){ $order_id = $params['order_id']; } if ($order_type == 5){ $order_id = $remarks; } $out_trade_no = 'Sw'.$order_id.mt_rand(1, 10000); // $has_get = false; // if ($pay_info = Db::name('payment')->where('remarks', $params['order_id'])->where('pay_way', 16)->where('state', 7)->find()){ // $has_get = true; // $out_trade_no = $pay_info['out_trade_no']; // } // PAYBACK_URL $pay_success_backurl = env('PAYSQZ.PAYWeixinBACK_URL'); // $total_amount = 1; if (in_array(env('APP.CUR_SYS_PARAMS'), [1, 2])){ // 这是测试 线要干掉 $total_amount = floatval('0.'.mt_rand(1, 3).mt_rand(1, 9)); } $parterid = env('PAYSQZ.PARTER'); $type = 1004; $params = [ 'parter'=>$parterid, 'type'=>$type, 'value'=>$total_amount, 'orderid'=>$out_trade_no, 'callbackurl'=>$pay_success_backurl, 'payerIp'=>request()->ip() ]; // 提交确定支付 sr_log('确认支付:'.json_encode($params)); $params['sign'] = md5('parter='.$parterid.'&type='.$type.'&value='.$total_amount.'&orderid='.$out_trade_no.'&callbackurl='.$pay_success_backurl.env('PAYSQZ.SIGNKEY')); $url = 'http://pay.xindonglife.com/chargebank.aspx'; // if (!$has_get){ $insert = [ 'total_fee' => $total_amount, 'trade_type' => $trade_type, 'body' => $body, 'state' => 7, 'out_trade_no' => $out_trade_no, 'pay_way' => $pay_way, 'remarks' => $remarks, 'order_type' => $order_type, 'uid' => $uid, 'voucher_img' => $voucher_img, 'out_trade_no1'=>'', 'hy_token_id'=>'' ]; Db::name('payment')->insert($insert); // } return api_succ_return(['msg'=>'成功', 'data'=>['thirdpaySQZ'=>['pay_url'=>$url . '?' . http_build_query($params)]]]); } public function getPayInfoSQZBankkuai($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // $sign_info = Db::name('user_bank_sign')->where('uid', $uid)->where('id', $params['sign_id'])->find(); // if (!$sign_info){ // sr_throw('参数错误'); // } $order_id = ''; if ($order_type == 4){ $order_id = $params['order_id']; } if ($order_type == 5){ $order_id = $remarks; } $out_trade_no = 'SK'.$order_id.mt_rand(1, 10000); // $has_get = false; // if ($pay_info = Db::name('payment')->where('remarks', $params['order_id'])->where('pay_way', 16)->where('state', 7)->find()){ // $has_get = true; // $out_trade_no = $pay_info['out_trade_no']; // } // PAYBACK_URL $pay_success_backurl = env('PAYSQZ.PAYKUAIJIEBACK_URL'); // $total_amount = 1; if (in_array(env('APP.CUR_SYS_PARAMS'), [1, 2])){ // 这是测试 线要干掉 $total_amount = floatval('0.'.mt_rand(1, 3).mt_rand(1, 9)); } $parterid = env('PAYSQZ.SXY_PARTER'); $type = 967; $params = [ 'parter'=>$parterid, 'type'=>$type, 'value'=>$total_amount, 'orderid'=>$out_trade_no, 'callbackurl'=>$pay_success_backurl, 'payerIp'=>request()->ip() ]; // 提交确定支付 sr_log('确认支付:'.json_encode($params)); $params['sign'] = md5('parter='.$parterid.'&type='.$type.'&value='.$total_amount.'&orderid='.$out_trade_no.'&callbackurl='.$pay_success_backurl.env('PAYSQZ.SXY_SIGNKEY')); $url = 'http://pay.xindonglife.com/chargebank.aspx'; // if (!$has_get){ $insert = [ 'total_fee' => $total_amount, 'trade_type' => $trade_type, 'body' => $body, 'state' => 7, 'out_trade_no' => $out_trade_no, 'pay_way' => $pay_way, 'remarks' => $remarks, 'order_type' => $order_type, 'uid' => $uid, 'voucher_img' => $voucher_img, 'out_trade_no1'=>'', 'hy_token_id'=>'' ]; Db::name('payment')->insert($insert); // } return api_succ_return(['msg'=>'成功', 'data'=>['thirdpaySQZ'=>['pay_url'=>$url . '?' . http_build_query($params)]]]); } // 银盛快捷无卡 public function getPayInfoYSwk($uid, $params){ if (empty($params['cer_no']) || empty($params['cer_name'] || empty($params['bank_id']) || empty($params['bank_type']) || empty($params['bank_no']) || empty($params['mobile']))){ return api_error_return("参数错误"); } if ($params['bank_type'] == 2){ if (empty($params['card_expr_time']) || empty($params['security_code'])){ return api_error_return('信用卡类型必须填写信用卡上面的三位安全码跟过期时间'); } } $bank_info = Db::name('ys_banklist')->where('id', $params['bank_id'])->find(); if (!$bank_info){ return api_error_return('参数错误'); } $buy_mobilee = $params['mobile']; list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); $interface_url = 'https://openapi.ysepay.com/gateway.do'; //正式 $order_id = ''; if ($order_type == 4){ $order_id = $params['order_id']; } if ($order_type == 5){ $order_id = $remarks; } $out_trade_no = $order_id.'_yswk'.mt_rand(1, 10000); // PAYBACK_URL $pay_success_backurl = env('PAYSQZ.PAYKUAIJIEBACK_URL'); // $total_amount = 1; if (in_array(env('APP.CUR_SYS_PARAMS'), [1, 2])){ // 这是测试 线要干掉 $total_amount = floatval('0'.'.'.mt_rand(1, 2).mt_rand(1, 9)); } $parterid = env('ZLYS.PARTER_ID'); $cur_time = sr_getcurtime(time()); $biz_content = array(); $biz_content['out_trade_no'] = $out_trade_no; $biz_content['shopdate']= sr_getcurtime(time(), 'Ymd'); $biz_content['subject']='购买商品'; // $biz_content['total_amount'] = $total_amount; $biz_content['total_amount'] = $total_amount; $biz_content['timeout_express'] = '1h'; $biz_content['currency'] = 'CNY'; $biz_content['business_code'] = '3010002'; $biz_content['seller_id'] = $parterid; $biz_content['bank_type'] = $bank_info['bank_value']; $biz_content['buyer_name'] = $params['cer_name']; $biz_content['buyer_card_number'] = $params['bank_no']; $biz_content['buyer_mobile'] = $params['mobile']; $number = trim($this->ECBEncrypt($params['cer_no'], 'Scf10981')); // 银行卡类型 debit 借记卡 credit信用卡 $biz_content['support_card_type'] = intval($params['bank_type']) == 1?'debit':'credit'; if ($params['bank_type'] == 2){ $biz_content['cardCvn2'] = $this->ECBEncrypt($params['security_code'], 'Scf10981'); $biz_content['cardExprDt'] = $this->ECBEncrypt($params['card_expr_time'], 'Scf10981'); } $biz_content['bank_name'] = $bank_info['bank_name']; $biz_content['pyerIDNo'] = $number; $biz_content['pyerIDTp'] = $this->ECBEncrypt('01', 'Scf10981');; $biz_content['bank_account_type'] = 'personal'; $params = [ 'method'=>'ysepay.online.fastpay', 'partner_id'=>$parterid, 'timestamp'=>$cur_time, 'charset'=>'UTF-8', 'sign_type'=>'RSA', 'notify_url'=>env('ZLYS.PAYBACK_URL'), 'version'=>'3.4', 'biz_content'=>json_encode($biz_content, JSON_UNESCAPED_UNICODE) ]; ksort($params); $params['sign'] = $this->sign($params); // 提交确定支付 sr_log('确认支付:'.json_encode($params)); $result = curlPost($interface_url, $params); sr_log('result:'.$result); $res = json_decode($result); if (isset($res->ysepay_online_fastpay_response->code) && intval($res->ysepay_online_fastpay_response->code) == 10000 && isset($res->ysepay_online_fastpay_response->msg) && intval($res->ysepay_online_fastpay_response->msg) == 'Success'){ $trade_no = $res->ysepay_online_fastpay_response->trade_no; $insert = [ 'total_fee' => $total_amount, 'trade_type' => $trade_type, 'body' => $body, 'state' => 7, 'out_trade_no' => $out_trade_no, 'pay_way' => $pay_way, 'remarks' => $remarks, 'order_type' => $order_type, 'uid' => $uid, 'voucher_img' => $voucher_img, 'out_trade_no1'=>'', 'hy_token_id'=>'', 'buyer_mobile'=>$buy_mobilee, 'trade_no'=>$trade_no ]; Db::name('payment')->insert($insert); return api_succ_return(['msg'=>'成功', 'data'=>['thirdpayYS'=>['trade_no'=>$trade_no]]]); }else{ if (isset($res->ysepay_online_fastpay_response->sub_msg)){ return api_error_return($res->ysepay_online_fastpay_response->sub_msg); }else{ return api_error_return('支付错误,请联系客服'); } } return api_error_return('支付错误,请联系客服1'); } public function getPayInfoDiankeZfb($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); $interface_url = 'http://1.14.197.47/proxy/pay/unifiedorder'; //正式 $order_id = ''; if ($order_type == 4){ $order_id = $params['order_id']; } $out_trade_no = createdOrderSn(); // $total_amount = 1; if (in_array(env('APP.CUR_SYS_PARAMS'), [1, 2])){ // 这是测试 线要干掉 $total_amount = floatval('0'.'.'.mt_rand(1, 2).mt_rand(1, 9)); } if ($total_amount > 15000){ sr_throw('大额不能使用支付宝支付'); } $params = [ 'appId'=>'dianke', 'version'=>'1.0', 'nonceStr'=>nonce_str(15), 'orderId'=>$out_trade_no, 'amount'=>intval($total_amount*100), 'payChannel'=>'ALP', 'goodsName'=>'牛仔裤', 'goodsDesc'=>'牛仔裤', 'clientIp'=>'127.0.0.1', 'asyncNotifyUrl'=>env('PAYSQZ.PAYBACK_ZFB_NEWURL'), 'tradeType'=>'QRCODE' ]; ksort($params); $params['sign'] = $this->diankesign($params); // 提交确定支付 sr_log('确认支付:'.json_encode($params)); $result = curlPost($interface_url, $params); sr_log('resultdk:'.$result); $res = json_decode($result); if (isset($res->data)){ $insert = [ 'total_fee' => $total_amount, 'trade_type' => $trade_type, 'body' => $body, 'state' => 7, 'out_trade_no' => $out_trade_no, 'pay_way' => $pay_way, 'remarks' => $remarks, 'order_type' => $order_type, 'uid' => $uid, 'voucher_img' => $voucher_img, 'out_trade_no1'=>'', 'hy_token_id'=>'' ]; Db::name('payment')->insert($insert); return api_succ_return(['msg'=>'成功', 'data'=>['pay_url'=>$res->data]]); }else{ return api_error_return('支付错误,请联系客服'); } return api_error_return('支付错误,请联系客服1'); } public function kjPayWithCode($trade_no, $sms_code){ $payment_info = Db::name('payment')->where('trade_no', $trade_no)->find(); if (!$payment_info){ sr_throw('支付订单错误'); } $out_trade_no = $payment_info['out_trade_no']; $interface_url = 'https://openapi.ysepay.com/gateway.do'; //正式 $parterid = env('ZLYS.PARTER_ID'); $cur_time = sr_getcurtime(time()); $biz_content = array(); $biz_content['out_trade_no'] = $out_trade_no; $biz_content['buyer_mobile'] = $payment_info['buyer_mobile']; $biz_content['mobile_verify_code'] = $sms_code; $params = [ 'method'=>'ysepay.online.fastpay.authorize', 'partner_id'=>$parterid, 'timestamp'=>$cur_time, 'charset'=>'UTF-8', 'sign_type'=>'RSA', 'notify_url'=>env('ZLYS.PAYBACK_URL'), 'version'=>'3.0', 'biz_content'=>json_encode($biz_content, JSON_UNESCAPED_UNICODE) ]; ksort($params); $params['sign'] = $this->sign($params); // 提交确定支付 sr_log('确认支付提交:'.json_encode($params)); $result = curlPost($interface_url, $params); sr_log('result:'.$result); $res = json_decode($result); if (isset($res->ysepay_online_fastpay_authorize_response->code) && intval($res->ysepay_online_fastpay_authorize_response->code) == 10000 && isset($res->ysepay_online_fastpay_authorize_response->msg) && intval($res->ysepay_online_fastpay_authorize_response->msg) == 'Success'){ return api_succ_return('成功'); }else{ if (isset($res->ysepay_online_fastpay_authorize_response->sub_msg)){ return api_error_return($res->ysepay_online_fastpay_authorize_response->sub_msg); }else{ return api_error_return('支付错误,请联系客服'); } } return api_error_return('支付错误,请联系客服'); } /** * DES加密方法 * @param $data 传入需要加密的证件号码 * @param $key key为商户号前八位.不足八位的需在商户号前补空格 * @return string 返回加密后的字符串 */ function ECBEncrypt($data, $key) { $encrypted = openssl_encrypt($data, 'DES-ECB', $key, 1); return base64_encode($encrypted); } /** * DES解密方法 * @param $data 传入需要解密的字符串 * @param $key key为商户号前八位.不足八位的需在商户号前补空格 * @return string 返回解密后的证件号码 */ function doECBDecrypt($data, $key) { $encrypted = base64_decode($data); $decrypted = openssl_decrypt($encrypted, 'DES-ECB', $key, 1); return $decrypted; } /** * 签名加密 * @param input data * @return success * @return check * @return msg */ public function sign_encrypt($input) { $return = [ 'success' => 0, 'msg' => '', 'check' => '' ]; $pkcs12 = file_get_contents(env('ZLYS.PFX_PATH')); //私钥 if (openssl_pkcs12_read($pkcs12, $certs, env('ZLYS.PSSSWORD'))) { $privateKey = $certs['pkey']; $publicKey = $certs['cert']; $signedMsg = ""; if (openssl_sign($input['data'], $signedMsg, $privateKey, OPENSSL_ALGO_SHA1)) { $return['success'] = 1; $return['check'] = base64_encode($signedMsg); $return['msg'] = base64_encode($input['data']); } } return $return; } //签名 public function sign($data) { ksort($data); $signStr = ""; foreach ($data as $key => $val) { $signStr .= $key . '=' . $val . '&'; } $signStr = trim($signStr, '&'); $sign = $this->sign_encrypt(array('data' => $signStr)); return trim($sign['check']); } //签名 public function diankesign($data) { ksort($data); $signStr = ""; foreach ($data as $key => $val) { $signStr .= $key . '=' . $val . '&'; } $stringSignTemp = $signStr.'key=a05fd6fc1f924b74b83dfd519ce93c28'; $signtemp = \md5($stringSignTemp); return strtoupper($signtemp); } //签名 public function diankesigndf($data) { ksort($data); $signStr = ""; foreach ($data as $key => $val) { $signStr .= $key . '=' . $val . '&'; } $stringSignTemp = $signStr.'key=b91f3a72fe074e39a6add7382de813bc'; $signtemp = \md5($stringSignTemp); return strtoupper($signtemp); } public function getPayInfoUsdt($uid, $params){ list($body, $total_amount, $order_type, $remarks, $trade_type, $pay_way, $voucher_img) = $this->_payConf($uid, $params); // $order_id = $remarks; // // $out_trade_no = 'SK'.$order_id.mt_rand(1, 10000); // // $insert = [ // 'total_fee' => $total_amount, // 'trade_type' => $trade_type, // 'body' => $body, // 'state' => 7, // 'out_trade_no' => $out_trade_no, // 'pay_way' => $pay_way, // 'remarks' => $remarks, // 'order_type' => $order_type, // 'uid' => $uid, // 'voucher_img' => $voucher_img, // 'out_trade_no1'=>'', // 'hy_token_id'=>'' // ]; // Db::name('payment')->insert($insert); return api_succ_return('成功'); } // 签约银行卡 public function userBankSign($uid, $post){ $pay_success_backurl = env('PAYSQZ.USER_SIGN_BANK'); // // $sign $parterid = env('PAYSQZ.PARTER'); $phone = $post['phone']; $bank_card = $post['bank_card']; $name = $post['name']; $id_card = $post['id_card']; $order_id = creatBankSignOrderSn($uid); if ($info = Db::name('user_bank_sign')->where('bank_card', $bank_card)->where('uid', $uid)->where('status', 4)->find()){ Db::name('user_bank_sign')->where('id', $info['id'])->save([ 'status'=>1, 'signorder_id'=>$order_id ]); }else{ Db::name('user_bank_sign')->insert([ 'uid'=>$uid, 'phone'=>$phone, 'bank_card'=>$bank_card, 'name'=>$name, 'id_card'=>$id_card, 'create_time'=>sr_getcurtime(time()), 'signorder_id'=>$order_id ]); } $param = [ 'parter'=>$parterid, 'userid'=>$uid, 'phone'=>$phone, 'bankCard'=>$bank_card, 'name'=>$name, 'idCard'=>$id_card, 'orderid'=>$order_id, 'callBack'=>$pay_success_backurl ]; sr_log($param); $keystring = 'parter='.$parterid.'&userid='.$uid.'&phone='.$phone.'&bankCard='.$bank_card.'&name='.$name.'&idCard='.$id_card.'&orderid='.$order_id.env('PAYSQZ.SIGNKEY'); $param['sign'] = md5($keystring); $res = _curlrequest('http://pay.xindonglife.com/PageSign.aspx', $param, 'post'); sr_log('sign:'.$res); $result = json_decode($res); // sr_log(json_encode($res)); if (isset($result->code) && $result->code == 'SUCCESS'){ return $result->sign_url; }else{ if (is_string($res)){ sr_throw($res); }else{ sr_throw('请稍后再试'); } } } // 解绑银行卡 public function userUnBankSign($uid, $post){ $pay_success_backurl = env('PAYSQZ.USER_SIGN_BANK'); // // $sign $bang_info = Db::name('user_bank_sign')->where('id', $post['record_id'])->find(); if (!$bang_info){ sr_throw('参数错误'); } // $bang_info['userno'] = '8cd6342193ef6796daac2571af414e33'; $parterid = env('PAYSQZ.PARTER'); $order_id = creatBankSignOrderSn($uid); $param = [ 'parter'=>$parterid, 'hy_auth_uid'=>$bang_info['userno'], 'orderId'=>$order_id ]; // sr_log($param); $keystring = 'parter='.$parterid.'&hy_auth_uid='.$bang_info['userno'].env('PAYSQZ.SIGNKEY'); $param['sign'] = md5($keystring); $res = _curlrequest('http://pay.xindonglife.com/CardUnbinding.aspx', $param, 'post'); sr_log('sign:'.$res); $res = json_decode($res); if (isset($res->code) && $res->code == 'SUCCESS'){ Db::name('user_bank_sign')->where('id', $post['record_id'])->save(['signorder_u_id'=>$order_id, 'status'=>4]); }else{ sr_log('解绑失败:'.json_encode($res)); sr_throw('解绑失败'); } } public function sylSurePay($uid, $params){ if (empty($params['sms_code'])){ sr_throw('参数错误'); } $payment_info = Db::name('payment')->where('out_trade_no1', $params['order_id'])->where('state', 7)->where('uid', $uid)->find(); if (!$payment_info){ sr_throw('参数错误或者订单错误'); } $parterid = env('PAYSQZ.PARTER'); $order_id = creatBankSignOrderSn($uid); $out_trade_no1 = rand(1000000000, 9999999999) . (string)date('ymdhis', time()) . (int)microtime(true); // 订单号 $param = [ 'parter'=>$parterid, 'hy_token_id'=>$payment_info['hy_token_id'], 'verify_code'=>$params['sms_code'], 'orderId'=>$out_trade_no1 ]; $keystring = 'parter='.$parterid.'&hy_token_id='.$payment_info['hy_token_id'].'&verify_code='.$params['sms_code'].env('PAYSQZ.SIGNKEY'); $param['sign'] = md5($keystring); $res = _curlrequest('http://pay.xindonglife.com/payMentConfirm.aspx', $param, 'post'); // sr_log('sign:'.$res); $res = json_decode($res); // sr_log(json_encode($res)); if (isset($res->code) && $res->code == 'SUCCESS'){ Db::name('payment')->where('id', $payment_info['id'])->save(['hy_bill_no'=>$res->hy_bill_no, 'syl_sureorderid'=>$out_trade_no1]); }else{ if (isset($res->message)){ sr_throw($res->message); } // {"id":1,"code":"Fail","message":"\u77ed\u4fe1\u9a8c\u8bc1\u7801\u5df2\u8fc7\u671f"} // sr_log('确认失败:'.json_encode($res)); } } // pay_money 支付订单的金额 public function payBack($out_trade_no, $pay_money, $pay_type, $content){ $paymodel = new PaymentModel(); $shopordermodel = new ShopOrderModel(); $services_ordermodel = new ServicesOrderModel(); $usermodel = new UserModel(); $pay_info = $paymodel->where('out_trade_no', $out_trade_no)->where('state', 7)->find(); if (!$pay_info){ sr_throw('outtradeno已经回调支付:'.$out_trade_no); } // if ($pay_type != 14){ // if ($pay_info['total_fee'] < $pay_money){ // sr_throw('支付金额错误'.$out_trade_no); // } // } $user_info = $usermodel->where('id', $pay_info['uid'])->find(); if ($pay_info['order_type'] == 6){ $nowTime = date('Y-m-d H:i:s', time()); $date = sr_getcurtime(time(), 'Y-m-d'); $expire_day = date('Y-m-d',strtotime("$date +1 month")); $pay_info->save(['state'=>6, 'pay_at'=>$nowTime]); // // $services_orderinfo = $services_ordermodel->where('recharge_sn', $pay_info['remarks'])->find(); if ($services_orderinfo){ $services_orderinfo->save(['status'=>2, 'pay_type'=>$pay_type,'updated_time' => $nowTime]); } Db::name('user')->where('id', $services_orderinfo['user_id'])->save([ 'store_type'=>1, 'store_expire_time'=>$expire_day ]); // // edit_user_money(12, $pay_info['uid'], $charget_orderinfo['payment']); }elseif ($pay_info['order_type'] == 4){ $nowTime = date('Y-m-d H:i:s', time()); $pay_info->save(['state'=>6, 'pay_at'=>$nowTime]); $order_info = $shopordermodel->where('order_sn', $pay_info['remarks'])->find(); Db::name('user')->whereIn('id', $user_info['path'])->inc('total_team_income', $pay_info['total_fee'])->update(); Db::name('user')->whereIn('id', $user_info['id'])->inc('total_team_income', $pay_info['total_fee'])->update(); Db::name('user')->where('id', $user_info['id'])->inc('total_income', $pay_info['total_fee'])->update(); // if (!$order_info){ // sr_throw('错误'); // } $order_info->save(['status'=>1, 'pay_type'=>$pay_type,'updated_time' => $nowTime]); // 增加销量 $orderGoods = OrderGoods::where(['order_id' => $order_info['order_id']])->select()->toArray(); foreach ($orderGoods as $k => $v) { ShopGoodsModel::where(['goods_id' => $v['goods_id']])->inc('sales_volume', $v['num'])->inc('real_sales_volume', $v['num'])->update(); } $uid = $pay_info['uid']; Db::name('thirdpay_back')->insert([ 'out_order_no'=>$out_trade_no, 'content'=>$content, 'create_time'=>sr_getcurtime(time()), 'type'=>$pay_type, 'uid'=>$uid, 'money'=>$pay_money ]); // 赠送积分 // edit_user_score(1, $uid, $order_info['rebate_score']); // $usermodel->where('id', $uid)->inc('total_score', $order_info['rebate_score'])->update(); edit_user_score(3, $uid, $order_info['rebate_score'], 0, $pay_info['id']); // 给用户添加业绩 // $this->update_user_yeji($uid, $user_info, $order_info, $pay_info); // $this->update_user_free($uid, $pay_info, $nowTime); } } // pay_money 代付回调金额 public function payDfBack($out_trade_no, $pay_money, $params, $content){ if (isset($params['status'])){ $model = new WithDrawLogModel(); $info = $model->where('out_biz_no', $out_trade_no)->find(); if (!$info) { return; } if ($info && $info['status'] == 4){ if ($params['status'] == 1){ // 代付成功 $info->save(['status'=>1]); }else{ // Db::name('') Db::startTrans(); try { Db::startTrans();//开启事务 $info = $model->where('out_biz_no', $out_trade_no)->find(); $user_info = Db::name('user')->where('id', $info['uid'])->lock(true)->find(); $res = edit_user_money(10, $info['uid'], $info['apply_money']); Db::name('action_liangb')->insert([ 'create_time'=>sr_getcurtime(time()), 'wd_id'=>$out_trade_no ]); // 代付失败 $info->save(['zfb_error'=>$content, 'status'=>3]); Db::commit(); }catch (\Exception $e){ Db::rollback(); sr_log('代付回调报错'); } // if (!$res){ // Db::rollback(); // sr_log('代付回调报错'); // }else{ // // // Db::commit(); // } } } } } public function scaleAgentMoney($uid, $pay_info, $yeji){ $is_privince_get = false; $is_city_get = false; $money = intval($pay_info['total_fee']/100) * 100; $user_info = Db::name('user')->where('id', $uid)->find(); $path = $user_info['path']; // sr_log('path:'.$path); $arr = explode(',', $path); $arr = array_reverse($arr); $ids = $arr; $ids = implode(',',$ids); $order= 'field(id,'.$ids.')'; $users = Db::name('user')->where('id','in' ,$arr)->field('id,level,agent_type')->order(Db::raw($order))->select()->toArray(); // sr_log('users:'.json_encode($users)); foreach ($users as $key=>$val){ if ($val['agent_type'] == 1){ if (!$is_privince_get){ if ($is_city_get){ edit_user_money(17, $val['id'],$money*0.5/100, 0,$pay_info['remarks']); }else{ edit_user_money(17, $val['id'], $money/100, 0, $pay_info['remarks']); } $is_privince_get = true; } } if ($val['agent_type'] == 2){ if (!$is_privince_get){ edit_user_money(18, $val['id'],$money*0.5/100, 0,$pay_info['remarks']); } $is_city_get = true; } } } public function update_user_yeji($uid, $user_info, $order_info, $pay_info){ // 计算用户的yeji $yeji = 0; // 根据所送的积分算业绩 if ($user_info['performance_me'] < 10000){ if (($user_info['performance_me'] + $order_info['rebate_score']) > 10000){ $yeji = 10000-$user_info['performance_me']; incUserPerformance($uid, $yeji); }else{ $yeji = $order_info['rebate_score']; incUserPerformance($uid, $yeji); } } if ($yeji > 0){ // 如果增加的业绩大于0 计算省代跟市代 // $this->scaleAgentMoney($order_info['user_id'], $pay_info, $yeji); } } // type:如果是线上支付就是1,余额支付就是 2 public function update_user_free($uid, $pay_info, $nowTime, $type = 1){ return; $paymodel = new PaymentModel(); $usermodel = new UserModel(); $model_order = new ShopOrderModel(); $user_info = Db::name('user')->where('id', $uid)->find(); if ($user_info['performance_me'] > 10000){ return ; } // 500 1.3 // 2000 1.6 // 5000 2 // 10000 2.5 // 找到最后一次降级的时间 $logmax_id = Db::name('user_freelevellog')->where('uid', $uid)->where('type', 1)->max('id'); $lastless_info = Db::name('user_freelevellog')->where('id', $logmax_id)->find(); // 距离上次时间的总送的积分 $total_backscore = $model_order->where('user_id', $uid)->where('status', 'in', [1, 2, 4])->where('order_type', 1)->where('created_time', '>', (isset($lastless_info['create_time'])?$lastless_info['create_time']:sr_getcurtime(0)))->sum('rebate_score'); Db::name('user')->where('id', $uid)->inc('total_pay', floatval($pay_info['total_fee']))->update(); Db::name('user')->where('id', $uid)->save(['total_score'=>$total_backscore]); if ($user_info['user_team'] == 1){ // 是否要升级 $is_updatelevel = false; // 当前释放档位 $new_freelevel = $user_info['free_level']; $level = ['500'=>500, '2000'=>2000, '5000'=>5000, '10000'=>10000]; $scale = 1; $scale_arr = ['500'=>1.3, '2000'=>1.6, '5000'=>2, '10000'=>2.5]; if ($total_backscore >= $level['500']){ if ($total_backscore >= $new_freelevel){ foreach ($level as $key=>$val){ // if ($val== 10000 ){ // if ($total_paymoney >=$val-10){ // $is_updatelevel = true; // $new_freelevel = $val; // $scale = $scale_arr[$val]; // } // }elseif ($val == 20000){ // if ($total_paymoney >=$val-30){ // $is_updatelevel = true; // $new_freelevel = $val; // $scale = $scale_arr[$val]; // } // } // else{ // 支付金额大于档位 档位大于当前用户的档位 if ($total_backscore >= $val && $val>$user_info['free_level']){ $is_updatelevel = true; $new_freelevel = $val; $scale = $scale_arr[$val]; } // } } } } if ($is_updatelevel){ // 新的档位赠送的积分 $new_totalscore = $scale*$new_freelevel; // 如果升级的话就要重新计算他的所有积分 $log_id = Db::name('user_freelevellog')->where('channel', 1)->where('uid', $uid)->where('type', 'in', [1,2])->max('id'); // $output->writeln('key'.$log_id); $last_info = Db::name('user_freelevellog')->where('id', $log_id)->find(); // 距离上次档位变化总共释放出来的 余额 $free_score = Db::name('score_log')->where('uid', $uid)->where('type', 'in', [2,5,6,7])->whereTime('create_at', '>', isset($lastless_info['create_time'])?$lastless_info['create_time']:sr_getcurtime(0))->sum('score'); // 刷新积分 // $output->writeln('key'.$free_score); $user_info = $usermodel->where('id', $uid)->find(); $cur_score = $user_info['score']; // 新的所得积分 $new_userscore = $new_totalscore - $free_score; // $output->writeln('key'.$cur_score); // $output->writeln('key'.$new_userscore); if ($cur_score > $new_userscore){ edit_user_score(4, $uid, $cur_score-$new_userscore); } if ($cur_score < $new_userscore){ edit_user_score(3, $uid, $new_userscore - $cur_score); } // 记录档位升级记录 $data = [ 'free_level'=>$new_freelevel, 're_level'=>$user_info['free_level'], 'uid'=>$uid, 'create_time'=>$nowTime, 'type'=>2, 'channel'=>1, 'score'=>$new_freelevel*$scale, 're_score'=>($user_info['free_level']==0?$user_info['score']:$user_info['free_level']*$scale_arr[$user_info['free_level']]) ]; // $output->writeln('key'.json_encode($data)); // // sr_throw(); Db::name('user_freelevellog')->insert($data); // 刷新用户档位 $user_info->save(['free_level'=>$new_freelevel]); } } return ; // 找到最后一次降级的时间 $logmax_id = Db::name('user_freelevellog')->where('uid', $uid)->where('type', 1)->max('id'); $lastless_info = Db::name('user_freelevellog')->where('id', $logmax_id)->find(); // 距离上次时间的总充值量 $total_paymoney = $paymodel->where('uid', $uid)->where('state', 6)->where('order_type', 4)->where('pay_at', '>', (isset($lastless_info['create_time'])?$lastless_info['create_time']:sr_getcurtime(0)))->sum('total_fee'); if ($type == 1){ Db::name('user')->where('id', $uid)->inc('total_pay', floatval($pay_info['total_fee']))->update(); }else{ Db::name('user')->where('id', $uid)->inc('total_pay', floatval($pay_info['payment']))->update(); } Db::name('user')->where('id', $uid)->save(['total_pay_level'=>$total_paymoney]); if ($user_info['user_team'] == 1){ // 是否要升级 $is_updatelevel = false; // 当前释放档位 $new_freelevel = $user_info['free_level']; $level = ['2000'=>2000, '5000'=>5000, '10000'=>10000, '20000'=>20000]; $scale = 1; $scale_arr = ['2000'=>1.5, '5000'=>2, '10000'=>2.5, '20000'=>3]; if ($total_paymoney >= $level['2000']){ if ($total_paymoney >= $new_freelevel){ foreach ($level as $key=>$val){ if ($val== 10000 ){ if ($total_paymoney >=$val-10){ $is_updatelevel = true; $new_freelevel = $val; $scale = $scale_arr[$val]; } }elseif ($val == 20000){ if ($total_paymoney >=$val-30){ $is_updatelevel = true; $new_freelevel = $val; $scale = $scale_arr[$val]; } } else{ // 支付金额大于档位 档位大于当前用户的档位 if ($total_paymoney >= $val && $val>$user_info['free_level']){ $is_updatelevel = true; $new_freelevel = $val; $scale = $scale_arr[$val]; } } } } } if ($is_updatelevel){ // 新的档位赠送的积分 $new_totalscore = $scale*$new_freelevel; // 如果升级的话就要重新计算他的所有积分 $log_id = Db::name('user_freelevellog')->where('channel', 1)->where('uid', $uid)->where('type', 'in', [1,2])->max('id'); // $output->writeln('key'.$log_id); $last_info = Db::name('user_freelevellog')->where('id', $log_id)->find(); // 距离上次档位变化总共释放出来的 余额 $free_score = Db::name('score_log')->where('uid', $uid)->where('type', 2)->whereTime('create_at', '>', isset($last_info['create_time'])?$last_info['create_time']:sr_getcurtime(0))->sum('score'); // 刷新积分 // $output->writeln('key'.$free_score); $user_info = $usermodel->where('id', $uid)->find(); $cur_score = $user_info['score']; // 新的所得积分 $new_userscore = $new_totalscore - $free_score; // $output->writeln('key'.$cur_score); // $output->writeln('key'.$new_userscore); if ($cur_score > $new_userscore){ edit_user_score(4, $uid, $cur_score-$new_userscore); } if ($cur_score < $new_userscore){ edit_user_score(3, $uid, $new_userscore - $cur_score); } // 记录档位升级记录 $data = [ 'free_level'=>$new_freelevel, 're_level'=>$user_info['free_level'], 'uid'=>$uid, 'create_time'=>$nowTime, 'type'=>2, 'channel'=>1, 'score'=>$new_freelevel*$scale, 're_score'=>($user_info['free_level']==0?$user_info['score']:$user_info['free_level']*$scale_arr[$user_info['free_level']]) ]; // $output->writeln('key'.json_encode($data)); // // sr_throw(); Db::name('user_freelevellog')->insert($data); // 刷新用户档位 $user_info->save(['free_level'=>$new_freelevel]); } } // 线上 if ($user_info['user_team'] == 2){ // 是否要升级 $is_updatelevel = false; // 当前释放档位 $new_freelevel = $user_info['free_level']; $level = ['399'=>399, '999'=>999, '2000'=>2000, '5000'=>5000]; $scale = 1; $scale_arr = ['399'=>1.5, '999'=>2, '2000'=>2.5, '5000'=>3]; if ($total_paymoney >= $level['399']){ if ($total_paymoney >= $new_freelevel){ foreach ($level as $key=>$val){ // if ($val== 10000 ){ // if ($total_paymoney >=$val-10){ // $is_updatelevel = true; // $new_freelevel = $val; // $scale = $scale_arr[$val]; // } // }elseif ($val == 20000){ // if ($total_paymoney >=$val-30){ // $is_updatelevel = true; // $new_freelevel = $val; // $scale = $scale_arr[$val]; // } // } // else{ // 支付金额大于档位 档位大于当前用户的档位 if ($total_paymoney >= $val && $val>$user_info['free_level']){ $is_updatelevel = true; $new_freelevel = $val; $scale = $scale_arr[$val]; } // } } } } if ($is_updatelevel){ // 新的档位赠送的积分 $new_totalscore = $scale*$new_freelevel; // 如果升级的话就要重新计算他的所有积分 $log_id = Db::name('user_freelevellog')->where('channel', 2)->where('uid', $uid)->where('type', 'in', [1,2])->max('id'); // $output->writeln('key'.$log_id); $last_info = Db::name('user_freelevellog')->where('id', $log_id)->find(); // 距离上次档位变化总共释放出来的 余额 $free_score = Db::name('score_log')->where('uid', $uid)->where('type', 2)->whereTime('create_at', '>', isset($last_info['create_time'])?$last_info['create_time']:sr_getcurtime(0))->sum('score'); // 刷新积分 // $output->writeln('key'.$free_score); $user_info = $usermodel->where('id', $uid)->find(); $cur_score = $user_info['score']; // 新的所得积分 $new_userscore = $new_totalscore - $free_score; // $output->writeln('key'.$cur_score); // $output->writeln('key'.$new_userscore); if ($cur_score > $new_userscore){ edit_user_score(4, $uid, $cur_score-$new_userscore); } if ($cur_score < $new_userscore){ edit_user_score(3, $uid, $new_userscore - $cur_score); } // 记录档位升级记录 $data = [ 'free_level'=>$new_freelevel, 're_level'=>$user_info['free_level'], 'uid'=>$uid, 'create_time'=>$nowTime, 'type'=>2, 'channel'=>2, 'score'=>$new_freelevel*$scale, 're_score'=>($user_info['free_level']==0?$user_info['score']:$user_info['free_level']*$scale_arr[$user_info['free_level']]) ]; // $output->writeln('key'.json_encode($data)); // // sr_throw(); Db::name('user_freelevellog')->insert($data); // 刷新用户档位 $user_info->save(['free_level'=>$new_freelevel]); } } } // pay_money 余额支付订单的金额 public function payBalanceDown($order_sn, $pay_type, $content){ $paymodel = new PaymentModel(); $shopordermodel = new ShopOrderModel(); $usermodel = new UserModel(); $order_info = $shopordermodel->where('order_sn', $order_sn)->find(); // $pay_info = $paymodel->where('out_trade_no', $out_trade_no)->where('state', 7)->find(); // if (!$pay_info){ // sr_throw('outtradeno已经回调支付:'.$out_trade_no); // } // if ($pay_info['total_fee'] < $pay_money){ // sr_throw('支付金额错误'.$out_trade_no); // } $nowTime = date('Y-m-d H:i:s', time()); $user_info = $usermodel->where('id', $order_info['user_id'])->find(); // $pay_info->save(['state'=>6, 'pay_at'=>$nowTime]); // $order_info = $shopordermodel->where('order_sn', $pay_info['remarks'])->find(); $order_info->save(['status'=>1, 'pay_type'=>$pay_type,'updated_time' => $nowTime]); // 增加销量 $orderGoods = OrderGoods::where(['order_id' => $order_info['order_id']])->select()->toArray(); foreach ($orderGoods as $k => $v) { ShopGoodsModel::where(['goods_id' => $v['goods_id']])->inc('sales_volume', $v['num'])->inc('real_sales_volume', $v['num'])->update(); } $uid = $order_info['user_id']; Db::name('thirdpay_back')->insert([ 'out_order_no'=>'', 'content'=>$content, 'create_time'=>sr_getcurtime(time()), 'type'=>$pay_type, 'uid'=>$uid, 'money'=>$order_info['payment'] ]); // 给用户添加业绩 // incUserPerformance($uid, $order_info['payment']); $pay_info = $paymodel->where('remarks', $order_sn)->where('state', 6)->find(); // 赠送积分 edit_user_score(1, $uid, $order_info['rebate_score']); $this->update_user_yeji($uid, $user_info, $order_info, $pay_info); $this->update_user_free($uid, $order_info, $nowTime, 2); } }