init: import production code mss.nahaichuan.com (exclude Runtime/Uploads/backups/logs)
这个提交包含在:
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace Pay\Controller;
|
||||
|
||||
use Common\Model\PayInfoModel;
|
||||
use Common\Model\RetailPayOrderModel;
|
||||
use Common\Model\RetailPaySetModel;
|
||||
use Think\Controller;
|
||||
|
||||
//[1.9.5]
|
||||
|
||||
/**
|
||||
* 微信小程序支付
|
||||
* Class WxMiniPayController
|
||||
* @package Pay\Controller
|
||||
*/
|
||||
class WxMiniPayController extends Controller
|
||||
{
|
||||
/**
|
||||
* 查询订单支付状态并更新
|
||||
* @param $order
|
||||
* @return mixed
|
||||
* @throws \think\Exception
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public function queryOrderAndUpdate($order)
|
||||
{
|
||||
$PaySetModel = new RetailPaySetModel();
|
||||
$paySet = $PaySetModel->getFindMerchantConfig($order['merchant_id'], 3);
|
||||
$config = $paySet['config'];
|
||||
|
||||
if ($order['m_pay_type'] == 3) {
|
||||
// 新大陆
|
||||
$PayContinent = new PayContinentController();
|
||||
return $PayContinent->searchAndUpdateOrder_v3($order);
|
||||
} else if ($order['m_pay_type'] == 4) {
|
||||
// 云闪付模式
|
||||
$CloudPay = new CloudPayController();
|
||||
return $CloudPay->queryOrderAndUpdate($order);
|
||||
} else if ($order['m_pay_type'] == 7) {
|
||||
// 钱客云模式
|
||||
$moneyGuest = new \MoneyGuestPay\Business\MoneyGuest();
|
||||
$response = $moneyGuest->moneyGuestQueryOrder([
|
||||
'pay_order' => $order,
|
||||
'config' => $config
|
||||
]);
|
||||
return $response;
|
||||
} else {
|
||||
//直连
|
||||
if ($order["m_pay_type"] == 1) {
|
||||
// 普通模式
|
||||
$key = $config[$PaySetModel::XCX_SECRET_KEY];
|
||||
$post['appid'] = $config[$PaySetModel::XCX_APPID];
|
||||
$post['mch_id'] = $config[$PaySetModel::XCX_MCH_ID];
|
||||
} else {
|
||||
// 服务商 $order['m_pay_type'] == 2
|
||||
$SystemConfigModel = D('SystemConfig');
|
||||
$systemConfig = $config['systemConfig'];
|
||||
$post['appid'] = $systemConfig[$SystemConfigModel::WX_APPID];
|
||||
$post['mch_id'] = $systemConfig[$SystemConfigModel::MCH_ID];
|
||||
$post['sub_mch_id'] = $config[$PaySetModel::XCX_SUB_MCH_ID];
|
||||
$post['sub_appid'] = $config[$PaySetModel::XCX_SUB_APPID];
|
||||
$key = $systemConfig[$SystemConfigModel::WX_KEY];
|
||||
}
|
||||
$post['nonce_str'] = createKey(); //随机字符串
|
||||
$post['out_trade_no'] = $order['out_trade_no'];
|
||||
$post['sign'] = createSign($post, $key); //签名
|
||||
// $result['post'] = $post;
|
||||
$post_xml = arrToXml($post);
|
||||
$url = 'https://api.mch.weixin.qq.com/pay/orderquery';
|
||||
$xml = http_request($url, $post_xml); //POST方式请求http
|
||||
$xcxArr = xmlToArray($xml); //将api返回xml数据转换成数组
|
||||
if ($xcxArr['return_code'] == 'SUCCESS' && $xcxArr['result_code'] == 'SUCCESS' && $xcxArr['trade_state'] == 'SUCCESS') {
|
||||
$PayOrderModel = new RetailPayOrderModel();
|
||||
$updateData = array(
|
||||
'order_state' => 'SUCCESS',
|
||||
'extend_content' => json_encode($xcxArr),
|
||||
'trade_date' => time(),
|
||||
'trade_no' => $xcxArr['transaction_id'],
|
||||
);
|
||||
$PayOrderModel->updateOrder(array('id' => $order['id']), $updateData); //更新pay_order表
|
||||
$where = [
|
||||
'merchant_id' => $order['merchant_id'],
|
||||
'openid' => $xcxArr['openid']
|
||||
];
|
||||
$PayInfo = new PayInfoModel();
|
||||
$pay_info = $PayInfo->getFind($where);
|
||||
if (empty($pay_info)) {
|
||||
$pay_info = [
|
||||
'merchant_id' => $order['merchant_id'],
|
||||
'pay_order_id' => $order['id'],
|
||||
'vip_id' => $order['vid'] ? $order['vid'] : 0,
|
||||
'xcx_id' => $order['uid'] ? $order['uid'] : 0,
|
||||
'm_pay_type' => $order['m_pay_type'],
|
||||
'openid' => $xcxArr['openid'],
|
||||
'sub_openid' => $xcxArr['sub_openid'] ? $xcxArr['sub_openid'] : '',
|
||||
'type' => 1,
|
||||
'add_time' => time(),
|
||||
];
|
||||
$PayInfo->addOrder($pay_info);
|
||||
}
|
||||
return callBack(statusCode()['success'], "支付成功");
|
||||
} else {
|
||||
return callBack(statusCode()['error'], "订单未支付");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户