TestController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace mall\controllers;
  3. use bizMall\shop\classes\ShopClass;
  4. use common\components\dict;
  5. use common\components\noticeUtil;
  6. use common\components\payUtil;
  7. use common\components\util;
  8. use Yii;
  9. use common\components\lakala\Lakala;
  10. use bizHd\order\classes\OrderClass;
  11. use biz\shop\classes\ShopExtClass;
  12. use biz\wx\classes\WxMessageClass;
  13. class TestController extends BaseController
  14. {
  15. public $guestAccess = ['trade-query'];
  16. //收银台订单查询 ssh 20231026
  17. public function actionTradeQuery()
  18. {
  19. $shopId = 36524;
  20. //$shopId = 1;
  21. $shop = ShopClass::getById($shopId, true);
  22. if (empty($shop)) {
  23. util::fail('没有找到门店');
  24. }
  25. $merchantPrivateKeyPath = Yii::getAlias("@vendor/lakala") . '/production/api_private_key.pem';
  26. $lklCertificatePath = Yii::getAlias("@vendor/lakala") . '/production/lkl-apigw-v1.cer';
  27. $params = [
  28. 'appid' => 'OP00002119',
  29. 'serial_no' => '018b08cfddbd',
  30. 'merchant_no' => $shop->lklSjNo,
  31. 'term_no' => $shop->lklScanTermNo,
  32. 'merchantPrivateKeyPath' => $merchantPrivateKeyPath,
  33. 'lklCertificatePath' => $lklCertificatePath,
  34. ];
  35. $laResource = new Lakala($params);
  36. $orderSn = 'KD_CS61235138';
  37. //$orderSn = 'KD26449727';
  38. $cashParams = [
  39. 'out_order_no' => $orderSn,
  40. ];
  41. $response = $laResource->cashierQuery($cashParams);
  42. if (isset($response['code']) == false || $response['code'] != '000000') {
  43. util::fail('支付失败了');
  44. }
  45. $postData = $response['resp_data'] ?? [];
  46. $orderTradeInfoList = $postData['order_trade_info_list'] ?? [];
  47. if (empty($orderTradeInfoList)) {
  48. util::fail('数据错误');
  49. }
  50. $orderTradeInfo = current($orderTradeInfoList);
  51. $payMode = $orderTradeInfo['pay_mode'] ?? null;
  52. if (empty($payMode)) {
  53. noticeUtil::push('收银台支付回调失败了,没有找到钱包类型,请注意,orderSn:' . $orderSn, '15280215347');
  54. util::end();
  55. }
  56. $trade_amount = $orderTradeInfo['trade_amount'] ?? 0;
  57. $totalFee = $trade_amount / 100;
  58. $orderStatus = $postData['order_status'];
  59. $transactionId = $postData['pay_order_no'] ?? 0;
  60. $tradeType = $orderTradeInfo['trade_type'] ?? '';
  61. if ($tradeType != 'PAY') {
  62. noticeUtil::push('收银台支付回调验证失败了,不是消费的回调,orderSn:' . $orderSn, '15280215347');
  63. util::end();
  64. }
  65. $capitalType = dict::getDict('capitalType', 'xhOrder', 'id');
  66. $connection = Yii::$app->db;
  67. $transaction = $connection->beginTransaction();
  68. try {
  69. if ($orderStatus == 2) {
  70. $payWayType = null;
  71. if ($payMode == 'ALIPAY') {
  72. $payWayType = dict::getDict('payWay', 'alipay');
  73. }
  74. if ($payMode == 'WECHAT') {
  75. $payWayType = dict::getDict('wxPay', 'alipay');
  76. }
  77. if (isset($payWayType) == false) {
  78. noticeUtil::push('收银台支付回调验证失败了,没有找到支付方式,orderSn:' . $orderSn, '15280215347');
  79. util::end();
  80. }
  81. $attach = '';
  82. payUtil::thirdPay($payWayType, $capitalType, $orderSn, $totalFee, $attach, $transactionId);
  83. $transaction->commit();
  84. //打印小票和语音播报
  85. $order = OrderClass::getByCondition(['orderSn' => $orderSn], true);
  86. ShopExtClass::hdGatheringReport($order);
  87. OrderClass::onlinePrint($order);
  88. $shopId = $order->shopId ?? 0;
  89. $shop = ShopClass::getById($shopId, true);
  90. if (in_array($order->fromType, [dict::getDict("fromType", "shop"), dict::getDict("fromType", "friend")])) {
  91. //您有新的收入提醒
  92. WxMessageClass::gatheringIncomeInform($shop, $order);
  93. }
  94. if ($order->fromType == dict::getDict("fromType", "mall")) {
  95. //来自商城的新订单微信通知
  96. WxMessageClass::hdNewOrderInform($shop, $order);
  97. }
  98. }
  99. //请不要修改
  100. echo "SUCCESS";
  101. } catch (\Exception $e) {
  102. $transaction->rollBack();
  103. Yii::error("失败原因:" . $e->getMessage());
  104. }
  105. }
  106. }