• 微信支付 V3版


    本人小菜鸟一仅仅。为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识,小菜鸟创建了一个群。希望光临本博客的人能够进来交流。

    寻求共同发展。搭建平台。本人博客也有很多的技术文档,希望能够为你提供一些帮助。QQ群:   191848169               QQ:450225664


    强烈建议:先看demo


    须要申请对应的帐号
    后台设置支付文件夹


    js_api_call.php


    <?

    php
    /**
     * JS_API支付demo
     * ====================================================
     * 在微信浏览器里面打开H5网页中运行JS调起支付。接口输入输出数据格式为JSON。
     * 成功调起支付须要三个步骤:
     * 步骤1:网页授权获取用户openid
     * 步骤2:使用统一支付接口,获取prepay_id
     * 步骤3:使用jsapi调起支付
    */
        include_once("WxPayPubHelper/WxPayPubHelper.php");
        
        //使用jsapi接口
        $jsApi = new JsApi_pub();

        //=========步骤1:网页授权获取用户openid============
        //通过code获得openid
        if (!isset($_GET['code']))
        {
            //触发微信返回code码
            $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
            Header("Location: $url");
        }else
        {
            //获取code码。以获取openid
            $code = $_GET['code'];
            $jsApi->setCode($code);
            $openid = $jsApi->getOpenId();
        }
        // $openid = 'oywLxshg8ZwoEURBA9seM-Ahdp-s';
        //=========步骤2:使用统一支付接口。获取prepay_id============
        //使用统一支付接口
        $unifiedOrder = new UnifiedOrder_pub();
        
        //设置统一支付接口參数
        //设置必填參数
        //appid已填,商户无需反复填写
        //mch_id已填,商户无需反复填写
        //noncestr已填,商户无需反复填写
        //spbill_create_ip已填,商户无需反复填写
        //sign已填,商户无需反复填写
        $unifiedOrder->setParameter("openid","$openid");//商品描写叙述
        $unifiedOrder->setParameter("body","贡献一分钱");//商品描写叙述
        //自己定义订单号,此处仅作举例
        $timeStamp = time();
        $out_trade_no = WxPayConf_pub::APPID."$timeStamp";
        $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号
        $unifiedOrder->setParameter("total_fee","1");//总金额
        $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址
        $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
        //非必填參数。商户可依据实际情况选填
        //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号  
        //$unifiedOrder->setParameter("device_info","XXXX");//设备号
        //$unifiedOrder->setParameter("attach","XXXX");//附加数据
        //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间
        //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间
        //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记
        //$unifiedOrder->setParameter("openid","XXXX");//用户标识
        //$unifiedOrder->setParameter("product_id","XXXX");//商品ID

        $prepay_id = $unifiedOrder->getPrepayId();
        //=========步骤3:使用jsapi调起支付============
        $jsApi->setPrepayId($prepay_id);

        $jsApiParameters = $jsApi->getParameters();
        //echo $jsApiParameters;
    ?

    >

    <html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
        <title>微信安全支付</title>

        <script type="text/javascript">

            //调用微信JS api 支付
            function jsApiCall()
            {
                WeixinJSBridge.invoke(
                    'getBrandWCPayRequest',
                    <?php echo $jsApiParameters; ?>,
                    function(res){
                        WeixinJSBridge.log(res.err_msg);
                        //alert(res.err_code+res.err_desc+res.err_msg);
                    }
                );
            }

            function callpay()
            {
                if (typeof WeixinJSBridge == "undefined"){
                    if( document.addEventListener ){
                        document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
                    }else if (document.attachEvent){
                        document.attachEvent('WeixinJSBridgeReady', jsApiCall);
                        document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
                    }
                }else{
                    jsApiCall();
                }
            }
        </script>
    </head>
    <body>
        </br></br></br></br>
        <div align="center">
            <button style="210px; height:30px; background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer;  color:white;  font-size:16px;" type="button" onclick="callpay()" >贡献一下</button>
        </div>
    </body>
    </html>

  • 相关阅读:
    如何将程序添加到系统服务实现开机自启动
    ASP.NET速度优化
    layer官方演示与讲解(jQuery弹出层插件)
    SQLSERVER排查CPU占用高的情况
    解决FlexPaper分页分段加载问题(转)
    SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10.50.1600
    Virtualbox中win7虚拟机中U盘不可用问题的解决
    解决:对COM 组件的调用返回了错误 HRESULT E_FAIL
    google chrome插件开发,自己动手,丰衣足食
    WebKit.net最简单使用方法
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5328064.html
Copyright © 2020-2023  润新知