zoukankan      html  css  js  c++  java
  • 关于微信扫码支付的流程

    前言:由于没有商户相关的id信息,只能测试这个扫码的功能,但是这个也是我们日常常用到的功能

    (一) 前期准备

      从微信官方网站下载最新的支付的接口

      1.首先在:https://pay.weixin.qq.com/wiki/doc/api/native_sl.php?chapter=11_1  平台下载第三方接口文件(我下载的是PHP)

      2.把项目放到入口文件中去查看效果(如下)

      3.点击扫码支付(注意路径问题)

    这是模式二无法显示图片,但是其实也是不影响我们项目的运行的

    (二) 集成到我的项目中去

      1.运行会报两个错误

        WxPay.NativePay.php文件报第9行和11行的错误  解决方法是注释第九行文件内容

        WxPay.Config.php文件报第9行错误  解决方法是注释第九行文件内容

      

    //到了这里此时订单的相关信息已经完成了
    <?php

    $notify = new NativePay();
    $input = new WxPayUnifiedOrder();
    $input->SetBody($order->order_name);//商品描述
    $input->SetAttach($order->order_name);//附加数据
    $input->SetOut_trade_no($order->order_number);
    $input->SetTotal_fee($order->price * 100);//微信的单位是分主要为浮点数精度不丢失到了微信那里会转换
    $input->SetTime_start(date("YmdHis"));
    $input->SetTime_expire(date("YmdHis", time() + 600));
    $input->SetGoods_tag("test");
    $input->SetNotify_url("http://paysdk.weixin.qq.com/notify.php");
    $input->SetTrade_type("NATIVE");
    $input->SetProduct_id("123456789");
    $result = $notify->GetPayUrl($input);
    $url2 = $result["code_url"];
    //下面主要是显示二维码 
    require_once '../example/phpqrcode/phpqrcode.php';//引入二维码所在的文件位置
    if(substr($url,0,6) == 'weixin'){
    ob_end_clean();
    header('Content-Type:image/png');
    QRcode::png($url);
    }else{
    header('HTTP/1.1 404 Not Found');
    }

    <?php
    //通过弹出层显示二维码,这个操作主要是用户点击了微信支付按钮弹出支付的二维码
    public function getqrcode($url2){
            $url = base64_decode($url2);
            require_once '../wxpay/example/phpqrcode/phpqrcode.php';
            if(substr($url,0,6) == 'weixin'){
                ob_end_clean();
                header('Content-Type:image/png');
                QRcode::png($url);
            }else{
                header('HTTP/1.1 404 Not Found');
            }
        }

      

    <?php
     //怎样知道用户是否支付了,主要是在前端弹出用一个定时器不断请求后台的查询得到的结果
    public function wxquery(Order $order){
            require_once "../wxpay/lib/WxPay.Api.php";
            require_once "../wxpay/example/WxPay.Config.php";
            //查询订单是否支付了
            $out_trade_no = $order->order_number;//拿到用户支付的订单号
            $input = new WxPayOrderQuery();
            $input->SetOut_trade_no($out_trade_no);//把用户订单放到订单中查询
            $config = new WxPayConfig();
            $res = WxPayApi::orderQuery($config,$input);//查询订单支付情况
            if($res['result_code'] =='SUCCESS' && $res['trade_state'] == 'SUCCESS' && $res['trade_state_desc'] == '支付成功')//判断是否成功return ['status'=> true,'message'=>'支付成功'];
            }
            return ['status'=> false,'message'=>'服务器繁忙请稍后-----'];
        }
    IT这条路,当你懂得越多的时候,那么你不懂的也就会越多了.
  • 相关阅读:
    PAT (Advanced Level) Practice 1071 Speech Patterns (25分)
    PAT (Advanced Level) Practice 1070 Mooncake (25分)
    PAT (Advanced Level) Practice 1069 The Black Hole of Numbers (20分)
    PAT (Advanced Level) Practice 1074 Reversing Linked List (25分)
    PAT (Advanced Level) Practice 1073 Scientific Notation (20分)
    第一次冲刺个人总结01
    构建之法阅读笔记01
    人月神话阅读笔记01
    四则运算2
    学习进度条(软件工程概论1-8周)
  • 原文地址:https://www.cnblogs.com/learningPHP-students2018/p/10270723.html
Copyright © 2011-2022 走看看