<tfoot id="scysq"></tfoot>
<tfoot id="scysq"></tfoot>
<strike id="scysq"></strike>
  • <ul id="scysq"><sup id="scysq"></sup></ul>

    微信公眾號調用發票抬頭接口總結

    更新時間:2022-04-18 編輯:創始人 關注人次:0 云搜索


    image

    剛入職沒多久,給我一個微信公眾號的項目,之前也沒有經驗,今天把我開發時遇到的坑總結一下,希望可以幫助一些像我一樣的小白兔!

    我的項目是前端H5頁面,vue項目,我接手的時候已經有過微信支付功能了,我看項目中在public文件夾下index.html中引入了jwexin.js

    接下來就是在頁面實現功能代碼如下:

    <i @click="getInvoiceList()" :class="{noClick:isDisabled}" class="el-icon-s-operation invoiceBtn"></i>  //獲取發票抬頭按鈕


    調用獲取微信配置參數接口 getwxticket

    getInvoiceList(){
       this.isDisabled = true   let _this = this   let url = location.href.split('#')[0]
       getwxticket(url).then(res=>{
          let data = res.data
          wx.config({
            beta: true,//用于方法未對外公開的情況        debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來        appId: data.appId, // 必填,公眾號的唯一標識        timestamp: data.timestamp, // 必填,生成簽名的時間戳        nonceStr:data.nonceStr, // 必填,生成簽名的隨機串        signature: data.signature,// 必填,簽名,見附錄1        jsApiList: [
              "chooseInvoiceTitle"        ] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2      });
          wx.ready(function(){
            // config信息驗證后會執行ready方法,所有接口調用都必須在config接口獲得結果之后,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對于用戶觸發時才調用的接口,則可以直接調用,不需要放在ready函數中。        _this.doReady();
          });
          wx.error(function(res){
            console.log(res,'失敗!')
            _this.isDisabled = false        // config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對于SPA可以在這里更新簽名。      });
       })
                    
    },


    發票抬頭接口

    doReady () {
       let _this = this   wx.invoke('chooseInvoiceTitle', {
          "scene": "1"   }, function (res) {
          // 這里處理調用結果X``      _this.isDisabled = false      var info = JSON.parse(JSON.stringify(res)).choose_invoice_title_info;
          var infoJ = JSON.parse(JSON.parse(JSON.stringify(info)));
          _this.invoiceSave.title = infoJ.title //發票抬頭      _this.invoiceSave.taxFileNumber = infoJ.taxNumber; //稅號      _this.invoiceSave.address = infoJ.companyAddress //公司地址      _this.invoiceSave.tel = infoJ.telephone //電話      _this.invoiceSave.bankname = infoJ.bankName //開戶銀行      _this.invoiceSave.bankAccount = infoJ.bankAccount // 銀行賬號      _this.invoiceSave.titleType = infoJ.type //發票抬頭類型   })  
    },


    這樣寫應該沒有問題才對,可我偏偏是個蘋果手機,怎么請求接口,都會返回簽名無效的錯誤,在網上找了好久都沒有找到解決辦法,知道我用同事的手機測試,才發現同事的手機是成功的,那問題就鎖定了,是iOS系統的問題,順著這個問題找解決辦法,網上說是因為:“微信公眾號分享功能,安卓成功,ios出現簽名錯誤。區別在于發送給后臺做驗證的url不同,安卓需要發送當前頁面的url,ios需要發送進入的第一個頁面的url,所以需要將第一個頁面的url保存起來”照貓畫虎同理,解決辦法:

    在路由守衛里添加如下代碼:

    router.beforeEach((to, from, next) => {
      if (window.entryUrl == undefined) {
        window.entryUrl = location.href.split('#')[0]
      }
    })


    然后在頁面的getInvoiceList方法里添加如下代碼判斷機型:

    let u= navigator.userAgent;
      let isAndroid = u.indexOf('Android')>-1||u.indexOf('Adr')>-1  if (isAndroid) {
        _this.url= Base64.encode(location.href.split('#')[0])
      }else{
         _this.url= Base64.encode(window.entryUrl)
      }


    本文地址: http://www.770551.com/show-241.html ,轉載請注明出處。
    上一篇:一臺服務器可以安裝多少SSL證書 返回列表 下一篇:沒有了

    服務支持

    我們珍惜您每一次在線詢盤,有問必答,用專業的態度,貼心的服務。

    讓您真正感受到我們的與眾不同!