|
@@ -318,10 +318,10 @@ class PaymentModel |
|
@@ -318,10 +318,10 @@ class PaymentModel |
318
|
$notify = new WxPayNativePay();
|
318
|
$notify = new WxPayNativePay();
|
319
|
$payResult = $notify->GetPayUrl($input);
|
319
|
$payResult = $notify->GetPayUrl($input);
|
320
|
|
320
|
|
321
|
-// if ($payResult['result_code'] === 'FAIL') {
|
|
|
322
|
-// self::$code['message'] = $payResult['err_code_des'];
|
|
|
323
|
-// break;
|
|
|
324
|
-// }
|
321
|
+ if ($payResult['result_code'] === 'FAIL') {
|
|
|
322
|
+ self::$code['message'] = $payResult['err_code_des'];
|
|
|
323
|
+ break;
|
|
|
324
|
+ }
|
325
|
|
325
|
|
326
|
$orderData = $orderDetail['data'];
|
326
|
$orderData = $orderDetail['data'];
|
327
|
$firstGoods = current($orderData['order_goods']);
|
327
|
$firstGoods = current($orderData['order_goods']);
|
|
@@ -425,7 +425,7 @@ class PaymentModel |
|
@@ -425,7 +425,7 @@ class PaymentModel |
425
|
$orderCode = $payResult->orderCode;
|
425
|
$orderCode = $payResult->orderCode;
|
426
|
//如果uid,为空,则从缓存中取uid,但还是不排除uid为空的情况下。
|
426
|
//如果uid,为空,则从缓存中取uid,但还是不排除uid为空的情况下。
|
427
|
$uid = empty($uid) ? self::getUid($orderCode) : $uid;
|
427
|
$uid = empty($uid) ? self::getUid($orderCode) : $uid;
|
428
|
- $confirm = OrderData::payConfirm($orderCode, $paymentId, $uid);
|
428
|
+ $confirm = PayData::payConfirm($orderCode, $paymentId, $uid);
|
429
|
|
429
|
|
430
|
// UdpLog::info(
|
430
|
// UdpLog::info(
|
431
|
// "【支付成功-发送确认接口】,function:payConfirm,orderCode:{$orderCode},支付方式ID:{$paymentId},接口返回",
|
431
|
// "【支付成功-发送确认接口】,function:payConfirm,orderCode:{$orderCode},支付方式ID:{$paymentId},接口返回",
|
|
@@ -433,4 +433,116 @@ class PaymentModel |
|
@@ -433,4 +433,116 @@ class PaymentModel |
433
|
// );
|
433
|
// );
|
434
|
return $confirm;
|
434
|
return $confirm;
|
435
|
}
|
435
|
}
|
|
|
436
|
+
|
|
|
437
|
+ /**
|
|
|
438
|
+ * 获取支付有关信息
|
|
|
439
|
+ *
|
|
|
440
|
+ * @param int $uid 用户ID
|
|
|
441
|
+ * @param string $orderCode 订单号
|
|
|
442
|
+ * @param string $paymentType 支付方式
|
|
|
443
|
+ * @param string $userName 用户名
|
|
|
444
|
+ * @param string $alipayToken 支付宝用户token
|
|
|
445
|
+ * @return array
|
|
|
446
|
+ */
|
|
|
447
|
+ public static function getPayData($uid, $orderCode, $paymentType, $userName, $alipayToken)
|
|
|
448
|
+ {
|
|
|
449
|
+ $result = array();
|
|
|
450
|
+
|
|
|
451
|
+ do {
|
|
|
452
|
+ /* 判断是否有订单号参数 */
|
|
|
453
|
+ if (empty($orderCode)) {
|
|
|
454
|
+ $result['error'] = true;
|
|
|
455
|
+ $result['message'] = '订单号不能为空';
|
|
|
456
|
+ break;
|
|
|
457
|
+ }
|
|
|
458
|
+
|
|
|
459
|
+ /* 判断支付方式是否选择 */
|
|
|
460
|
+ $paymentPars = explode('_', $paymentType);
|
|
|
461
|
+ if (count($paymentPars) != 2) {
|
|
|
462
|
+ $result['error'] = true;
|
|
|
463
|
+ $result['message'] = '请选择一个支付方式';
|
|
|
464
|
+ break;
|
|
|
465
|
+ }
|
|
|
466
|
+
|
|
|
467
|
+ /* 判断订单信息是否存在 */
|
|
|
468
|
+ $orderDetail = OrderData::getOrderDetail($uid, $orderCode);
|
|
|
469
|
+ if (empty($orderDetail['data'])) {
|
|
|
470
|
+ $result['error'] = true;
|
|
|
471
|
+ $result['message'] = '没有找到该订单';
|
|
|
472
|
+ break;
|
|
|
473
|
+ }
|
|
|
474
|
+
|
|
|
475
|
+ /* 判断订单是否已取消 */
|
|
|
476
|
+ if (isset($orderDetail['data']['is_cancel']) && $orderDetail['data']['is_cancel'] === 'Y') {
|
|
|
477
|
+ $result['error'] = true;
|
|
|
478
|
+ $result['message'] = '订单已经取消';
|
|
|
479
|
+ $result['location'] = 'window.location="' . Helpers::url('/home/orders/detail', array('order_code' => $orderCode)) . '";';
|
|
|
480
|
+ break;
|
|
|
481
|
+ }
|
|
|
482
|
+
|
|
|
483
|
+ // 获取支付有关参数
|
|
|
484
|
+ $payId = $paymentPars[0];
|
|
|
485
|
+ $paymentParams = self::getPaymentById($payId);
|
|
|
486
|
+ if (empty($paymentParams)) {
|
|
|
487
|
+ $result['error'] = true;
|
|
|
488
|
+ $result['message'] = '支付系统繁忙,请稍后再试';
|
|
|
489
|
+ break;
|
|
|
490
|
+ }
|
|
|
491
|
+
|
|
|
492
|
+ $payService = PayFactory::factory($paymentParams);
|
|
|
493
|
+ if ($payService == false) { // 没找到支付方式时
|
|
|
494
|
+ $result['error'] = true;
|
|
|
495
|
+ $result['message'] = '请选择一个支付方式';
|
|
|
496
|
+ break;
|
|
|
497
|
+ }
|
|
|
498
|
+
|
|
|
499
|
+ $totalFee = $orderDetail['data']['payment_amount'] * 100;
|
|
|
500
|
+ $isTest = (APPLICATION_ENV === 'developer' || APPLICATION_ENV === 'testing');
|
|
|
501
|
+ $paymentParameter = $paymentPars[1];
|
|
|
502
|
+ // 判断是否传入支付宝token
|
|
|
503
|
+ if ($paymentType == 2 && !empty($alipayToken)) {
|
|
|
504
|
+
|
|
|
505
|
+ $paymentParameter = $alipayToken;
|
|
|
506
|
+ }
|
|
|
507
|
+
|
|
|
508
|
+ $reqParams = new Reqparams($orderCode, $totalFee, '有货订单号:' . $orderCode, '', $orderDetail['data']['create_time'], $paymentParameter, $isTest, $uid, $userName);
|
|
|
509
|
+ $reqPars = $payService->getPayRequestPars($reqParams);
|
|
|
510
|
+ if (empty($reqPars)) {
|
|
|
511
|
+ $result['error'] = true;
|
|
|
512
|
+ $result['message'] = '支付系统繁忙,请稍后再试';
|
|
|
513
|
+ break;
|
|
|
514
|
+ }
|
|
|
515
|
+
|
|
|
516
|
+ // 记录并更新订单支付方式
|
|
|
517
|
+ $paymentRecod = OrderData::updateOrderPayment($orderCode, $payId, $uid);
|
|
|
518
|
+ if (empty($paymentRecod) || $paymentRecod['code'] != 200) {
|
|
|
519
|
+ $result['error'] = true;
|
|
|
520
|
+ $result['message'] = isset($paymentRecod['message']) ? $paymentRecod['message'] : '系统繁忙,请稍后再试';
|
|
|
521
|
+ break;
|
|
|
522
|
+ }
|
|
|
523
|
+ $bankRecord = PayData::getBankByOrder($orderCode);
|
|
|
524
|
+ $bankCode = ($paymentParameter != 'platform' ? $paymentParameter : '');
|
|
|
525
|
+ if (isset($bankRecord['data']['bankCode']) && !empty($bankRecord['data']['bankCode'])) {
|
|
|
526
|
+ $bankPayRecord = PayData::updateOrderPayBank($orderCode, $payId, $bankCode);
|
|
|
527
|
+ } else {
|
|
|
528
|
+ $bankPayRecord = PayData::setOrderPayBank($orderCode, $payId, $bankCode);
|
|
|
529
|
+ }
|
|
|
530
|
+ if (!isset($bankPayRecord['code']) || $bankPayRecord['code'] != 200) {
|
|
|
531
|
+ $result['error'] = true;
|
|
|
532
|
+ $result['message'] = '支付方式记录失败';
|
|
|
533
|
+ break;
|
|
|
534
|
+ }
|
|
|
535
|
+
|
|
|
536
|
+ if ($reqPars['reqType'] == 'get') {
|
|
|
537
|
+ //直接跳转到支付界面
|
|
|
538
|
+ $result['go'] = true;
|
|
|
539
|
+ $result['payUrl'] = $reqPars['pay_url'] . '?' . $reqPars['pars'];
|
|
|
540
|
+ } else {
|
|
|
541
|
+ //如果是post,去form提交
|
|
|
542
|
+ $result = array('reqPars' => $reqPars);
|
|
|
543
|
+ }
|
|
|
544
|
+ } while (false);
|
|
|
545
|
+
|
|
|
546
|
+ return $result;
|
|
|
547
|
+ }
|
436
|
} |
548
|
} |