成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

H5微信支付之引入微信的js-sdk包失敗怎么辦

這篇文章主要介紹了H5微信支付之引入微信的js-sdk包失敗怎么辦,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

我們注重客戶提出的每個要求,我們充分考慮每一個細節(jié),我們積極的做好網(wǎng)站制作、成都網(wǎng)站設計服務,我們努力開拓更好的視野,通過不懈的努力,創(chuàng)新互聯(lián)公司贏得了業(yè)內(nèi)的良好聲譽,這一切,也不斷的激勵著我們更好的服務客戶。 主要業(yè)務:網(wǎng)站建設,網(wǎng)站制作,網(wǎng)站設計,小程序定制開發(fā),網(wǎng)站開發(fā),技術開發(fā)實力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫的技術開發(fā)工程師。

前言

在開發(fā)微信公眾號活動中,由于之前沒有接觸過與微信相關的開發(fā),所以導致掉坑,爬坑,不過也讓我對微信公眾和微信官方文檔的熟悉大大增加。

爬坑:安卓大概率調(diào)起微信支付失敗(引入微信的js-sdk包失?。?/h4>
在微信的官方文檔中:https://pay.weixin.qq.com/wik...
有這樣的一個DEMO:
function onBridgeReady(){
   WeixinJSBridge.invoke(
      'getBrandWCPayRequest', {
         "appId":"wx2421b1c4370ec43b",     //公眾號名稱,由商戶傳入     
         "timeStamp":"1395712654",         //時間戳,自1970年以來的秒數(shù)     
         "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //隨機串     
         "package":"prepay_id=u802345jgfjsdfgsdg888",     
         "signType":"MD5",         //微信簽名方式:     
         "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信簽名 
      },
      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();
}
在后端同事授權成功后,在活動頁面頁面引入這段代碼,開開心心,build 提交 測試 嗯蘋果沒問題,安卓好像沒問題,然鵝安卓有時候調(diào)不起支付,開始以為是微信版本的原因,等等其他,但是,調(diào)起成功的概率也太TM低了,10次才能調(diào)起1次,得,肯定是代碼原因了。改吧。

解決思路:

開微信開發(fā)者工具,打log,最后發(fā)現(xiàn)在這一步時候if (typeof WeixinJSBridge == "undefined")
1.ios能夠調(diào)起微信瀏覽器的js-sdk
2.安卓大部分都走到undefined里面去了
這里其實我也不太清楚原因。個人感覺是微信安卓的內(nèi)置瀏覽器版本和這個 WeixinJSBridge 方法的問題。(希望有大神能夠解答一下)
既然js-sdk 調(diào)不起,那就手動引入配置吧    //所以有時候偷懶反而更加麻煩,吸取教訓
if (typeof WeixinJSBridge == "undefined"){
    console.log( WeixinJSBridge);
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

Vue引入微信js-sdk包

npm i -S weixin-js-sdk

在需要引入的頁面引入模塊

import wx from 'weixin-js-sdk'

配置(參考微信官方文檔:https://mp.weixin.qq.com/wiki...):

wx.config({
    debug: true, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。
    appId: '', // 必填,公眾號的唯一標識
    timestamp: , // 必填,生成簽名的時間戳
    nonceStr: '', // 必填,生成簽名的隨機串
    signature: '',// 必填,簽名
    jsApiList: [] // 必填,需要使用的JS接口列表 比如我要調(diào)用支付接口 那么就是 [chooseWXPay]
});

這里timestamp是小寫 s 是小寫,數(shù)據(jù)類型是 int 類型

接下來既然配置成功了,那就繼續(xù)看官方文檔
在官方文檔是這么說的,有個ready的方法,在config驗證成功之后,把接口放在里面確保執(zhí)行。

wx.ready(function(){
    // config信息驗證后會執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結果之后,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調(diào)用相關接口,則須把相關接口放在ready函數(shù)中調(diào)用來確保正確執(zhí)行。對于用戶觸發(fā)時才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中。
});

ready里面的引入?yún)?shù)(注意數(shù)據(jù)類型,和后端同事好好配合- -)

wx.chooseWXPay({
timestamp: 0, // 支付簽名時間戳,注意微信jssdk中的所有使用timestamp字段均為小寫。但最新版的支付后臺生成簽名使用的timeStamp字段名需大寫其中的S字符
nonceStr: '', // 支付簽名隨機串,不長于 32 位
package: '', // 統(tǒng)一支付接口返回的prepay_id參數(shù)值,提交格式如:prepay_id=\*\*\*)
signType: '', // 簽名方式,默認為'SHA1',使用新版支付需傳入'MD5'
paySign: '', // 支付簽名
success: function (res) {
// 支付成功后的回調(diào)函數(shù)
}
});

附上本人的demo

在ready里面使用Vue data中的數(shù)據(jù),一不小心掉到this指向的坑,如果不加bind,wx.chooseWXPay里面的參數(shù)是拿不到從后端請求回來的數(shù)據(jù)的,這里的this并不是指向VueComponent,自然無法獲取請求后我賦值給this.wx_config這個數(shù)組對象的數(shù)據(jù)。
getConfig(){
            wx.config({
                debug: this.wx_config.debug, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。
                appId: this.wx_config.appId, // 必填,公眾號的唯一標識
                timestamp: this.wx_config.timestamp, // 必填,生成簽名的時間戳
                nonceStr: this.wx_config.nonceStr, // 必填,生成簽名的隨機串
                signature:this.wx_config.signature,// 必填,簽名
                jsApiList: this.wx_config.jsApiList // 必填,需要使用的JS接口列表
            });
            //微信支付
            wx.ready(function() {
                // console.log(this.jsApiCall());
                wx.chooseWXPay({
                    timestamp: this.wechat_code.timestamp,
                    nonceStr:this.wechat_code.nonceStr,
                    package: this.wechat_code.package,
                    signType: this.wechat_code.signType,
                    paySign: this.wechat_code.paySign,
                    success: function () {
                        // 支付成功后的回調(diào)函數(shù)
                        alert("支付成功");
                        window.location.href = "/hd/becomevip";
                    },
                    cancel: function() {
                        alert("支付失敗");
                    }
                });
            }.bind(this));
        },
踩坑總是難免的,還有不要因為怕麻煩而不去做正確的事~

感謝你能夠認真閱讀完這篇文章,希望小編分享H5微信支付之引入微信的js-sdk包失敗怎么辦內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學習!

網(wǎng)站欄目:H5微信支付之引入微信的js-sdk包失敗怎么辦
文章URL:http://jinyejixie.com/article44/jdoihe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、網(wǎng)站改版服務器托管、定制開發(fā)、面包屑導航域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
攀枝花市| 南汇区| 嘉祥县| 光山县| 思茅市| 集安市| 岚皋县| 新沂市| 突泉县| 淮北市| 大安市| 德兴市| 云和县| 富阳市| 平山县| 左权县| 金昌市| 平和县| 抚顺市| 若羌县| 福泉市| 滨州市| 金昌市| 许昌县| 永靖县| 舒城县| 翁源县| 盘山县| 栾川县| 西安市| 普兰店市| 镇沅| 黄山市| 遂平县| 永昌县| 木里| 双城市| 漳平市| 咸阳市| 化德县| 龙游县|