getFind(array($RPOModel::OUT_TRADE_NO=>strval($out_trade_no),$RPOModel::ORDER_STATE=>'WAIT_BUYER_PAY')); // 判断订单 if(!$pay_order){ return 'error'; } // 查询支付设置 $RPSModel = D('RetailPaySet'); $pay_config = $RPSModel->getFindMerchantConfig($pay_order[$RPOModel::MERCHANT_ID],1); if($pay_config['status'] == 0){ return 'error'; } $config = $pay_config['config']; if($pay_order[$RPOModel::M_PAY_TYPE] == 1){ $key = $config[$RPSModel::WX_SECRET_KEY]; }else if($pay_order[$RPOModel::M_PAY_TYPE] == 2){ $pay_set = M("systemconfig")->find(); $key = $pay_set['wx_key']; } $WxMicroPay = new \Util\Wx\WxMicroPay(array('key' => $key)); $sign = $WxMicroPay->getSign($post); if($postSign == $sign){ // 修改pay_order表订单 $up = array( $RPOModel::TRADE_NO => $post['transaction_id'], $RPOModel::ORDER_STATE => 'SUCCESS', $RPOModel::TRADE_DATE => time(), $RPOModel::EXTEND_CONTENT => $extend_content ); $RPOModel->updateOrder(array($RPOModel::ID => $pay_order[$RPOModel::ID]), $up); // 更新pay_order订单信息 // 修改bill_order pay_money pay_type $RBOModel = D('RetailBillOrder'); $up2 = array( $RBOModel::PAY_MONEY => $pay_order[$RPOModel::TRADE_AMOUNT], $RBOModel::PAY_TYPE => 3, ); $RBOModel->updateOrder(array($RBOModel::ID=>$pay_order[$RPOModel::BILL_ID]),$up2); A('PayApi/Order')->paySuccess($pay_order[$RPOModel::BILL_ID]); // 修改bill表订单信息 } return 'success'; } /** * 自助收银支付宝扫码回调 */ public function aliPayNotifyUrl() { $post = $_POST; if ($post['trade_status'] == 'TRADE_SUCCESS') { // 支付成功 接收数据 $out_trade_no = $post['out_trade_no']; if (!$out_trade_no) { return 'error'; } // 查询pay_order订单 $RPOModel = D('RetailPayOrder'); $pay_order = $RPOModel->getFind(array($RPOModel::OUT_TRADE_NO=>strval($out_trade_no),$RPOModel::ORDER_STATE=>'WAIT_BUYER_PAY')); if(empty($pay_order)){ return 'error'; } // 查询支付宝支付结果 $result = $this->aliPaySearch($pay_order); if($result['status'] == 1){ // 支付成功 修改pay_order表订单 $up = array( $RPOModel::TRADE_NO => $post['trade_no'], $RPOModel::ORDER_STATE => 'SUCCESS', $RPOModel::TRADE_DATE => time(), $RPOModel::EXTEND_CONTENT => json_encode($post) ); $RPOModel->updateOrder(array($RPOModel::ID => $pay_order[$RPOModel::ID]), $up); // 更新pay_order订单信息 // 修改bill_order pay_money pay_type $RBOModel = D('RetailBillOrder'); $up2 = array( $RBOModel::PAY_MONEY => $pay_order[$RPOModel::TRADE_AMOUNT], $RBOModel::PAY_TYPE => 4, ); $RBOModel->updateOrder(array($RBOModel::ID=>$pay_order[$RPOModel::BILL_ID]),$up2); A('PayApi/Order')->paySuccess($pay_order[$RPOModel::BILL_ID]); // 修改bill表订单 }else{ return 'error'; } return 'success'; } } /*快捷收单微信扫码回调 * */ public function wxPayQuickNotifyUrl() { $xml = $GLOBALS['HTTP_RAW_POST_DATA']; // 转换格式 $extend_content = json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)); $post = json_decode($extend_content, true); $postSign = $post['sign']; unset($post['sign']); // 接收订单号 $out_trade_no = $post['out_trade_no']; if (!$out_trade_no) { return 'error'; } // 查询pay_order订单 $RPOModel = D('RetailPayOrder'); $pay_order = $RPOModel->getFind(array($RPOModel::OUT_TRADE_NO=>strval($out_trade_no),$RPOModel::ORDER_STATE=>'WAIT_BUYER_PAY')); // 判断订单 if(!$pay_order){ return 'error'; } // 查询支付设置 $RPSModel = D('RetailPaySet'); $pay_config = $RPSModel->getFindMerchantConfig($pay_order[$RPOModel::MERCHANT_ID],1); if($pay_config['status'] == 0){ return 'error'; } $config = $pay_config['config']; if($pay_order[$RPOModel::M_PAY_TYPE] == 1){ $key = $config[$RPSModel::WX_SECRET_KEY]; }else if($pay_order[$RPOModel::M_PAY_TYPE] == 2){ $pay_set = M("systemconfig")->find(); $key = $pay_set['wx_key']; } $WxMicroPay = new \Util\Wx\WxMicroPay(array('key' => $key)); $sign = $WxMicroPay->getSign($post); if($postSign == $sign){ // 修改pay_order表订单 $up = array( $RPOModel::TRADE_NO => $post['transaction_id'], $RPOModel::ORDER_STATE => 'SUCCESS', $RPOModel::TRADE_DATE => time(), $RPOModel::EXTEND_CONTENT => $extend_content ); $RPOModel->updateOrder(array($RPOModel::ID => $pay_order[$RPOModel::ID]), $up); // 更新pay_order订单信息 } return 'success'; } /* * 快捷收单支付宝扫码回调 */ public function aliPayQuickNotifyUrl() { $post = $_POST; if ($post['trade_status'] == 'TRADE_SUCCESS') { // 支付成功 接收数据 $out_trade_no = $post['out_trade_no']; if (!$out_trade_no) { return 'error'; } // 查询pay_order订单 $RPOModel = D('RetailPayOrder'); $pay_order = $RPOModel->getFind(array($RPOModel::OUT_TRADE_NO=>strval($out_trade_no),$RPOModel::ORDER_STATE=>'WAIT_BUYER_PAY')); if(empty($pay_order)){ return 'error'; } // 查询支付宝支付结果 $result = $this->aliPaySearch($pay_order); if($result['status'] == 1){ // 支付成功 修改pay_order表订单 $up = array( $RPOModel::TRADE_NO => $post['trade_no'], $RPOModel::ORDER_STATE => 'SUCCESS', $RPOModel::TRADE_DATE => time(), $RPOModel::EXTEND_CONTENT => json_encode($post) ); $RPOModel->updateOrder(array($RPOModel::ID => $pay_order[$RPOModel::ID]), $up); // 更新pay_order订单信息 }else{ return 'error'; } return 'success'; } } /** * 支付宝 支付结果查询接口 */ protected function aliPaySearch($order) { // 查询支付设置 $RPOModel = D('RetailPayOrder'); $RPSModel = D('RetailPaySet'); $pay_config = $RPSModel->getFindMerchantConfig($order[$RPOModel::MERCHANT_ID],2); if($pay_config['status'] != 1){ return 'error'; } $config = $pay_config['config']; $item['out_trade_no'] = $order[$RPOModel::OUT_TRADE_NO]; if($order[$RPOModel::M_PAY_TYPE] == 1){ $appId = $config[$RPSModel::AL_APPID]; $rsaPrivateKey = $config[$RPSModel::AL_PRI_KEY]; $alipayrsaPublicKey = $config[$RPSModel::AL_PUB_KEY]; }else if($order[$RPOModel::M_PAY_TYPE] == 2){ $pay_set = M("systemconfig")->find(); $appId = $pay_set['alipay_appid']; $rsaPrivateKey = $pay_set['alipay_private_key']; $alipayrsaPublicKey = $pay_set['alipay_public_key']; } vendor('AopSDK.AopClient'); $aop = new \AopClient(); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = $appId; $aop->rsaPrivateKey = $rsaPrivateKey; $aop->alipayrsaPublicKey = $alipayrsaPublicKey; $aop->apiVersion = '1.0'; $aop->signType = 'RSA2'; $aop->postCharset = 'utf-8'; $aop->format = 'json'; vendor('AopSDK.request.AlipayTradeQueryRequest'); $request = new \AlipayTradeQueryRequest(); $request->setBizContent(json_encode($item)); if ($order["m_pay_type"] == 1) { $result = $aop->execute($request); } else { $result = $aop->execute($request, "", $config[$RPSModel::AL_TOKEN]); } $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response"; $resultCode = $result->$responseNode->code; if (!empty($resultCode) && $resultCode == 10000) { //交易成功 $result = json_decode(json_encode($result), true)['alipay_trade_query_response']; if ($result['trade_status'] == 'TRADE_SUCCESS' && $result['msg'] = 'Success') { $result['status'] = 1; } else { $result['status'] = 0; } } else { //交易失败 $result['status'] = 0; $result['msg'] = json_decode(($result), true)['alipay_trade_query_response']['sub_msg']; $result['error_msg'] = json_encode($result); } return $result; } /** * 自助收银新大陆回调 */ public function newPayNotifyUrl($order) { $RPOModel = D('RetailPayOrder'); // 修改bill_order pay_money pay_type $RBOModel = D('RetailBillOrder'); // 判断支付方式 if($order[$RPOModel::PAY_TYPE] == 1){ // 微信 $up[$RBOModel::PAY_TYPE] = 3; }else if($order[$RPOModel::PAY_TYPE] == 2){ // 支付宝 $up[$RBOModel::PAY_TYPE] = 4; }else{ return false; } $up[$RBOModel::PAY_MONEY] = $order[$RPOModel::TRADE_AMOUNT]; $RBOModel->updateOrder(array($RBOModel::ID=>$order[$RPOModel::BILL_ID]),$up); A('PayApi/Order')->paySuccess($order[$RPOModel::BILL_ID]); // 修改bill表订单信息 } }