canyin-project/ybcy/controllers/channelApi/PayNoticeController.php
2024-11-01 16:07:54 +08:00

761 lines
36 KiB
PHP

<?php
namespace app\controllers\channelApi;
use app\models\common\ZiJie;
use Illuminate\Support\Facades\DB;
use WechatPay\GuzzleMiddleware\Util\AesUtil;
use Yii;
use yii\web\Controller;
use app\models\common\WeChat;
use app\models\common\Ali;
use app\models\common\CallbackOrder;
use EasyWeChat\Factory;
class PayNoticeController extends Controller{
public $enableCsrfValidation = false;
//外卖订单回调
public function actionOrderNotice(){
$input = file_get_contents('php://input');//json串
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$openid=$message['openid'];
$user=(new \yii\db\Query())
->from('{{%ybwm_member}}')
->where('openId=:openId AND uniacid=:uniacid', [':openId' => $openid,':uniacid'=>$order['uniacid']])->one();
if($user['id']!=$order['userId']){//代付
$replaceUserId=$user['id'];
}else{
$replaceUserId=0;
}
$sub_mch_id=$message['sub_mch_id']?:'';
//付款模式 1普通模式,2服务商模式'
$payType=1;
if($sub_mch_id){
$payType=2;
}
Yii::$app->db->createCommand()->update('{{%ybwm_takeout_order}}', ['replaceUserId'=>$replaceUserId,'transaction_id'=>$message['transaction_id'],'payType'=>$payType,'subMchId'=>$sub_mch_id],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
$res=CallbackOrder::order($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
//外卖订单回调-fuiou
public function actionOrderNotices(){
$input = file_get_contents('php://input');//json串
// $res= FromXml($input);
$input_str = substr($input,4);
$ob = simplexml_load_string(urldecode(urldecode($input_str)));
$res = json_decode(json_encode($ob,true),true);
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['mchnt_order_no']])->one();
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($res['result_msg'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$transaction = Yii::$app->db->beginTransaction(); //开始事务
try{
$logData['total_money'] = number_format($res['order_amt'] / 100, 2);
$logData['pay_order'] = $res['mchnt_order_no'];
$logData['pay_channel'] = 1;
$logData['op_user_id'] = $order['userId'] ? $order['userId'] : 0;//小程序下单由下单人为操作者
$logData['order_type'] = 2;
$logData['result_msg'] = $res['result_msg'];
$logData['result_code'] = $res['result_code'];
$logData['bind_id'] = $order['bind_id'];
$logData['pay_status'] = 2;
$logData['remark'] = '小程序订单';
$now_time = time();
$logData['pay_time'] = $now_time;
$logData['create_time'] = $now_time;
YII::$app->db->createCommand()->insert('{{%ybwm_paychannel_payment_log}}', $logData)->execute();
$payType=1;
$updata = [
'payType' => $payType,
'payAt' => $res['txn_fin_ts'] ? strtotime($res['txn_fin_ts']) : time(),
];
Yii::$app->db->createCommand()->update('{{%ybwm_takeout_order}}', $updata,'outTradeNo=:outTradeNo', [':outTradeNo' => $res['mchnt_order_no']])->execute();
$res1=CallbackOrder::order($order['id'],1);
if(!$res1){
return false;
}
} catch (RequestException $e) {
$transaction->rollBack();//事务回滚
return false;
}
$transaction->commit();
} else {
return false;
}
return true; // 返回处理完成
}
//充值订单(富友)
public function actionBalanceOrderNotices()
{
$input = file_get_contents('php://input');
// $res= FromXml($input);
$input_str = substr($input,4);
$ob = simplexml_load_string(urldecode(urldecode($input_str)));
$res = json_decode(json_encode($ob,true),true);
$order = (new \yii\db\Query())
->from('{{%ybwm_user_balance_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['mchnt_order_no']])->one();
// 使用通知里的 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉 ,我已经处理完了,订单没找到,别再通知我了
}
if ($res['result_msg'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$transaction = Yii::$app->db->beginTransaction(); //开始事务
try{
$logData['total_money'] = number_format($res['order_amt'] / 100, 2);
$logData['pay_order'] = $res['mchnt_order_no'];
$logData['pay_channel'] = 1;
$logData['op_user_id'] = $order['userId'] ? $order['userId'] : 0;//小程序下单由下单人为操作者
$logData['result_msg'] = $res['result_msg'];
$logData['result_code'] = $res['result_code'];
$logData['bind_id'] = $order['bind_id'];
$logData['pay_status'] = 2;
$logData['order_type'] = 3;//小程序充值订单
$logData['remark'] = '小程序充值订单';
$logData['pay_time'] = $res['txn_fin_ts'] ? strtotime($res['txn_fin_ts']) : time();
$logData['create_time'] = time();
YII::$app->db->createCommand()->insert('{{%ybwm_paychannel_payment_log}}', $logData)->execute();
$updata = [
'payType' => 1,
'payAt' => $res['txn_fin_ts'] ? strtotime($res['txn_fin_ts']) : time(),
];
Yii::$app->db->createCommand()->update('{{%ybwm_user_balance_order}}', $updata,'outTradeNo=:outTradeNo', [':outTradeNo' => $res['mchnt_order_no']])->execute();
// 用户是否支付成功
$res=CallbackOrder::balanceOrder($order['id'],1);
if(!$res){
return false;
}
} catch (RequestException $e) {
$transaction->rollBack();//事务回滚
return false;
}
$transaction->commit();
} else {
return false;
}
return true; // 返回处理完成
}
//充值订单(微信)
public function actionBalanceOrderNotice()
{
$input = file_get_contents('php://input');
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_user_balance_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_user_balance_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$sub_mch_id=$message['sub_mch_id']?:'';
$payType=1;
if($sub_mch_id){
$payType=2;
}
Yii::$app->db->createCommand()->update('{{%ybwm_user_balance_order}}', ['transaction_id'=>$message['transaction_id'],'payType'=>$payType,'subMchId'=>$sub_mch_id],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
$res=CallbackOrder::balanceOrder($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
//积分商城订单
public function actionIntegralOrderNotice()
{
$input = file_get_contents('php://input');
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_integral_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_integral_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$sub_mch_id=$message['sub_mch_id']?:'';
Yii::$app->db->createCommand()->update('{{%ybwm_integral_order}}', ['transaction_id'=>$message['transaction_id'],'subMchId'=>$sub_mch_id],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
$res=CallbackOrder::integralOrder($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
//券包订单
public function actionRollBagOrderNotice()
{
$input = file_get_contents('php://input');
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_roll_bag_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_roll_bag_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$sub_mch_id=$message['sub_mch_id']?:'';
$payType=1;
if($sub_mch_id){
$payType=2;
}
Yii::$app->db->createCommand()->update('{{%ybwm_roll_bag_order}}', ['transaction_id'=>$message['transaction_id'],'payType'=>$payType,'subMchId'=>$sub_mch_id],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
$res=CallbackOrder::rollBagOrder($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
//收银订单
public function actionCashierOrderNotice()
{
$input = file_get_contents('php://input');
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_cashier_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_cashier_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$sub_mch_id=$message['sub_mch_id']?:'';
$payType=1;
if($sub_mch_id){
$payType=2;
}
Yii::$app->db->createCommand()->update('{{%ybwm_cashier_order}}', ['transaction_id'=>$message['transaction_id'],'payType'=>$payType,'subMchId'=>$sub_mch_id],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
$res=CallbackOrder::cashierOrder($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
//快餐订单
public function actionFastOrderNotice()
{
$input = file_get_contents('php://input');
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$sub_mch_id=$message['sub_mch_id']?:'';
$payType=1;
if($sub_mch_id){
$payType=2;
}
Yii::$app->db->createCommand()->update('{{%ybwm_instore_order}}', ['transaction_id'=>$message['transaction_id'],'payType'=>$payType,'subMchId'=>$sub_mch_id],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
$res=CallbackOrder::fastOrder($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
//店内订单
public function actionInstoreOrderNotice()
{
$input = file_get_contents('php://input');
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['payAt']) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$sub_mch_id=$message['sub_mch_id']?:'';
$payType=1;
if($sub_mch_id){
$payType=2;
}
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
Yii::$app->db->createCommand()->update('{{%ybwm_instore_order}}', ['transaction_id'=>$message['transaction_id'],'payType'=>$payType,'subMchId'=>$sub_mch_id,'payAt'=>time()],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
$res=CallbackOrder::instoreOrder($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
//店内订单-富友支付回调地址
public function actionInstoreOrderNotices()
{
$input = file_get_contents('php://input');
// $res= FromXml($input);
$input_str = substr($input,4);
$ob = simplexml_load_string(urldecode(urldecode($input_str)));
$res = json_decode(json_encode($ob,true),true);
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['mchnt_order_no']])->one();
if (!$order || $order['payAt']) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($res['result_msg'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$transaction = Yii::$app->db->beginTransaction(); //开始事务
try{
$logData['total_money'] = number_format($res['order_amt'] / 100, 2);
$logData['pay_order'] = $res['mchnt_order_no'];
$logData['pay_channel'] = 1;
$logData['op_user_id'] = $order['userId'] ? $order['userId'] : 0;//小程序下单由下单人为操作者
$logData['order_type'] = 2;
$logData['result_msg'] = $res['result_msg'];
$logData['result_code'] = $res['result_code'];
$logData['bind_id'] = $order['bind_id'];
$logData['pay_status'] = 2;
$logData['remark'] = '小程序订单';
$now_time = time();
$logData['pay_time'] = $now_time;
$logData['create_time'] = $now_time;
YII::$app->db->createCommand()->insert('{{%ybwm_paychannel_payment_log}}', $logData)->execute();
$payType=1;
$updata = [
'payType' => $payType,
'payAt' => $res['txn_fin_ts'] ? strtotime($res['txn_fin_ts']) : time(),
];
Yii::$app->db->createCommand()->update('{{%ybwm_instore_order}}', $updata,'outTradeNo=:outTradeNo', [':outTradeNo' => $res['mchnt_order_no']])->execute();
$res=CallbackOrder::instoreOrder($order['id'],1);
if(!$res){
return false;
}
} catch (RequestException $e) {
$transaction->rollBack();//事务回滚
return false;
}
$transaction->commit();
} else {
return false;
}
return true; // 返回处理完成
}
//付费会员
public function actionVipOrderNotice()
{
$input = file_get_contents('php://input');
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_user_vip_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_user_vip_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['state']!=1) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
Yii::$app->db->createCommand()->update('{{%ybwm_user_vip_order}}', ['transaction_id'=>$message['transaction_id']],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
$res=CallbackOrder::vipOrder($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
//预约
public function actionAppointmentOrderNotice()
{
$input = file_get_contents('php://input');
$res= FromXml($input);
$order = (new \yii\db\Query())
->from('{{%ybwm_appointment}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $res['out_trade_no']])->one();
$app = Factory::payment(WeChat::getWxPayConfig($order['uniacid'],1,$order['storeId']));
$response = $app->handlePaidNotify(function($message, $fail){
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
//$order = 查询订单($message['out_trade_no']);
$order = (new \yii\db\Query())
->from('{{%ybwm_appointment}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->one();
if (!$order || $order['state']==3) { // 如果订单不存在 或者 订单已经支付过了
return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
}
if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
$sub_mch_id=$message['sub_mch_id']?:'';
$payType=1;
if($sub_mch_id){
$payType=2;
}
Yii::$app->db->createCommand()->update('{{%ybwm_appointment}}', ['transaction_id'=>$message['transaction_id'],'payType'=>$payType,'subMchId'=>$sub_mch_id],'outTradeNo=:outTradeNo', [':outTradeNo' => $message['out_trade_no']])->execute();
// 用户是否支付成功
if (array_get($message, 'result_code') === 'SUCCESS') {
$res=CallbackOrder::appointmentOrder($order['id'],1);
if(!$res){
return $fail('修改订单状态失败');
}
}
} else {
return $fail('通信失败,请稍后再通知我');
}
return true; // 返回处理完成
});
$response->send(); // return $response;
}
public function actionAliApplicationNotice(){
$result=axios_request();
$biz_content=json_decode($result['biz_content'],true);
$info=(new \yii\db\Query())
->from('{{%ybwm_ali_store}}')
->where('order_id=:order_id',[':order_id'=>$biz_content['order_id']])->one();
if($info){
Yii::$app->db->createCommand()->update('{{%ybwm_ali_store}}', ['shop_id'=>$biz_content['shop_id']],['order_id'=>$biz_content['order_id']])->execute();
}
}
//头条回调
public function actionTouTiaoNotice(){
$postData = file_get_contents('php://input');
//file_put_contents('toutiao.log',$postData);
$data=json_decode($postData,true);
$msgData=json_decode($data['msg'],true);
$cp_extra=json_decode($msgData['cp_extra'],true);
$set = Config::getSystemSet('toutiao', $cp_extra['uniacid']);
$token=$set['token'];
$sing=ZiJie::noticeSign($data,$token);
if($sing!=$data['msg_signature']){
return false;
}
if($cp_extra['orderType']==1){
//外卖回调
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $msgData['cp_orderno']])->one();
$res=CallbackOrder::order($order['id'],3);
}
if($cp_extra['orderType']==2){
//充值回调
$order = (new \yii\db\Query())
->from('{{%ybwm_user_balance_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $msgData['cp_orderno']])->one();
$res=CallbackOrder::balanceOrder($order['id'],3);
}
if($cp_extra['orderType']==3){
//积分商城回调
$order = (new \yii\db\Query())
->from('{{%ybwm_integral_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $msgData['cp_orderno']])->one();
$res=CallbackOrder::integralOrder($order['id'],3);
}
if($cp_extra['orderType']==4){
//券包回调
$order = (new \yii\db\Query())
->from('{{%ybwm_roll_bag_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $msgData['cp_orderno']])->one();
$res=CallbackOrder::rollBagOrder($order['id'],3);
}
if($cp_extra['orderType']==5){
//收银回调
$order = (new \yii\db\Query())
->from('{{%ybwm_cashier_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $msgData['cp_orderno']])->one();
$res=CallbackOrder::cashierOrder($order['id'],3);
}
if($cp_extra['orderType']==6){
//快餐回调
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
$res=CallbackOrder::fastOrder($order['id'],3);
}
if($cp_extra['orderType']==7){
//堂食回调
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $msgData['cp_orderno']])->one();
$res=CallbackOrder::instoreOrder($order['id'],3);
}
if($msgData['cp_extra']['orderType']==8){
//付费会员
$order = (new \yii\db\Query())
->from('{{%ybwm_user_vip_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $msgData['cp_orderno']])->one();
$res=CallbackOrder::vipOrder($order['id'],3);
}
if($cp_extra['orderType']==9){
//预约
$order = (new \yii\db\Query())
->from('{{%ybwm_appointment}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $msgData['cp_orderno']])->one();
$res=CallbackOrder::appointmentOrder($order['id'],3);
}
if($res){
return '{
"err_no": 0,
"err_tips": "success"
}';
}
return false;
}
//支付宝回调
public function actionAliNotice(){
parse_str($_POST['passback_params'],$passback_params);
$uniacid=$passback_params['uniacid'];
$res=Ali::verifyNotify($uniacid,$_POST);
if($res['code']==1){
if($passback_params['orderType']==1){
//外卖回调
$order = (new \yii\db\Query())
->from('{{%ybwm_takeout_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
Ali::sync($order['uniacid'],$order['id'],1);//同步订单到支付宝
$res=CallbackOrder::order($order['id'],2);
}
if($passback_params['orderType']==2){
//充值回调
$order = (new \yii\db\Query())
->from('{{%ybwm_user_balance_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
$res=CallbackOrder::balanceOrder($order['id'],2);
}
if($passback_params['orderType']==3){
//积分商城回调
$order = (new \yii\db\Query())
->from('{{%ybwm_integral_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
$res=CallbackOrder::integralOrder($order['id'],2);
}
if($passback_params['orderType']==4){
//券包回调
$order = (new \yii\db\Query())
->from('{{%ybwm_roll_bag_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
$res=CallbackOrder::rollBagOrder($order['id'],2);
}
if($passback_params['orderType']==5){
//收银回调
$order = (new \yii\db\Query())
->from('{{%ybwm_cashier_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
$res=CallbackOrder::cashierOrder($order['id'],2);
}
if($passback_params['orderType']==6){
//快餐回调
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
Ali::sync($order['uniacid'],$order['id'],3);//同步订单到支付宝
$res=CallbackOrder::fastOrder($order['id'],2);
}
if($passback_params['orderType']==7){
//堂食回调
$order = (new \yii\db\Query())
->from('{{%ybwm_instore_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
Ali::sync($order['uniacid'],$order['id'],2);//同步订单到支付宝
$res=CallbackOrder::instoreOrder($order['id'],2);
}
if($passback_params['orderType']==8){
//付费会员
$order = (new \yii\db\Query())
->from('{{%ybwm_user_vip_order}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
$res=CallbackOrder::vipOrder($order['id'],2);
}
if($passback_params['orderType']==9){
//预约
$order = (new \yii\db\Query())
->from('{{%ybwm_appointment}}')
->where('outTradeNo=:outTradeNo', [':outTradeNo' => $_POST['out_trade_no']])->one();
$res=CallbackOrder::appointmentOrder($order['id'],2);
}
if(!$res){
echo 'fail';
}else{
echo 'success';
}
}else{
echo 'fail';
}
}
// //头条回调
// public function actionTouTiaoRefundNotice(){
// $postData = file_get_contents('php://input');
// $data=json_decode($postData,true);
// $sing=ZiJie::noticeSign($data);
// if($sing!=$data['msg_signature']){
// return false;
// }
// $msgData=json_decode($data['msg'],true);
// $cp_extra=json_decode($msgData['cp_extra'],true);
// if($res){
// return '{
// "err_no": 0,
// "err_tips": "success"
// }';
// }
// return false;
//
// }
}