|
|
@@ -9,6 +9,7 @@ use bizHd\custom\classes\CustomClass;
|
|
|
use bizHd\goods\classes\GoodsClass;
|
|
|
use bizHd\merchant\services\ShopService;
|
|
|
use bizHd\order\classes\OrderClass;
|
|
|
+use bizHd\order\classes\OrderItemClass;
|
|
|
use bizHd\order\classes\OrderSendClass;
|
|
|
use bizHd\order\services\OrderService;
|
|
|
use bizHd\product\classes\ProductClass;
|
|
|
@@ -20,6 +21,8 @@ use bizHd\work\classes\WorkClass;
|
|
|
use bizHd\wx\classes\WxOpenClass;
|
|
|
use common\components\dict;
|
|
|
use common\components\dateUtil;
|
|
|
+use common\components\noticeUtil;
|
|
|
+use common\components\orderSn;
|
|
|
use common\components\payUtil;
|
|
|
use common\services\xhPayToolService;
|
|
|
use Yii;
|
|
|
@@ -267,15 +270,53 @@ class OrderController extends BaseController
|
|
|
header("Content-type: text/html; charset=utf-8");
|
|
|
$get = Yii::$app->request->get();
|
|
|
$id = isset($get['id']) ? $get['id'] : 0;
|
|
|
+ $version = $get['version'] ?? 0;
|
|
|
$order = OrderClass::getById($id, true);
|
|
|
OrderClass::valid($order, $this->mainId);
|
|
|
+
|
|
|
+ $shop = $this->shop;
|
|
|
+ $sj = $shop->merchantName;
|
|
|
+ $shopName = $shop->shopName;
|
|
|
+ $name = $shopName == '首店' ? $sj : $sj . '-' . $shopName;
|
|
|
+
|
|
|
$authCode = (string)$get['authCode'] ?? '';
|
|
|
- if (empty($authCode)) {
|
|
|
- util::fail('没有获取到支付码');
|
|
|
- }
|
|
|
+ if ($version > 0) {
|
|
|
+ if (empty($authCode)) {
|
|
|
+ $msg = '没有扫到付款码';
|
|
|
+ $remind = $msg . "(零售端付款码:{$authCode})" . '(' . $name . ')';
|
|
|
+ noticeUtil::push($remind . ' 编号005', '15280215347');
|
|
|
+ util::success(['returnStatus' => 'FAILURE'], $msg);
|
|
|
+ }
|
|
|
+ //微信文档说明 https://pay.weixin.qq.com/doc/v2/merchant/4011936234
|
|
|
+ $wxPattern = '/^(10|11|12|13|14|15)\d{16}$/';
|
|
|
+ //支付宝文档说明 https://opendocs.alipay.com/open/194/106039/
|
|
|
+ $aliPattern = '/^(25|26|27|28|29|30)\d{14,22}$/';
|
|
|
+ if (!preg_match($wxPattern, $authCode) && !preg_match($aliPattern, $authCode)) {
|
|
|
+ $msg = '付款码有问题';
|
|
|
+ $remind = $msg . "(零售端付款码:{$authCode})" . '(' . $name . ')';
|
|
|
+ noticeUtil::push($remind . ' 编号009', '15280215347');
|
|
|
+ util::success(['returnStatus' => 'FAILURE'], $msg);
|
|
|
+ }
|
|
|
|
|
|
+ } else {
|
|
|
+ if (empty($authCode)) {
|
|
|
+ util::fail('没有获取到支付码');
|
|
|
+ }
|
|
|
+ }
|
|
|
$orderSn = $order->orderSn ?? '';
|
|
|
- $subject = '购买花材';
|
|
|
+
|
|
|
+ $lsCodePayErrorKey = 'ls_code_pay_error_' . $id;
|
|
|
+ $hasFailPay = Yii::$app->redis->executeCommand('GET', [$lsCodePayErrorKey]);
|
|
|
+ //前面有付失败过,要重新生成单号
|
|
|
+ if (!empty($hasFailPay)) {
|
|
|
+ $oldOrderSn = $order->orderSn;
|
|
|
+ $orderSn = orderSn::getOrderSn();
|
|
|
+ $order->orderSn = $orderSn;
|
|
|
+ $order->save();
|
|
|
+ OrderItemClass::updateByCondition(['orderSn' => $oldOrderSn], ['orderSn' => $orderSn]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $subject = '购买花材 ' . $orderSn;
|
|
|
$totalFee = $order->mainPay ?? 0;
|
|
|
$capitalType = dict::getDict('capitalType', 'xhOrder', 'id');
|
|
|
|
|
|
@@ -283,7 +324,6 @@ class OrderController extends BaseController
|
|
|
$transaction = $connection->beginTransaction();
|
|
|
try {
|
|
|
|
|
|
- $shop = $this->shop;
|
|
|
$merchantPrivateKeyPath = Yii::getAlias("@vendor/lakala") . '/production/api_private_key.pem';
|
|
|
$lklCertificatePath = Yii::getAlias("@vendor/lakala") . '/production/lkl-apigw-v1.cer';
|
|
|
$params = [
|
|
|
@@ -341,8 +381,14 @@ class OrderController extends BaseController
|
|
|
|
|
|
util::success(['returnStatus' => 'SUCCESS']);
|
|
|
} else {
|
|
|
+ //标记有没付成功的次数,原因有可能是余额不足等
|
|
|
+ Yii::$app->redis->executeCommand('SETEX', [$lsCodePayErrorKey, 1200, 'hasFail']);
|
|
|
+
|
|
|
$msg = $response['msg'] ?? '';
|
|
|
- util::success(['returnStatus' => 'FAILURE'], $msg);
|
|
|
+ $retCode = $response['code'] ?? '';
|
|
|
+ $fullMsg = $msg . "(零售端付款码:{$authCode})" . '(' . $name . ')';
|
|
|
+ noticeUtil::push($fullMsg . ' ' . $retCode . ' 编号008', '15280215347');
|
|
|
+ util::success(['returnStatus' => 'FAILURE', 'returnCode' => $retCode], $msg);
|
|
|
}
|
|
|
|
|
|
} catch (\Exception $e) {
|