...
|
...
|
@@ -14,6 +14,7 @@ use WebPlugin\Pay\weixin\lib\WxPayConfig; |
|
|
use WebPlugin\Pay\weixin\lib\WxPayNativePay;
|
|
|
use WebPlugin\Pay\weixin\lib\WxPayOrderQuery;
|
|
|
use WebPlugin\Pay\weixin\lib\WxPayUnifiedOrder;
|
|
|
use WebPlugin\PhpLog;
|
|
|
|
|
|
/**
|
|
|
* 支付有关方法
|
...
|
...
|
@@ -25,6 +26,22 @@ use WebPlugin\Pay\weixin\lib\WxPayUnifiedOrder; |
|
|
*/
|
|
|
class PayModel
|
|
|
{
|
|
|
// 日志等级,2表示记录信息等级的日志
|
|
|
const LOG_LEVEL = 2;
|
|
|
// 支付方式有关接口调用日志
|
|
|
const PAYMENT_LIST_LOG = '/Data/logs/pc_pay/payment_list';
|
|
|
// 向ERP提交订单状态有关接口调用日志和更新订单状态有关接口调用日志
|
|
|
const ORDER_STATUS_LOG = '/Data/logs/pc_pay/order_status';
|
|
|
// 获取或者更新订单支付银行的接口调用日志
|
|
|
const ORDER_BANK_LOG = '/Data/logs/pc_pay/order_bank';
|
|
|
// 根据用户UID获取订单数有关接口调用日志
|
|
|
const ORDER_COUNT_LOG = '/Data/logs/pc_pay/order_count';
|
|
|
// 发送短信有关接口调用日志
|
|
|
const SEND_MESSAGE_LOG = '/Data/logs/pc_pay/send_message';
|
|
|
|
|
|
// 是否老用户订单数判断值
|
|
|
const OLD_USER_LIMIT = 1;
|
|
|
|
|
|
/**
|
|
|
* 获取支付方式选择页面有关信息
|
|
|
*
|
...
|
...
|
@@ -94,8 +111,14 @@ class PayModel |
|
|
// 用户ID
|
|
|
$result['uid'] = $uid;
|
|
|
|
|
|
// 初始化日志
|
|
|
$log = new PhpLog(self::PAYMENT_LIST_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
// 获取支付途径列表
|
|
|
$log->LogInfo('===开始调用支付方式列表接口,接口方法为web.SpaceOrders.getPaymentList===');
|
|
|
$payTypes = PayData::getPaymentList();
|
|
|
$log->LogInfo('===结束调用支付方式列表接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($payTypes, true));
|
|
|
|
|
|
$defaultPayType = 0;
|
|
|
$types = array();
|
|
|
if (isset($payTypes['data']) && !empty($payTypes['data'])) {
|
...
|
...
|
@@ -125,16 +148,37 @@ class PayModel |
|
|
|
|
|
// 无需付款
|
|
|
if (isset($order["payment_amount"]) && $order["payment_amount"] == 0) {
|
|
|
// 初始化日志
|
|
|
$log = new PhpLog(self::ORDER_STATUS_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
$log->LogInfo('===[' . $orderCode . ']===');
|
|
|
|
|
|
// ERP提交订单状态
|
|
|
PayData::submitOrderStatus($orderCode, 0, '', '', 0, '', '', '');
|
|
|
$log->LogInfo('===开始调用ERP提交订单状态接口,接口方法为web.SpaceOrders.submitOrderStatus===');
|
|
|
$log->LogInfo('===请求参数为orderCode=' . $orderCode . '===');
|
|
|
$erpReturn = PayData::submitOrderStatus($orderCode, 0, '', '', 0, '', '', '');
|
|
|
$log->LogInfo('===结束调用ERP提交订单状态接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($erpReturn, true));
|
|
|
|
|
|
// 更新订单的状态
|
|
|
PayData::updateOrderStatus($order['order_id'], $uid, 0, 'Y', '');
|
|
|
$log->LogInfo('===开始调用更新订单状态接口,接口方法为web.SpaceOrders.updatePaymentStatus===');
|
|
|
$log->LogInfo('===请求参数为orderId=' . $order['order_id'] . 'uid=' . $uid . '===');
|
|
|
$updateOrderStatus = PayData::updateOrderStatus($order['order_id'], $uid, 0, 'Y', '');
|
|
|
$log->LogInfo('===结束调用更新订单状态接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($updateOrderStatus, true));
|
|
|
|
|
|
$result['notNeedPay'] = true;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
// 记录支付方式
|
|
|
// 初始化日志
|
|
|
$log = new PhpLog(self::ORDER_BANK_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
$log->LogInfo('===开始调用记录支付方式接口,接口方法为web.SpaceOrders.getOrderPayBank===');
|
|
|
$log->LogInfo('===请求参数为orderCode=' . $orderCode . '===');
|
|
|
$bankRecord = PayData::getBankByOrder($orderCode);
|
|
|
$log->LogInfo('===结束调用记录支付方式接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($bankRecord, true));
|
|
|
|
|
|
if (isset($bankRecord['data']['bankCode']) && !empty($bankRecord['data']['bankCode'])) {
|
|
|
$payRecord = $bankRecord['data']['bankCode'];
|
|
|
} else {
|
...
|
...
|
@@ -158,11 +202,17 @@ class PayModel |
|
|
|
|
|
// 是否是老用户(用于订单统计)
|
|
|
$orderCount = 0;
|
|
|
// 初始化日志
|
|
|
$log = new PhpLog(self::ORDER_COUNT_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
$log->LogInfo('===开始调用查询用户订单数接口,接口方法为web.SpaceOrders.getOrderCountByUid===');
|
|
|
$orders = PayData::getOrderCountByUid($uid);
|
|
|
$log->LogInfo('===结束调用查询用户订单数接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($orders, true));
|
|
|
|
|
|
if (isset($orders['data']) && !empty($orders['data'])) {
|
|
|
$orderCount = $orders['data']['total'];
|
|
|
}
|
|
|
$result['isOldUser'] = (intval($orderCount) > 1) ? true : false;
|
|
|
$result['isOldUser'] = (intval($orderCount) > self::OLD_USER_LIMIT) ? true : false;
|
|
|
// 订单数(用于订单统计)
|
|
|
$result['orderCount'] = $orderCount;
|
|
|
$result['is_advance'] = $order['attribute'] == 5 ? 'Y' : 'N';
|
...
|
...
|
@@ -424,6 +474,11 @@ class PayModel |
|
|
break;
|
|
|
}
|
|
|
|
|
|
// 初始化日志
|
|
|
$log = new PhpLog(self::ORDER_STATUS_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
$log->LogInfo('========[' . $orderCode . ']========');
|
|
|
$log->LogInfo('========开始查询微信扫码支付状态========');
|
|
|
|
|
|
// 组装微信支付的订单号
|
|
|
$tradeNo = 'YOHOBuy_' . $orderCode;
|
|
|
$input = new WxPayOrderQuery();
|
...
|
...
|
@@ -431,6 +486,7 @@ class PayModel |
|
|
$payResult = WxPayApi::orderQuery($input);
|
|
|
|
|
|
if (isset($payResult['trade_state']) && $payResult['trade_state'] === 'SUCCESS') {
|
|
|
$log->LogInfo('========微信扫码支付成功========');
|
|
|
$result = array(
|
|
|
'code' => '200',
|
|
|
'message' => 'success'
|
...
|
...
|
@@ -457,8 +513,18 @@ class PayModel |
|
|
);
|
|
|
|
|
|
do {
|
|
|
// 初始化日志
|
|
|
$log = new PhpLog(self::ORDER_STATUS_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
$log->LogInfo('========[' . $payResult->orderCode . ']========');
|
|
|
$log->LogInfo(var_export($payResult, true));
|
|
|
|
|
|
$log->LogInfo('===开始调用获取订单详情方式接口,接口方法为app.SpaceOrders.detail===');
|
|
|
$orderInfo = OrderData::getOrderDetail($uid, $payResult->orderCode);
|
|
|
$log->LogInfo('===结束调用获取订单详情方式接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($orderInfo, true));
|
|
|
|
|
|
if (!isset($orderInfo['data']) || empty($orderInfo['data'])) {
|
|
|
$log->LogInfo('===订单支付失败,未获取到订单详情信息===');
|
|
|
break;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -470,7 +536,14 @@ class PayModel |
|
|
// 订单已取消
|
|
|
if ($orderData['is_cancel'] === 'Y' && $paymentStatus === 'N') {
|
|
|
// 给用户发送短信
|
|
|
PayData::sendMessage($orderData['mobile'], 'error_sms', '支付成功,但订单已取消,订单号为' . $orderCode);
|
|
|
// 初始化日志
|
|
|
$log = new PhpLog(self::SEND_MESSAGE_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
$log->LogInfo('===[' . $orderCode . ']===');
|
|
|
$log->LogInfo('===开始调用订单取消时给用户发短信接口,接口方法为app.message.sendMsg===');
|
|
|
$messageReturn = PayData::sendMessage($orderData['mobile'], 'error_sms', '支付成功,但订单已取消,订单号为' . $orderCode);
|
|
|
$log->LogInfo('===结束调用给用户发短信接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($messageReturn, true));
|
|
|
|
|
|
$result['code'] = 417;
|
|
|
$result['message'] = '支付成功,但订单已取消,需联系客服';
|
|
|
break;
|
...
|
...
|
@@ -478,6 +551,8 @@ class PayModel |
|
|
|
|
|
// 支付金额与订单金额不一致
|
|
|
if (round($amount, 2) != round($payResult->totalFee, 2)) {
|
|
|
$log = new PhpLog(self::ORDER_STATUS_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
$log->LogInfo('===订单支付失败,支付金额与订单金额不一致===');
|
|
|
$result['code'] = 415;
|
|
|
$result['message'] = '支付金额与订单金额不一致';
|
|
|
break;
|
...
|
...
|
@@ -489,10 +564,25 @@ class PayModel |
|
|
$bankBillNo = $payResult->bankBillNo ? $payResult->bankBillNo : "";
|
|
|
$bankName = $payResult->bankName;
|
|
|
$bankCode = $payResult->bankCode;
|
|
|
|
|
|
// 初始化日志
|
|
|
$log = new PhpLog(self::ORDER_STATUS_LOG, 'PRC', self::LOG_LEVEL);
|
|
|
$log->LogInfo('===[' . $orderCode . ']===');
|
|
|
|
|
|
$log->LogInfo('===开始调用ERP提交订单状态接口,接口方法为web.SpaceOrders.submitOrderStatus===');
|
|
|
$log->LogInfo('===请求参数为orderCode=' . $orderCode . '===');
|
|
|
// ERP提交订单状态
|
|
|
PayData::submitOrderStatus($orderCode, $payment, $bankName, $bankCode, $amount, $payOrderCode, $tradeNo, $bankBillNo);
|
|
|
$erpReturn = PayData::submitOrderStatus($orderCode, $payment, $bankName, $bankCode, $amount, $payOrderCode, $tradeNo, $bankBillNo);
|
|
|
$log->LogInfo('===结束调用ERP提交订单状态接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($erpReturn, true));
|
|
|
|
|
|
$log->LogInfo('===开始调用更新订单状态接口,接口方法为web.SpaceOrders.updatePaymentStatus===');
|
|
|
$log->LogInfo('===请求参数为orderId=' . $orderData['order_id'] . 'uid=' . $uid . '===');
|
|
|
// 更新订单的状态
|
|
|
PayData::updateOrderStatus($orderData['order_id'], $uid, $payment, 'Y', $bankCode);
|
|
|
$updateOrderStatus = PayData::updateOrderStatus($orderData['order_id'], $uid, $payment, 'Y', $bankCode);
|
|
|
$log->LogInfo('===结束调用更新订单状态接口,返回结果为===');
|
|
|
$log->LogInfo(var_export($updateOrderStatus, true));
|
|
|
$log->LogInfo('===订单支付成功,请等待发货===');
|
|
|
|
|
|
$result['code'] = 200;
|
|
|
$result['message'] = '支付成功,请等待发货';
|
...
|
...
|
|