微信支付是微信開發中坑最多的一個功能,本文旨在幫助有開發基礎的人快速接入微信支付,若是要詳細瞭解微信支付,請看微信支付的開發文檔。php
再說把開發文檔搬到這裏來就不必了。想要快速跑通微信支付的能夠繼續查看。前端
微信支付分公衆號支付(在微信裏的網頁用微信支付)、PC版掃碼支付(掃碼有兩種模式)、APP微信支付,當初作這三種支付,尚未不少人作,api
沒有資料,雖然官方提供了demo,可是出現各類問題跑不通,對着文檔作, 遇到各類你想不到的坑,簡直要哭,說多了都是淚....微信
這裏介紹一下公衆號支付的流程:微信開發
一、獲取openid:最多見的用網頁受權獲取支付人的openidapp
//使用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(); }
二、統一下單獲取預支付id:prepay_id微信支付
//=========步驟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();
三、封裝支付參數,發起微信支付url
//=========步驟3:使用jsapi調起支付============ $jsApi->setPrepayId($prepay_id); $jsApiParameters = $jsApi->getParameters(); echo $jsApiParameters;
獲得上述的支付參數$jsApiParameters,前端就能夠發起微信支付了!spa
公衆號支付最多見的錯誤有:3d
一、簽名錯誤
二、支付參數缺乏appid
三、當前url未註冊
四、.......其餘各類錯誤
掃碼支付有兩種模式
掃碼模式一:靜態二維碼方式,即固定金額的掃碼支付方式,適用於提早生成二維碼,金額固定,掃碼支付
掃碼模式二:動態二維碼方式,即根據訂單金額動態生成二維碼,PC版掃碼支付即接入這種方式。
今天就寫到這裏吧,有點忘記了。
續上...
仍是直接整理出完整的demo吧,親測運行,能發起整個支付流程。
須要完整代碼加使用教程的能夠聯繫 851 488 243,備註:微信支付
公衆號支付
掃碼支付模式一
掃碼模式二
使用教程