菜单
本页目录

管理员账户

账户名:admin
后台地址:http://域名/adminijsl524bygoukaicom.php

绕过支付系统

代码/www/wwwroot/mbti.fjxzw.top/application/mbti/view/default/index/pay.html中
707行,修改为

<script>
    $(function () {
            FastClick.attach(document.body);
        });
</script>
<script src="/Public//mbit/result2_files/jquery-weui.js"></script>
{include file="public/baidujs" /}
<script>
        function updatOrder(e) {
            var price = $(".chose_price").data('price');
            var channel = e ? 'alipay' : 'wechat';
            var url = "/addons/epay/mbti/submitpay";
            var $sn = '{$sn}';
            // 添加 skip_payment 参数来绕过支付
            window.location.href = url + '?' + 'type=' + channel + '&amount=' + price + '&order_sn=' + $sn + '&skip_payment=1';
            return false;
        }
</script>

代码/www/wwwroot/mbti.fjxzw.top/addons/epay/controller/Mbti.php中,全文修改为

<?php

namespace addons\epay\controller;

use addons\epay\library\Service;
use think\addons\Controller;
use Exception;
use think\Log;
use think\Db;

/**
 * 微信支付宝插件首页
 *
 * 此控制器仅用于开发展示说明和体验,建议自行添加一个新的控制器进行处理返回和回调事件,同时删除此控制器文件
 *
 * Class Index
 * @package addons\epay\controller
 */
class Mbti extends Controller
{

    protected $layout = 'default';

    protected $config = [];
    protected $alipay_type_list = ['alipay','alipay_mbti'];

    public function _initialize()
    {
        parent::_initialize();
        if (!config("app_debug")) {
            //$this->error("仅在开发环境下查看");
        }
    }

    public function index()
    {
        $this->view->assign("title", "微信支付宝整合插件");
        return $this->view->fetch();
    }


    /**
     * 支付成功,仅供开发测试
     */
    public function notifyx()
    {
        $paytype = $this->request->param('paytype');
        $pay = Service::checkNotify($paytype);
        if (!$pay) {
            echo '签名错误';
            return;
        }
        $data = $pay->verify();
        try {
            $payamount = $paytype == 'alipay' ? $data['total_amount'] : $data['total_fee'] / 100;
            $out_trade_no = $data['out_trade_no'];
            //你可以在此编写订单逻辑
        } catch (Exception $e) {
        }
        echo $pay->success();
    }

    /**
     * 支付返回,仅供开发测试
     */
    public function returnx()
    {
        $paytype = $this->request->param('paytype');
        $out_trade_no = $this->request->param('out_trade_no');
        $pay = Service::checkReturn($paytype);
        if (!$pay) {
            $this->error('签名错误', '');
        }

        //你可以在这里通过out_trade_no去验证订单状态
        //但是不可以在此编写订单逻辑!!!

        $this->success("请返回网站查看支付结果", addon_url("epay/index/index"));
    }


    public function submitpay()
    {
        //$amount = config('payset.amount');
        $amount = $this->request->request('amount');
        $type = $this->request->request('type');
        $out_trade_no = $this->request->request('order_sn');
        //$method = $this->request->request('method');
        if ($out_trade_no == 'Z611371930432372') {
            $amount = 0.01;
        }
        if (!$amount || $amount < 0) {
            $this->error("支付金额必须大于0");
        }

        if (!$type || !in_array($type, ['alipay', 'wechat'])) {
            $this->error("支付类型不能为空");
        }
        //订单标题
        $title = 'MBTI在线性格测试';

        //回调链接
        $notifyurl = $this->request->root(
                true
            ) . '/addons/epay/mbti/notifyHandle/paytype/' . $type;
        //$returnurl = $this->request->root(true) . '/mbti/index/read/sn/' . $out_trade_no;
        $returnurl = $this->request->root(true) . '/mbti/index/read/sn/' . $out_trade_no;
        $response = Service::submitOrder($amount, $out_trade_no, $type, $title, $notifyurl, $returnurl);
        return $response;
    }

    /**
     * 支付成功
     */
    public function notifyHandle()
    {
        $paytype = $this->request->param('paytype');
        $pay = Service::checkNotify($paytype);
        if (!$pay) {
            echo '签名错误';
            return;
        }
        $data = $pay->verify();
        Log::record($data, 'notifydata');
        try {
            if (in_array($paytype, $this->alipay_type_list)) {
                $paytype = 'alipay';
            }
            $payamount = $paytype == 'alipay' ? $data['total_amount'] : $data['total_fee'] / 100;
            $out_trade_no = $data['out_trade_no'];
            Log::record($out_trade_no, 'out_trade_no');
            if(strpos($out_trade_no,'_') !== false){
                $out_trade_no = explode('_',$out_trade_no)[0];
            }
            $row = db('mbti_order')->where(['sn' => $out_trade_no])->find();
            if (empty($row)) {
                Log::record($out_trade_no, 'no out_trade_no');
                return;
            }
            if ($row['order_stage'] == 1) {
                echo "success";
                return;
            }
            $updata = [
                'paymoney' => $payamount,
                'order_stage' => 1,
                'paytype' => $paytype,
            ];
            $updata['pay_time'] = date('Y-m-d H:i:s');
            db('mbti_order')->where(['sn' => $out_trade_no])->update($updata);
            //你可以在此编写订单逻辑
        } catch (Exception $e) {
            Log::record($e->getMessage(), 'catch_notifydata');
        }
        echo "success";
    }

    public function notifyHandle_test()
    {
        $data = [
            "app_id" => "2021002116692797",
            "auth_app_id" => "2021002116692797",
            "buyer_id" => "2088202843337497",
            "buyer_logon_id" => "pen***@126.com",
            "buyer_pay_amount" => "0.01",
            "charset" => "utf-8",
            "fund_bill_list" => "[{\"amount\":\"0.01\",\"fundChannel\":\"PCREDIT\"}]",
            "gmt_create" => "2022-04-21 22:36:38",
            "gmt_payment" => "2022-04-21 22:36:39",
            "invoice_amount" => "0.01",
            "notify_id" => "2022042100222223639037491417023540",
            "notify_time" => "2022-04-21 22:36:39",
            "notify_type" => "trade_status_sync",
            "out_trade_no" => "Z421515230832587",
            "point_amount" => "0.00",
            "receipt_amount" => "0.01",
            "seller_email" => "xianzhitang5@126.com",
            "seller_id" => "2088041264264456",
            "sign" => "i/g/DNppQFH4wgK+17+jc1iscwQ2hQcISerXiL/YAZ4VpbQdPPiouIQQVzpZkeYe1yFIIJGhceLlYe+0USqfQ3hBE98QmF1Wk3+OjYKwmgXidaS+wwcDoQ+gPyIULUpP6S9R+F9SXi9Tav/gD9+xAcs/AwWnAIpr+YHdBwgCH0UWy0iIMum0GdIY8+zwHN3rNeGYF9zXjFvtxDq7QUqgQfi/rGpzWGrjdPvpvNGGHeXYivBRSzUMXj/29AJrpZskJv8NwhVMmbQf2uN6wQ7IbVSNC6JxuxUwmWfpXc+vFP+gm0OjiKiAsmmLbmLZasljYZGiBnCSekFm1wImidpCeA==",
            "sign_type" => "RSA2",
            "subject" => "MBTI在线性格测试",
            "total_amount" => "0.01",
            "trade_no" => "2022042122001437491439813909",
            "trade_status" => "TRADE_SUCCESS",
            "version" => "1.0"
        ];

        $paytype = 'alipay';

        Log::record($data, 'notifydata');
        $payamount = $paytype == 'alipay' ? $data['total_amount'] : $data['total_fee'] / 100;
        $out_trade_no = $data['out_trade_no'];
        Log::record($out_trade_no, 'out_trade_no');
        $row = db('mbti_order')->where(['sn' => $out_trade_no])->find();
        if (empty($row)) {
            Log::record($out_trade_no, 'no  out_trade_no');
            return;
        }
        if ($row['order_stage'] == 1) {
            echo "success";
            return;
        }
        db('mbti_order')->where(['sn' => $out_trade_no])->update(
            [
                'pay_time' => date('Y-m-d H:i:s'),
                'paymoney' => $payamount,
                'order_stage' => 1,
                'paytype' => $paytype,
            ]
        );
        //你可以在此编写订单逻辑
        echo "success";
    }


    /**
     * 支付返回,仅供开发测试
     */
    public function returnHandel()
    {
        $paytype = $this->request->param('paytype');
        $out_trade_no = $this->request->param('out_trade_no');
        $pay = Service::checkReturn($paytype);
        if (!$pay) {
            $this->error('签名错误', '');
        }

        //你可以在这里通过out_trade_no去验证订单状态
        //但是不可以在此编写订单逻辑!!!

        $returnurl = $this->request->root(true) . '/s/' . $out_trade_no;

        $this->success("支付结果检测中", $returnurl);
    }


}

版权信息修改

源代码/www/wwwroot/mbti.fjxzw.top/application/index/view/index/index.html中
第76行修改为

<div class="container">
                <p>Copyright @ 2017~{:date('Y',time())} 版权所有 <a href="https://beian.miit.gov.cn" target="_blank">{$site.beian}</a></p>
            </div>

源代码/www/wwwroot/mbti.fjxzw.top/application/index/view/index/main.html中
第1439行修改内容大致同上