zoukankan      html  css  js  c++  java
  • 微信扫码支付(模式二)

    微信扫码支付分为两种模式:

    模式一比较复杂,需要公众号配置回调地址。

    模式二比较简单,只需要在代码中配置回调地址就可以了。

    这里使用的是模式二

    微信扫码支付和公众号JSAPI支付前期准备工作一样,请参考:http://www.cnblogs.com/chenjiacheng/p/6522600.html

    ini_set('date.timezone','Asia/Shanghai');
    //error_reporting(E_ERROR);
    
    require_once "../lib/WxPay.Api.php";
    require_once "WxPay.NativePay.php";
    require_once 'log.php';
    
    $notify = new NativePay();
    
    //模式二
    /**
     * 流程:
     * 1、调用统一下单,取得code_url,生成二维码
     * 2、用户扫描二维码,进行支付
     * 3、支付完成之后,微信服务器会通知支付成功
     * 4、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php)
     */
    $input = new WxPayUnifiedOrder();
    $input->SetBody("test"); // 订单标题
    $input->SetAttach("test"); // 订单描述
    $input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis")); // 订单号
    $input->SetTotal_fee("1"); // 订单金额
    $input->SetTime_start(date("YmdHis"));
    $input->SetTime_expire(date("YmdHis", time() + 600));
    $input->SetGoods_tag("test");
    $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php"); // 异步通知地址
    $input->SetTrade_type("NATIVE");
    $input->SetProduct_id("123456789");
    $result = $notify->GetPayUrl($input);
    $url2 = $result["code_url"];

    生成二维码,这个页面需要自己去美化。

    <img alt="模式二扫码支付" src="http://paysdk.weixin.qq.com/example/qrcode.php?data=<?php echo urlencode($url2);?>" style="150px;height:150px;"/>

    查询是否已支付,支付完成的话,进行订单数据处理。

    这里的一切都是异步的,二维码页面啥都看不到。

    只能通过异步获取订单状态来判断是否操作成功。

    三秒执行一次,如果成功,进行跳转处理。

    // 检测是否支付成功
    $(document).ready(function () {
        setInterval("ajaxstatus()", 3000);
    });
    
    function ajaxstatus() {
        var orderno = $("#out_trade_no").val();
        if (orderno != 0) {
            $.ajax({
                url: "?m=home&c=order&a=ajax",
                type: "GET",
                dataType:"json",
                data: {
                    todo: 'ajaxCheckWxPay',
                    orderno: orderno,
                },
                success: function (json) {
                    if (json.status == 1) { //订单状态为1表示支付成功
                        layer.msg('支付成功',{icon:1,time: 2000},function(){
                            window.location.href = "?m=home&c=order&a=payDone&orderno="+json.info['orderno'];
                        });
                       // window.location.href = "wxScanSuccessUrl.action"; //页面跳转
                    }
                }
            });
        }
    }
  • 相关阅读:
    Ynoi2016 这是我自己的发明
    Luogu P5268 [SNOI2017]一个简单的询问
    Ynoi2017 由乃的玉米田
    BZOJ4320 [Shanghai2006]Homework
    JOISC2014C 歴史の研究
    莫队
    LOJ6119 「2017 山东二轮集训 Day7」国王
    Luogu P3295 [SCOI2016]萌萌哒
    10.1 进程间通信--消息队列
    9.2 网络协议理论
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522589.html
Copyright © 2011-2022 走看看