| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- <?php
- /**
- * Created by PhpStorm.
- * Name: 芸众商城系统
- * Author: 广州市芸众信息科技有限公司
- * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
- * Date: 2022/2/17
- * Time: 17:24
- */
- namespace app\payment\controllers;
- use app\common\helpers\Url;
- use app\common\models\PayOrder;
- use app\common\models\PayType;
- use app\payment\PaymentController;
- use Yunshop\LaKaLaPay\services\LaKaLaPay;
- class LakalaController extends PaymentController
- {
- const LAKALA_WECHAT = 83;
- const LAKALA_ALIPAY = 84;
- // 支付宝同步回调
- public function redirectUrlAlipay()
- {
- $this->redirectOrder(self::LAKALA_ALIPAY);
- }
- // 微信同步回调
- public function redirectUrlWecaht()
- {
- $this->redirectOrder(self::LAKALA_WECHAT);
- }
- public function notifyUrlAlipay()
- {
- return $this->processOrder(self::LAKALA_WECHAT);
- }
- public function notifyUrlWechat()
- {
- return $this->processOrder(self::LAKALA_WECHAT);
- }
- /**
- * 支付回调参数
- *
- * @param $order_no
- * @param $parameter
- * @return array
- */
- public function setData($order_no, $trade_no, $total_fee, $pay_type_id, $pay_type)
- {
- return [
- 'total_fee' => $total_fee,
- 'out_trade_no' => $order_no,
- 'trade_no' => $trade_no,
- 'unit' => 'fen',
- 'pay_type' => $pay_type,
- 'pay_type_id' => $pay_type_id,
- ];
- }
- protected function processOrder($type)
- {
- $request = request()->all();
- $payOrder = PayOrder::where('out_order_no', $request['partner_order_id'])->first();
- if (!$payOrder) {
- \Log::debug(self::class. '--: 未找到支付订单');
- return false;
- }
- \YunShop::app()->uniacid = $payOrder->uniacid;
- \Setting::$uniqueAccountId = $payOrder->uniacid;
- $lakala = new LaKaLaPay;
- $sign = $lakala->generateSign($request['time'], $request['nonce_str']);
- if ($sign != $request['sign']) {
- \Log::debug(self::class. '订单校验失败, 非法订单');
- return false;
- }
- $currentPayType = $this->currentPayType($type);
- $data = $this->setData($request['partner_order_id'], $request['channel_order_id'], $request['real_fee'], $currentPayType['id'], $currentPayType['name']);
- $this->payResutl($data);
- \Log::debug(self::class . '订单支付成功--订单号: ' . $request['order_no']);
- echo 'success';
- }
- private function redirectOrder($type)
- {
- $request = request()->all();
- $order_info = unserialize($request['afford']);
- \YunShop::app()->uniacid = $order_info['i'];
- $currentPayType = $this->currentPayType($type);
- $payOrder = PayOrder::getPayOrderInfo($order_info['order_no'])->first();
- if ($payOrder && $payOrder->status == 1) {
- $data = $this->setData($order_info['order_no'], $request['trade_no'], ($request['rmb_fee'] * 100), $currentPayType['id'], $currentPayType['name']);
- $this->payResutl($data);
- \Log::debug(self::class . '订单支付成功--订单号: ' . $order_info['order_no']);
- redirect(Url::absoluteApp('member/payYes', ['i' => $order_info['i']]))->send();
- }
- if ($payOrder && $payOrder->status == 2) {
- redirect(Url::absoluteApp('member/payYes', ['i' => $order_info['i']]))->send();
- }
- if (!$payOrder) {
- redirect(Url::absoluteApp('member/payErr', ['i' => $order_info['i']]))->send();
- }
- }
- public function currentPayType($payId)
- {
- return PayType::find($payId);
- }
- }
|