文件
mashangyoujiu/Application/NotifyApi/Controller/SelfHelpCashierController.class.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表订单信息
}
}