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"; //页面跳转
                    }
                }
            });
        }
    }
  • 相关阅读:
    「翻译」Unity中的AssetBundle详解(二)
    「翻译」Unity中的AssetBundle详解(一)
    [翻译]理解Unity的自动内存管理
    Unity3D集成腾讯语音GVoice SDK
    Unity插件之Unity调用C#编译的DLL
    最好用的Unity版本控制工具
    常见算法 php实现
    inotify+rsync实现文件双向实时同步
    30道Redis面试题
    mysql规范
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522589.html
Copyright © 2011-2022 走看看