find(); self::$OrgNo = $cache['continent_number']; self::$Key = ''; // 商户秘钥 self::$trmNo = ''; self::$mercId = ''; } /** * 调用该方法 给机构号和商户秘钥赋值 */ public function orN($merchant_id) { $merchants = M('merchant_infos')->where(array('merchant_id' => $merchant_id))->find(); if (!empty($merchants)) { self::$Key = $merchants['key']; // 商户秘钥 self::$trmNo = $merchants['trm_no']; self::$mercId = $merchants['merc_id']; } } /** 商户支付 * @param $param * @return array */ public function execute($tradeNo, $merchantid, $opens = '2') { $this->orN($merchantid); $arrData['opSys'] = 0; //操作系统 $arrData['characterSet'] = '00'; $arrData['orgNo'] = self::$OrgNo; $arrData['mercId'] = self::$mercId; //商户号 $param['mercId'] $arrData['version'] = $opens == 1 ? 'V1.0.2' : 'V1.0.1'; //版本号 $arrData['trmNo'] = self::$trmNo; //设备号 $param['trmNo'] $arrData['tradeNo'] = $tradeNo; //商户端订单号 $param['tradeNO'] $arrData['txnTime'] = date('YmdHis'); //设备端交易时间 时间戳格式$ param['txnTime'] $arrData['signType'] = 'MD5'; //签名方式 return $arrData; } //authCode=134765203426838443&payChannel=‘WXPAY’&subject=测试支付&amount=0.01&total_amount=0.01 //微信公众号查询 public function pubSigQrys($merchantid) { $this->orN($merchantid); // http://gateway.starpos.com.cn/adpweb/ehpspos3/pubSigQry.json $url = self::$gatewayUrl . "/pubSigQry.json"; $arrData['orgNo'] = self::$OrgNo; //机构号 self::$OrgNo $arrData['mercId'] = self::$mercId; //商户号 self::$mercId $arrData['trmNo'] = self::$trmNo; //设备号 self::$trmNo $arrData['txnTime'] = date('YmdHis'); //设备端交易时间 $arrData['signType'] = 'MD5'; //签名方式 $arrData['version'] = 'V1.0.0'; //版本号 $arrData['signValue'] = $this->getSign($arrData); $itemJson = json_encode($arrData); $request = $this->http_request($url, $itemJson); $request = urldecode($request); $request = json_decode($request, true); if ($request['returnCode'] == "000000") { return true; } else { $this->errCode = $request['returnCode']; return false; } } //订单查询 public function QryBarcode($qryNo, $merchant_id, $time) { $url = self::$gatewayUrl . "/sdkQryBarcodePay.json"; $Qryarr = $this->execute($qryNo, $merchant_id); $Qryarr['qryNo'] = $qryNo; $Qryarr['txnTime'] = date('Ymd', $time); $Qryarr['signValue'] = $this->getSign($Qryarr); $Qryarr['qryDt'] = date('Ymd', $time); $itemJson = json_encode($Qryarr); $re = $this->http_request($url, $itemJson); $request = urldecode($re); $request = json_decode($request, true); return $request; } /** 接口数字签名方法 * @param $data * @return mixed */ private function getSign($data) { $key = self::$Key; $arr = array_change_key_case($data, CASE_LOWER); ksort($arr); $str = ""; foreach ($arr as $val) { $str .= $val; } $str .= $key; return MD5($str); } /** * @param $url 接口请求方法 * @param null $postFields * @return mixed */ public function http_request($url, $data) { $ch = curl_init(); //用curl发送数据给api $header = array( 'content-type:application/json;charset=GBK' ); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $response = curl_exec($ch); if ($response === FALSE) { echo "CURL Error:" . curl_error($ch); } curl_close($ch); return $response; } /** * 新大陆回调 */ public function notify() { $json_data = file_get_contents("php://input"); file_put_contents('./1.txt', date('Y-m-d H:i:s') . ': post1:' . $json_data . "\r\n", FILE_APPEND); $config = M('continent_config')->find(); if ($config) { $key = $config['continent_callback_secret_key']; $privateKey = file_get_contents($config['continent_credential']); $postData = json_decode($json_data, true); if (strtoupper(md5($postData['Datas'] . $key)) == $postData['signValue']) { $encode_data_arr = str_split($postData['Datas'], 256); $decode_data_all = ''; foreach ($encode_data_arr as $value) { openssl_private_decrypt(hex2bin($value), $decode_data, $privateKey); $decode_data_all .= $decode_data; } $endData = json_decode($decode_data_all, true); $data = var_export($endData, TRUE); file_put_contents('./1.txt', 'post2:' . $data . "\r\n", FILE_APPEND); if ($endData['TxnStatus'] == 1 && ($endData['PayChannel'] == 2 || $endData['PayChannel'] == 1) && ($endData['TxnCode'] == 'N007' || $endData['TxnCode'] == 'N002')) { $PayOrderModel = D('RetailPayOrder'); if ($endData['TxnCode'] == 'N007') { $Order = $PayOrderModel->getFind(array('out_trade_no' => strval($endData['ChannelId']))); } else { $Order = $PayOrderModel->getFind(array('out_trade_no' => strval($endData['TxnLogId']))); } file_put_contents('./1.txt', 'Order:' . json_encode($Order) . "\r\n", FILE_APPEND); if (!empty($Order)) { if ($Order['order_state'] == 'WAIT_BUYER_PAY') { /* * 1.新版回调,须在pay_order表存入回调地址 * 2.在调用该函数时请务必判断下列常量IsPayToUpdateOrder是否为YES * 3.再进行更新订单操作 * */ if (!empty($Order[$PayOrderModel::NOTIFY_URL])) { define('IsPayToUpdateOrder', 'YES');//存入常量 $updateData = array( $PayOrderModel::ORDER_STATE => 'SUCCESS', $PayOrderModel::EXTEND_CONTENT => json_encode($endData), $PayOrderModel::TRADE_DATE => time(), $PayOrderModel::TRADE_NO => $endData['OfficeId'] ); file_put_contents('./122.txt', 'Order22:' . json_encode($Order) . "\r\n", FILE_APPEND); $PayOrderModel->updateOrder(array($PayOrderModel::ID => $Order[$PayOrderModel::ID]), $updateData); //更新pay_order表 $this->doAddRate($endData['OfficeId'], $Order, 3); //增加代理商合伙人分润记录 R($Order[$PayOrderModel::NOTIFY_URL], array($Order));//执行回调函数 } else { if ($Order['order_type'] == 1) { //买单 if ($endData['TxnCode'] == 'N007') { $bill = D('Bill')->getFind(array('out_trade_no' => strval($endData['ChannelId']), 'pay_orderid' => $Order['id'])); } else { $bill = D('Bill')->getFind(array('out_trade_no' => strval($endData['TxnLogId']), 'pay_orderid' => $Order['id'])); } if (!empty($bill)) { $updateData = array( $PayOrderModel::ORDER_STATE => 'SUCCESS', $PayOrderModel::EXTEND_CONTENT => json_encode($endData), $PayOrderModel::TRADE_DATE => time(), $PayOrderModel::TRADE_NO => $endData['OfficeId'], $PayOrderModel::PAY_TYPE => 4 ); $PayOrderModel->updateOrder(array($PayOrderModel::ID => $Order[$PayOrderModel::ID]), $updateData); //更新pay_order表 A('Xcxapi/WxPay')->updateOrder_v1($bill); $this->doAddRate($endData['OfficeId'], $Order, 3); } } else if ($Order['order_type'] == 2) { //充值 $updateData = array( $PayOrderModel::ORDER_STATE => 'SUCCESS', $PayOrderModel::EXTEND_CONTENT => json_encode($endData), $PayOrderModel::TRADE_DATE => time(), $PayOrderModel::TRADE_NO => $endData['OfficeId'] ); $PayOrderModel->updateOrder(array($PayOrderModel::ID => $Order[$PayOrderModel::ID]), $updateData); //更新pay_order表 A('VipPay')->rechargeSuccess($Order, $updateData); $this->doAddRate($endData['OfficeId'], $Order, 3); } else if ($Order['order_type'] == 4) { //礼品卡 $gift_order = M('gift_card_record')->where(array('pay_order_id' => $Order['id'], 'xcx_vid' => $Order['uid']))->find(); if (!empty($gift_order)) { $update = M('gift_card_record')->where(array('id' => $gift_order['id']))->save(array('state' => 1)); $update1 = M('gift_card_price')->where(array('id' => $gift_order['gift_price_id']))->setDec('less_num', 1); if ($update) { $update['order_state'] = "SUCCESS"; $update['extend_content'] = json_encode($endData); $update['trade_date'] = time(); $update['pay_type'] = 4; $update['trade_no'] = $endData['OfficeId']; M('retail_pay_order')->where(array('id' => $Order['id']))->save($update); } $this->doAddRate($endData['OfficeId'], $Order, 3); } } else if ($Order['order_type'] == 5) { //开通续费plus会员 $up['order_state'] = "SUCCESS"; $up['extend_content'] = json_encode($endData); $up['trade_date'] = time(); $up['pay_type'] = 4; $up['trade_no'] = $endData['OfficeId']; A('Xcxapi/PlusVip')->updateOrder($Order, $up); $this->doAddRate($endData['OfficeId'], $Order, 3); } else if ($Order['order_type'] == 6) { //小助手快捷收单 $updateData = array( $PayOrderModel::ORDER_STATE => 'SUCCESS', $PayOrderModel::EXTEND_CONTENT => json_encode($endData), $PayOrderModel::TRADE_DATE => time(), $PayOrderModel::TRADE_NO => $endData['OfficeId'] ); file_put_contents('./122.txt', 'Order22:' . json_encode($Order) . "\r\n", FILE_APPEND); $PayOrderModel->updateOrder(array($PayOrderModel::ID => $Order[$PayOrderModel::ID]), $updateData); //更新pay_order表 $this->doAddRate($endData['OfficeId'], $Order, 3); //增加代理商合伙人分润记录 } } } return 'success'; } else { //多域名回调 $continentNotify = file_get_contents('./Public/continent/notifyUrl.json'); if (!empty($continentNotify)) { try { $notifyList = json_decode($continentNotify, true); if (is_array($notifyList)) { foreach ($notifyList as $value) { if (!empty($value['url'])) { file_put_contents('./1.txt', date('Y-m-d H:i:s') . ' url: ' . $value['url'] . "\r\n", FILE_APPEND); $res = $this->http_request($value['url'], $json_data); file_put_contents('./1.txt', date('Y-m-d H:i:s') . ' res: ' . json_encode($res) . "\r\n", FILE_APPEND); if ($res) { return 'success'; } } } } } catch (Exception $e) { return false; } } return false; } } } } } /*-------------------------2019-5-18 组合支付结束---------------------------------*/ /*-------------------------2019-7-8 新版支付开始---------------------------------*/ /** * 新大陆刷卡支付 * @param $pay_order * @param $subject * @return mixed */ public function toContinentPay_v3($pay_order, $subject) { $url = self::$gatewayUrl . "/sdkBarcodePay.json"; $PayOrderModel = D('RetailPayOrder'); $itemData = $this->execute($pay_order[$PayOrderModel::OUT_TRADE_NO], $pay_order[$PayOrderModel::MERCHANT_ID], 1); $itemData['authCode'] = $pay_order[$PayOrderModel::CODE]; //设备读取用户微信或支付宝中的条码或者二维码信息 $itemData['payChannel'] = $pay_order[$PayOrderModel::PAY_TYPE] == 2 ? 'ALIPAY' : 'WXPAY'; //支付宝---ALIPAY 微信---WXPAY 银联---YLPAY $itemData['subject'] = $subject; //订单标题 $itemData['amount'] = $pay_order[$PayOrderModel::TRADE_AMOUNT] * 100; //实付金额 以分为单位 $itemData['total_amount'] = $itemData['amount']; //订单总金额 //拼接之后签名 $itemData['signValue'] = $this->getSign($itemData); $itemJson = json_encode($itemData); $re = $this->http_request($url, $itemJson); $request = urldecode($re); file_put_contents('./xdlLinePay.txt', date('Y-m-d H:i:s') . json_encode($request), FILE_APPEND); $request = json_decode($request, true); if ($request['returnCode'] == "000000") { if ($request['result'] == "A") { $result = $this->searchAndUpdateOrder_v3($pay_order); } else if ($request['result'] == "S") { //支付成功 $save[$PayOrderModel::TRADE_NO] = $request['orderNo']; $save[$PayOrderModel::ORDER_STATE] = 'SUCCESS'; $save[$PayOrderModel::TRADE_DATE] = time(); $save[$PayOrderModel::EXTEND_CONTENT] = json_encode($request); $up = $PayOrderModel->updateOrder(array($PayOrderModel::ID => $pay_order[$PayOrderModel::ID]), $save); $this->doAddRate($request['orderNo'], $pay_order, 3);//分润 if ($up) { $result['status'] = 1; $result['msg'] = '支付成功'; } else { $result['status'] = 0; $result['msg'] = '支付成功但订单更新失败1,请联系管理员'; } } } else { $result['request'] = $request; $result['post'] = $itemData; $result['status'] = 0; $result['msg'] = $request['message'] ? $request['message'] : '支付失败'; } return $result; } /** * 用户等待支付 * @param $pay_order * @return mixed */ public function searchAndUpdateOrder_v3($pay_order) { $canReturn = false; $PayOrderModel = D('RetailPayOrder'); while (!$canReturn) { $res = $this->QryBarcode($pay_order['out_trade_no'], $pay_order['merchant_id'], $pay_order['add_time']); file_put_contents('./xdlLinePay.txt', date('Y-m-d H:i:s') . json_encode($res), FILE_APPEND); if ($res['returnCode'] == '000000') { if ($res['result'] == 'A') { $time = get_runtime(); if ($time >= 60) { //超时,撤销订单 $result['status'] = 0; $result['msg'] = '用户取消支付'; $canReturn = true; } } else if ($res['result'] == 'S') { //支付成功 $save[$PayOrderModel::TRADE_NO] = $res['orderNo']; $save[$PayOrderModel::ORDER_STATE] = 'SUCCESS'; $save[$PayOrderModel::TRADE_DATE] = time(); $save[$PayOrderModel::EXTEND_CONTENT] = json_encode($res); $up = $PayOrderModel->updateOrder(array($PayOrderModel::ID => $pay_order[$PayOrderModel::ID]), $save); $this->doAddRate($res['orderNo'], $pay_order, 3); if ($up) { $result['status'] = 1; $result['msg'] = '支付成功'; } else { $result['status'] = 0; $result['msg'] = '支付成功但订单更新失败2,请联系管理员'; } $canReturn = true; } else { $result['status'] = 0; $result['msg'] = '用户取消支付2'; $canReturn = true; } } else { $result['status'] = 0; $result['res'] = $res; $result['msg'] = '用户取消支付3'; $canReturn = true; } } return $result; } /** * 2019-7-9 小程序下单接口 * @param $total_fee * @param $openid * @param $merchant_id * @param $out_trade_no * @return mixed */ public function pubSigPay_v3($total_fee, $openid, $merchant_id, $out_trade_no) { $res = $this->pubSigQrys($merchant_id); if ($res) { $appId = M('merchant_infos')->where(array('merchant_id' => $merchant_id))->getField('xcc_appid'); $url = self::$gatewayUrl . "/pubSigPay.json"; $this->orN($merchant_id); $param['orgNo'] = self::$OrgNo; //机构号 $param['mercId'] = self::$mercId; //商户号 $param['trmNo'] = self::$trmNo; //终端号 $param['txnTime'] = date('YmdHis'); //设备端交易时间 $param['version'] = 'V1.0.0'; $param['amount'] = $total_fee; $param['total_amount'] = $total_fee; $param['openid'] = $openid; $param['txnappid'] = $appId; $param['selOrderNo'] = $out_trade_no;//商户内部订单号 //拼接之后签名 $itemJson = json_encode($param); $re = $this->http_request($url, $itemJson); $request = urldecode($re); $request = json_decode($request, true); if ($request['returnCode'] == '000000') { $data['timeStamp'] = $request['apiTimestamp']; $data['nonceStr'] = $request['apiNoncestr']; $data['package'] = $request['apiPackage']; $data['signType'] = $request['apiSigntype']; $data['paySign'] = $request['apiPaysign']; $data['PrepayId'] = $request['PrepayId']; $result['status'] = 1; $result['msg'] = '创建订单成功'; $result['data'] = $data; } else { $result['status'] = 0; $result['msg'] = $request['message'] ? $request['message'] : '创建订单失败'; } } else { $result['status'] = 0; $result['msg'] = '新大陆支付初始化失败'; } return $result; } /** * 退款 * @param $payOrder * @return mixed */ public function toOrderRefund_v3($payOrder) { $url = self::$gatewayUrl . "/sdkRefundBarcodePay.json"; $PayOrderModel = D('RetailPayOrder'); $txnArr = $this->execute($payOrder[$PayOrderModel::TRADE_NO], $payOrder[$PayOrderModel::MERCHANT_ID]); $txnArr['orderNo'] = $payOrder[$PayOrderModel::TRADE_NO]; //支付渠道订单号 $txnArr['tradeNo'] = $payOrder[$PayOrderModel::OUT_TRADE_NO]; $txnArr['txnAmt'] = $payOrder[$PayOrderModel::TRADE_AMOUNT] * 100; //退款金额 $txnArr['signValue'] = $this->getSign($txnArr); $itemJson = json_encode($txnArr); $re = $this->http_request($url, $itemJson); $request = urldecode($re); $request = json_decode($request, true); // file_put_contents('1.txt', json_encode($request) . "\r\n", FILE_APPEND); $result['data'] = $request; if ($request['returnCode'] == "000000") { $where['out_trade_no'] = $payOrder['before_trade_no']; $where['state'] = 0; $info = M('continent_cash')->where($where)->find(); if (!empty($info)) { $refundMoney = $payOrder[$PayOrderModel::TRADE_AMOUNT]; if ((floatval($refundMoney) < round($info['trade_amount'] + $info['refund_amount'], 2))) { $partner_refund_profit = round(($info['agent_rate'] - $info['partner_rate']) / 100 * $refundMoney, 2); $agent_refund_profit = round(($info['merchant_rate'] - $info['agent_rate']) / 100 * $refundMoney, 2); } else { $partner_refund_profit = $info['partner_profit']; $agent_refund_profit = $info['agent_profit']; } $save['partner_refund_profit'] = round($info['partner_refund_profit'] + $partner_refund_profit, 2); $save['agent_refund_profit'] = round($info['agent_refund_profit'] + $agent_refund_profit, 2); if ($save['partner_refund_profit'] > $info['partner_profit']) { $partner_refund_profit = round($info['partner_profit'] - $info['partner_refund_profit'], 2); $save['partner_refund_profit'] = $info['partner_profit']; } if ($agent_refund_profit > $info['agent_profit']) { $agent_refund_profit = round($info['agent_profit'] - $info['agent_refund_profit'], 2); $save['agent_refund_profit'] = $info['agent_profit']; } $save['refund_amount'] = round($refundMoney + $info['refund_amount'], 2); M('retail_admin')->where(array('id' => $info['partner_id']))->setDec('balance', $agent_refund_profit); M('retail_agent')->where(array('id' => $info['agent_id']))->setDec('balance', $partner_refund_profit); M('continent_cash')->where($where)->save($save); } $result['status'] = 1; $result['msg'] = '退款成功'; } else { $result['status'] = 0; $result['msg'] = '退款失败'; } return $result; } /** * 新大陆扫码支付获取二维码 * @param array $order pay_order订单 * @return array $res */ public function sweepCodePay($order) { $RPOModel = D('RetailPayOrder'); // pay_order表模型 $money = $order[$RPOModel::TRADE_AMOUNT] * 100; $url = self::$gatewayUrl . "/sdkBarcodePosPay.json"; $mer_id = M("merchant_infos")->where(array('merchant_id' => $order['merchant_id']))->getField("merc_id"); $RPOModel->updateOrder(array($RPOModel::OUT_TRADE_NO => $order[$RPOModel::OUT_TRADE_NO]), array($RPOModel::MER_ID => $mer_id)); $arrData = $this->execute($order[$RPOModel::OUT_TRADE_NO], $order[$RPOModel::MERCHANT_ID]); $arrData['amount'] = $money; // $param['money']*100 $arrData['total_amount'] = $money; // $param['total_amount'] $arrData['payChannel'] = $order[$RPOModel::PAY_TYPE] == 2 ? 'ALIPAY' : 'WXPAY'; //$param['types'] $arrData['signValue'] = $this->getSign($arrData); $itemJson = json_encode($arrData); $re = $this->http_request($url, $itemJson); $request = urldecode($re); $request = json_decode($request, true); if ($request['returnCode'] == '000000') { if ($request['result'] == 'S') { $data['code_url'] = $request['payCode']; $res['qr_code'] = $request['payCode']; $res['data'] = $data; $res['status'] = 1; } else { $res['status'] = 0; $res['msg'] = $request['message']; } } else { $res['status'] = 0; $res['msg'] = $request['message']; } return $res; } /*-------------------------2019-7-8 新版支付结束---------------------------------*/ /** * 2019-11-15 小程序或公众号下单接口 * @param $payOrder * @param $openid * @param $type 1公众号 2小程序 * @return mixed */ public function createOnlineOrder($payOrder, $openid, $type) { $PayOrderModel = D('RetailPayOrder'); $merchant_id = $payOrder[$PayOrderModel::MERCHANT_ID]; $total_fee = $payOrder[$PayOrderModel::TRADE_AMOUNT] * 100; $out_trade_no = $payOrder[$PayOrderModel::OUT_TRADE_NO]; $res = $this->pubSigQrys($merchant_id); if ($res) { $iMap = array( 'merchant_id' => $merchant_id, ); $infos = M('merchant_infos')->where($iMap)->field('xcc_appid,merc_id,wx_appid')->find(); $appId = $type == 1 ? $infos['wx_appid'] : $infos['xcc_appid']; $pMap = array( $PayOrderModel::ID => $payOrder[$PayOrderModel::ID], ); $pSave = array( $PayOrderModel::MER_ID => $infos['merc_id'], $PayOrderModel::M_PAY_TYPE => 3, ); $PayOrderModel->updateOrder($pMap, $pSave);//更新支付收款商户号 $url = self::$gatewayUrl . "/pubSigPay.json"; $this->orN($merchant_id); $param['orgNo'] = self::$OrgNo; //机构号 $param['mercId'] = self::$mercId; //商户号 $param['trmNo'] = self::$trmNo; //终端号 $param['txnTime'] = date('YmdHis'); //设备端交易时间 $param['version'] = 'V1.0.0'; $param['amount'] = $total_fee; $param['total_amount'] = $total_fee; $param['openid'] = $openid; $param['txnappid'] = $appId; $param['selOrderNo'] = $out_trade_no;//商户内部订单号 //拼接之后签名 $itemJson = json_encode($param); $re = $this->http_request($url, $itemJson); $request = urldecode($re); $request = json_decode($request, true); if ($request['returnCode'] == '000000') { $data['timeStamp'] = $request['apiTimestamp']; $data['nonceStr'] = $request['apiNoncestr']; $data['package'] = $request['apiPackage']; $data['signType'] = $request['apiSigntype']; $data['paySign'] = $request['apiPaysign']; $data['PrepayId'] = $request['PrepayId']; $data['signType'] = $request['apiSigntype']; $result['status'] = 1; $result['msg'] = '创建订单成功'; $result['data'] = $data; } else { $result['status'] = 0; $result['msg'] = $request['message'] ? $request['message'] : '创建订单失败'; } } else { $result['status'] = 0; $result['msg'] = '新大陆支付初始化失败'; } return $result; } /** * 新大陆刷卡支付 2020-10-15 * @param $pay_order * @param $subject * @return mixed */ public function toContinentPay_v4($pay_order, $subject) { $url = self::$gatewayUrl . "/sdkBarcodePay.json"; $this->orN($pay_order['merchant_id']); $itemData = [ 'opSys' => 0, //操作系统 'characterSet' => '00', 'orgNo' => self::$OrgNo, 'mercId' => self::$mercId, //商户号 $param['mercId'] 'version' => 'V1.0.6', //版本号 'trmNo' => self::$trmNo, //设备号 $param['trmNo'] 'tradeNo' => $pay_order['out_trade_no'], //商户端订单号 $param['tradeNO'] 'txnTime' => date('YmdHis'), //设备端交易时间 时间戳格式$ param['txnTime'] 'signType' => 'MD5', //签名方式 'authCode' => $pay_order['code'], //设备读取用户微信或支付宝中的条码或者二维码信息 'payChannel' => $pay_order['pay_type'] == 2 ? 'ALIPAY' : 'WXPAY', //支付宝---ALIPAY 微信---WXPAY 银联---YLPAY 'subject' => $subject, //订单标题 'amount' => $pay_order['trade_amount'] * 100, //实付金额 以分为单位 'total_amount' => $pay_order['trade_amount'] * 100, //订单总金额 'orderTimOut' => '1',//订单超时时间(单位:分)仅V1.0.6往上的版本支持 ]; //拼接之后签名 $itemData['signValue'] = $this->getSign($itemData); $itemJson = json_encode($itemData); $request = $this->http_request($url, $itemJson); $request = urldecode($request); file_put_contents('./xdlLinePay.txt', date('Y-m-d H:i:s') . json_encode($request), FILE_APPEND); $request = json_decode($request, true); if ($request['returnCode'] == "000000") { return callBack(statusCode()['success'],"请求成功"); } else { $result['request'] = $request; $result['post'] = $itemData; $result['status'] = 0; $result['message'] = $request['message'] ? $request['message'] : '支付失败'; return $result; } } }