首頁  >  文章  >  web前端  >  微信支付如何實現內建瀏覽器的H5頁面支付_javascript技巧

微信支付如何實現內建瀏覽器的H5頁面支付_javascript技巧

WBOY
WBOY原創
2016-05-16 15:38:071521瀏覽

因為專案需要,要在H5頁加入微信支付,所以便去嘗試,只想說真的很坑,尤其調試起來不方便

這是微信的官方API文件 微信API

微信支付的準備工作

申請公眾號,申請開通支付,這個很簡單,自行百度
申請好之後 在微信公眾平台頁面的“微信支付”頁面中的“開發配置”Tab上配置“支付授權目錄”,“測試授權目錄”,“測試白名單”
在微信公眾平台頁面的「開發者中心」中找到「AppID(應用程式ID)」和「AppSecret(應用程式金鑰)」
在商家平台中找到微信支付分配的商戶號,以及自行設定一個商家支付密鑰

具體步驟

首先透過微信支付的api 取得支付用的prepay_id,這裡需要用到上面提到的“AppID(應用ID)”,“AppSecret(應用金鑰)”,“微信支付分配的商家號碼”,“商家支付金鑰」以及其他的一些參數(具體參照微信開發文件)用MD5加密成簽名(第一次簽名)獲得prepay_id後,用prepay_id和一些其他參數(具體參照微信開發文檔)用MD5加密成簽名(第二次簽名)然後在前端透過微信內建瀏覽器提供的js API,WeixinJSBridge.invoke來呼叫微信支付的彈出頁面,這裡需要用到上面的第二次的簽名

具體程式碼如下

$.get('/xxx',function(data){
 if(data && data !== ""){
  var _data = $.parseJSON(data)[0];
  if(parseInt(_data.userAgent) < 5){
  alert('您的微信版本低于5.0,无法使用微信支付!');
  return false;
  }
  WeixinJSBridge.invoke('getBrandWCPayRequest',{
  'appId': _data.appId,
  'timeStamp': _data.timeStamp,
  'nonceStr': _data.nonceStr,
  'package': 'prepay_id=' + _data.packageOne,
  'signType': _data.signType,
  'paySign': _data.paySign
  },function(res){
   if(res.err_msg === 'get_brand_wcpay_request:ok'){
   alert('支付成功,返回订单列表!');
   }else if(res.err_msg === 'get_brand_wcpay_request:cancel'){
   alert('取消支付!');
   }
  });

 }
});

幾個容易失敗點要注意

支付連結和在開發平台配置的連結不符

總共需要2次簽名,所需的參數是不同的,在JS中用到的簽名是第二次簽名,不要混淆參數傳遞的不能有錯

如果body中有中文需要轉義其中還有一些問題沒有完全解決,就是位置支付沒有一個判斷失效的時間,如果在微信支付的彈出層停留時間太久了,可能這個訂單在我們網站上已經失效了,可在微信支付中仍然能支付成功,如果有高人知道這個問題怎麼解決的,希望能告訴解決辦法

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn