279 行
12 KiB
PHP
可执行文件
279 行
12 KiB
PHP
可执行文件
<?php
|
|
namespace NotifyApi\Controller;
|
|
use Think\Controller;
|
|
//[1.3.25]
|
|
/**
|
|
* 自助收银回调
|
|
* Class UuController
|
|
* @package Retails\Controller
|
|
*/
|
|
class SelfHelpCashierController extends Controller
|
|
{
|
|
/**
|
|
* 自助收银微信扫码回调
|
|
*/
|
|
public function wxPayNotifyUrl()
|
|
{
|
|
$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订单信息
|
|
// 修改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表订单信息
|
|
}
|
|
} |