微信支付回调

浏览:1608 发布日期:2019/05/05 分类:ThinkPHP5专区
微信扫码支付成功之后想要页面跳转到支付成功或者支付失败这些页面,微信的demo中没有这个回调的代码,我下面写的不会回调代码,报的大概是token未找到错误,望各位大神指点一下。下面贴出所有代码。
前端支付之后出错代码
VM9571:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at object.success (index:45)
at u (jquery-3.3.1.min.js:2)
at object.fireWith [as resolveWith] (jquery-3.3.1.min.js:2)
at k (jquery-3.3.1.min.js:2)
at xmlHttpRequest.<anonymous> (jquery-3.3.1.min.js:2)


本人的控制器中的代码public function index(){
        if (!User::isLogin()) {
            return redirect('index\user\login');
        }
        $product_id = (time()+1).createStr(22);
        $notify = new NativePay();
        $input = new WxPayUnifiedOrder();
        $input->setBody("微信支付的东西");
        $input->setAttach("xxx");
        //$input->setOutTradeNo(WxPayConfig::MCHID.date("YmdHis"));
        $input->setOutTradeNo($product_id);
        $input->setTotalFee("1");//以分为单位,一般是要乘100的。
        $input->setTimeStart(date("YmdHis"));
        $input->setTimeExpire(date("YmdHis", time() + 600));
        $input->setGoodsTag("test");
        $input->setNotifyUrl(wxPayConfig::NOTIFY_URL);
        $input->setTradeType("NATIVE");
        //$product_id 为商品自定义id 可用作订单ID
        $input->setProductId($product_id);

        $data = [
            'order_id'  =>  $input->getOutTradeNo(),
            'uid'   =>  session('uid'),
            'amount'    =>  $input->getTotalFee(),
        ];
        $res = db('order')->insert($data);
        $result = $notify->getPayUrl($input);
        if (empty($result['code_url'])){
            $qrCode_url = '';
        }else{
            $qrCode_url = $result["code_url"];
        }
        return $this->fetch('',[
            'qrCode_url' => $qrCode_url,
            'product_id'    =>  $product_id,
        ]);
    }
public function orderstate(){
        error_reporting(E_ERROR);
        ini_set('date.timezone','Asia/Shanghai');

        if(request()->param('transaction_id') != null && request()->param('transaction_id') != ""){
            $transaction_id = request()->param('transaction_id');
            $input = new WxPayOrderQuery();
            $input->setTransactionId($transaction_id);
            return json(WxPayApi::orderQuery($input));
        }

        if(request()->param('out_trade_no') != null && request()->param('out_trade_no') != ""){
            $out_trade_no = request()->param('out_trade_no');
            $input = new WxPayOrderQuery();
            $input->setOutTradeNo($out_trade_no);
            return json(WxPayApi::orderQuery($input));
        }
    }
前台显示付款码页面的ajax和显示二维码代码是这样写的<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Javascript 二维码生成库:QRCode</title>
    <script type="text/javascript" src="__STATIC__/js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="__STATIC__/js/qrcode.min.js"></script>
</head>
<body>
<div class="onqr">
    <input type="hidden" id="out_trade_no" value="{$product_id}" >
    <input id="text" type="hidden" value="{$qrCode_url}" style="width:80%" /><br />
    <div id="qrcode" style="width:100px; height:100px; margin-top:15px;"></div>
    {:token()}
</div>
<div class="liveqr">
    <img id="img" src="" />
</div>
<script type="text/javascript">
    var qrcode = new QRCode(document.getElementById("qrcode"), {
        width : 100,
        height : 100
    });

    function makeCode () {
        var elText = document.getElementById("text");
        if (!elText.value) {
            alert("Input a text");
            elText.focus();
            return;
        }
        qrcode.makeCode(elText.value);
    }
    makeCode();
    // 产看订单状态
    var time = setInterval("check()",3000);    //3秒查询一次是否支付成功
    function check() {
        var url = "{:url('/index/Wxpay/orderstate')}";
        var out_trade_no = $("#out_trade_no").val();
        var param = {'out_trade_no':out_trade_no};
        console.log(param);
        $.post(url,param,function(data){
            data = JSON.parse(data);
            if (data['trade_state'] == 'SUCCESS') {
                time = window.clearInterval(time);
                $('.onqr').hidden();
                // 支付成功把二维码替换成支付成功图标
                $("#img").attr('src','/public/wxpay/images/success.png');
                console.log(data);
                // window.location.href="{:url('/index/wxpay/notify')}";
            }else{
                console.log(data);
            }
        });
    }
</script>
</body>
</html>
最佳答案
评论( 相关
后面还有条评论,点击查看>>