微信支付開發(5) 掃碼並輸入金額支付


關鍵字:微信支付 微信支付v3 動態native支付 統一支付 Native支付 prepay_id 
作者:方倍工作室
原文: http://www.cnblogs.com/txw1958/p/wxpayv3-scan-input-money.html

 

本文介紹微信支付下的掃描二維碼並輸入自定義金額的支付的開發過程。使用本方法掃碼,金額超過5元時,有默認關注功能。

注意

微信支付現在分為v2版和v3版,2014年9月10號之前申請的為v2版,之后申請的為v3版。V3版的微信支付沒有paySignKey參數。v2的相關介紹請參考方倍工作室的其他文章。本文介紹的為微信支付v3。

 

一. OAuth2.0授權

JSAPI 支付前需要調用 登錄授權接口獲取到用戶的 Openid 。所以需要做一次授權,這次授權是不彈出確認框的。
其實質就是在用戶訪問

http://www.fangbei.org/wxpay/js_api_call.php

時跳轉到

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://www.fangbei.org/wxpay/js_api_call.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

以此來獲得code參數,並根據code來獲得授權access_token及openid

其實現的詳細流程可參考 微信公眾平台開發(71)OAuth2.0網頁授權

 

二、獲取用戶輸入金額

上述流程中是獲得用戶的openid,另外還需要獲得本次的交易金額。

    <body onselectstart="return true;" ondragstart="return false;">
        <form method="post" action="submit.php" id="form" onsubmit="return tgSubmit()">
            <div class="container gray_bg">
                <div class="explain">
                    <h3>
                         企業微信支付-掃碼自定義金額
                    </h3>
                </div>
                <div class="box apply_box" id="applyBox">
                    <dl class="pb15">
                        <dt>
                            金額(¥)
                        </dt>
                        <dd>
                            <input name="amount" class="txt required" id="amount" value="" placeholder="請輸入數字金額,單位元" type="tel" onkeyup="checkNum(this)"/>
                        </dd>
                        
                    </dl>
                </div>
                <footer class="sub_wrap">
                    <input type="hidden" name="openid" value="<?php echo $openid;?>">
                    <input type="submit" class="btn mt20" id="subBtn" value="提交" />
                    <div class="copyright">技術支持 方倍工作室
                    </div>
                </footer>
            </div>
        </form>
    </body>

 

三、拉取支付插件

獲得openid和金額之后,直接使用統一訂單接口輸入參數

    $jsApi = new JsApi_pub();
    
    //=========步驟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",($amount * 100));//總金額
    $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();
    // logger("prepay_id ".$prepay_id);
    //=========步驟3:使用jsapi調起支付============
    $jsApi->setPrepayId($prepay_id);

    $jsApiParameters = $jsApi->getParameters();

詳細流程,可以參考 微信支付開發(1) JS API支付

 

四、效果展示

掃描二維碼

 

  

 

金額超過5元時,還有默認關注功能。可以用於吸粉。

   

 

五、源代碼

付費提供,只需要源碼300元,需要配置安裝500元,需要加QQ 1354386063

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM