微信支付(公衆號支付JSAPI)

微信公衆號支付/微信瀏覽器支付(JSAPI)

一:獲取微信支付四大參數

官方連接:pay.weixin.qq.com/wiki/doc/ap…php

步驟二:平臺配置

  1. 配置支付目錄:商戶平臺。

配置此目錄是代碼中「微信支付」所在頁面的地址,一級域名需ICP備案。前端

  1. 配置受權域名:微信公衆平臺。

支付過程當中須要獲取用戶openid,必須通過網頁受權配置才能夠,否則獲取不到openid。api

中間遇到的小問題: 在放置MP...v4kGCjvXcmR4X90w.txt文件時,已經放置在了服務器下,但在微信公衆號配置頁面仍提醒未上傳。瀏覽器

解決方案:bash

參考連接:blog.csdn.net/u010634066/…服務器

步驟三:開發流程

微信支付原理即調用官方文檔的「統一下單」接口,將微信服務器返回的參數進行加工後返回到前臺頁面。全部參數解釋請參考官方文檔:pay.weixin.qq.com/wiki/doc/ap…微信

官方文檔: pay.weixin.qq.com/wiki/doc/ap…app

關於獲取openid:微信公衆平臺

  1. window.location.href = 'open.weixin.qq.com/connect/oau…'

點擊該路徑跳轉後,連接內帶有參數:code微信支付

  1. 獲取到code後請求如下連接獲取access_token: api.weixin.qq.com/sns/oauth2/… 拿到咱們須要的openid
function onBridgeReady(){
   WeixinJSBridge.invoke(
      'getBrandWCPayRequest', {
        "appId": appId,     //公衆號名稱,由商戶傳入     
        "timeStamp":timeStamp,         //時間戳,自1970年以來的秒數     
        "nonceStr":nonceStr, //隨機串     
        "package":package,     
        "signType":signType,         //微信簽名方式:     
        "paySign":paySign //微信簽名 
      },
      function(res){
          if(res.err_msg == "get_brand_wcpay_request:ok" ){
          // 使用以上方式判斷前端返回,微信團隊鄭重提示:
                //res.err_msg將在用戶支付成功後返回ok,但並不保證它絕對可靠。
          } 
    });
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}
複製代碼

遇到的坑

  1. 簽名錯誤。 顯示簽名錯誤,即後臺傳輸的簽名有誤。按照官方文檔:pay.weixin.qq.com/wiki/doc/ap… 從新生成傳輸便可。若是還不行,先檢查微信公衆平臺內ip白名單是否添加了服務器IP和線上域名IP,若是都添加了再次生成一次API祕鑰。
  2. 商戶平臺開發配置,支付受權目錄內地址需明確至支付的當前頁面 eg:www.baidu.com/payNow/
相關文章
相關標籤/搜索