HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot//my.esfyn.top/Modules/Api/Http/Controllers/PayController.php
<?php

namespace Modules\Api\Http\Controllers;

use Expand\Pay\Pay;
use Illuminate\Http\JsonResponse;
use Modules\Api\Http\Requests\PaySubmitRequest;
use Modules\Order\Models\Order;

class PayController extends ApiController
{

    /**
     * 统一支付
     * @param $orderSn
     * @return JsonResponse
     */
    public function order($orderSn): JsonResponse
    {
        $uid = $this->getUserId();

        $order = Order::where('order_sn', $orderSn)
            ->where('order_status', 0)
            ->where('user_id', $uid)
            ->first();

        if ($order) {

            $result = [
                'order_sn' => $orderSn,
                'order_amount' => $order->order_amount,
                'pay_types' => [
                    'balance'
                ]
            ];

            return $this->success($result);
        }

        return $this->error(['msg' => '订单无法支付']);
    }

    /**
     * 支付提交
     * @param PaySubmitRequest $request
     * @return JsonResponse
     */
    public function submit(PaySubmitRequest $request): JsonResponse
    {
        $data = $request->validated();

        $uid = $this->getUserId();

        $order = Order::with(['user:id,openid'])
            ->where('order_sn', $data['order_sn'])
            ->where('order_status', 0)
            ->where('user_id', $uid)
            ->first();

        if ($order) {

            $pay = new Pay($data['pay_type']);

            $response = $pay->submit($order->toArray());

            $result = json_decode($response->getContent(), true);

            return $this->success($result);
        }

        return $this->error(['msg' => '该订单无需重复支付']);
    }


    /**
     * 订单回调
     * @param $type
     * @return void
     */
    public function notify($type)
    {
        $pay = new Pay($type);

        $pay->notify();
    }
}