微信jssdk 調用微信支付

2022-01-30 願碼

支付目錄配置

設置支付目錄

請確保實際支付時的請求目錄與後臺配置的目錄一致,否則將無法成功喚起微信支付。
在微信商戶平臺(pay.weixin.qq.com)設置您的公眾號支付支付目錄,設置路徑:商戶平臺→產品中心→開發配置。公眾號支付在請求支付的時候會校驗請求來源是否有在商戶平臺做了配置,所以必須確保支付目錄已經正確的被配置,否則將驗證失敗,請求支付不成功。

支付目錄配置

設置授權域名

開發公眾號支付時,在統一下單接口中要求必傳用戶openid,而獲取openid則需要您在公眾平臺設置獲取openid的域名,只有被設置過的域名才是一個有效的獲取openid的域名,否則將獲取失敗。具體界面如圖7.8所示:

微信網頁授權域名 微信網頁授權域名

發起一個微信支付請求

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

備註:prepay_id 通過微信支付統一下單接口拿到,paySign 採用統一的微信支付 Sign 籤名生成方法,注意這裡 appId 也要參與籤名,appId 與 config 中傳入的 appId 一致,即最後參與籤名的參數有appId, timeStamp, nonceStr, package, signType。
微信支付開發文檔:https://pay.weixin.qq.com/wiki/doc/api/index.html

微信支付的處理流程

創建商戶訂單,生成商戶訂單號( out_trade_no )

統一下單,商戶系統先調用該接口在微信支付服務後臺生成預支付交易單,返回正確的預支付交易回話標識

生成微信支付的config參數

伺服器處理方法頁面設置請求,獲取微信支付的配置

發起請求,去伺服器獲取相應的配置信息,然後配置 chooseWXPay

this.$http.post(LIVE_ORDER_URL, {    live_id: 1,    order_type: 1,    order_money: 1}).then((response) => {    if (response.status == 200) {         const result = response.data         if (result.code == 0) {               const configResult = result.data               this.$wechat.chooseWXPay({                    timestamp: configResult.timeStamp, // 支付籤名時間戳,注意微信jssdk中的所有使用timestamp欄位均為小寫。但最新版的支付後臺生成籤名使用的timeStamp欄位名需大寫其中的S字符                    nonceStr: configResult.nonceStr, // 支付籤名隨機串,不長於 32 位                    package: configResult.package, // 統一支付接口返回的prepay_id參數值,提交格式如:prepay_id=***)                    signType: configResult.signType, // 籤名方式,默認為'SHA1',使用新版支付需傳入'MD5'                    paySign: configResult.paySign, // 支付籤名                    success: function(res) {                          // 支付成功後的回調函數                            console.log("res: "+JSON.stringify(res))                    }                });         }    }})

生成商戶訂單號

const userInfo = await userServices.getUserInfo(userId)            const out_trade_no = Date.now() + wxUtil.getNonceStr(5);postData.out_trade_no = out_trade_noconst result = await orderServices.createOrder(userId, postData)

統一下單

配置統一下單的參數,然後調用統一下單的接口
參考連結:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

let orderParams = {    appid: config.wxAppID,    mch_id: config.mch_id,    device_info: 'WEB',    nonce_str: wxUtil.getNonceStr(32),    body: 'test',    out_trade_no: out_trade_no,    total_fee: 100,    spbill_create_ip: '127.0.0.1',    notify_url: constant.WECHAT_NOTICE_URL,    openid: openid,    trade_type: 'JSAPI'}const orderSign = wxUtil.wxOrderSign(orderParams, config.wxkey)orderParams.sign = orderSignconst orderXml = wxUtil.json2xml(orderParams)console.log("orderXml:" + orderXml)const fetchResult = await fetch('https://api.mch.weixin.qq.com/pay/unifiedorder', {     method: 'POST',     body: orderXml,     headers: {          'Accept': 'text/xml',          'Content-Type': 'text/xml',    }})const unifiedResult = await fetchResult.text()

設置支付的配置信息

//設置支付的配置信息let apyconfig = {    appId: config.wxAppID,    timeStamp: parseInt(Date.now() / 1000),    nonceStr: wxUtil.getNonceStr(32),    package: "prepay_id=" + json.prepay_id,    signType: "MD5"}let apySign = wxUtil.wxOrderSign(apyconfig, config.wxkey)apyconfig.paySign = apySigndelete apyconfig.appIdreturnResult.data = apyconfig

遇到的問題分析

調用支付jsapi缺少參數total_fee

解決方法:

由於一開始配置 package出現問題,直接將prepay_id賦值給package( package: json.prepay_id ),正確的做法為:package: "prepay_id=" + json.prepay_id,





全棧部落區塊鏈部落

相關焦點

  • php實現微信和支付寶支付
    2:在config/params.php中設置基礎配置信息和微信支付信息// 微信配置 具體可參考EasyWechat 'wechatConfig' => [],// 微信支付配置 具體可參考EasyWechat'wechatPaymentConfig' => [],// 微信小程序配置 具體可參考
  • 計算機畢業設計中微信小程序調用支付接口支付
    在微信提供的接口文檔中提供了一個微信支付接口,應該是直接調用這個接口就可以發起微信支付但是,當開始信心滿滿的去看所需參數時,懵逼了,這些參數是什麼在這些參數中最難理解和獲取的就是這兩個了,仔細研究後發現,package這個參數的獲取要調用微信提供的另一個接口,統一下單接口。原來在微信中支付需要先進行一下預下單。
  • 微信小程序使用騰訊地圖sdk
    騰訊地圖提供了供小程序使用的SDK,可結合地圖組件和api進行快速調用,訪問地址為http://lbs.qq.com/qqmap_wx_jssdk
  • 微信小程序獲取地理位置信息
    微信小程序官方文檔提供了 wx.getlocation 方法來獲取用戶的地理位置信息,但是這個方法只能獲取到用戶的經度和緯度,具體城市名稱還需要結合第三方地圖
  • 微信支付來了,微信App來了,微信能力來了
    √ 印美圖,誰還需要拍立得:通過微信支付進行照片即時列印。√ 太平洋咖啡,叮咚你收到一杯咖啡:直接掃描二維碼購買咖啡後,太平洋咖啡掃碼機再掃二維碼校驗後兌換咖啡。√ 易迅微信購物:直接掃描商品一鍵下單。√ 微信支付充話費:掃碼充話費。在這些案例中,微信與硬體、電商、實體商家和生活服務打通,實現人機連接、O2O閉環。
  • 微信H5支付接口
    H5支付是指商戶在微信客戶端外的移動端網頁展示商品或服務,用戶在前述頁面確認使用微信支付時,商戶發起本服務呼起微信客戶端進行支付。
  • 微信支付之掃碼支付
    作者:王森 ,連結:www.cnblogs.com/wangsen選擇支付模式點開連結先去了解一下微信支付模式
  • PHP微信支付開發實例​
    PHP微信支付開發過程,分享給大家,供大家參考,具體內容如下1.開發環境 Thinkphp 3.2.3 微信:服務號,已認證 開發域名:http://test.paywechat.com (自定義的域名,外網不可訪問)2.需要相關文件和權限 微信支付需申請開通
  • 支付系統調用第三方支付接口的總結
    最近服務端的項目中常用到調用微信、支付寶的等第三方支付接口,這裡對創建訂單流程做些總結,主要是app端支付。
  • 微信小程序-獲取當前城市位置
    2,微信的getLocation接口,獲取當前用戶的地理位置(微信返回的是經緯度,速度等參數);    3,微信沒有將經緯度直接轉換為地理位置,借用騰訊位置服務中關於微信小程序的地理轉換JS SDK 的API(返回信息中包括國家,省,市,區,經緯度等地理位置)步驟描述清楚以後,下面就開始按步驟操作了;(本文僅僅講述如何獲取用戶地理位置的授權)
  • 微信小程序支付、掃碼及APP支付接入詳解
    目前在國內,幾乎90%中小公司的支付系統都離不開微信支付和支付寶支付。那麼大家要思考了,為什麼微信支付和支付寶支付能作為大多數公司接入的首選呢?在開發前,需要先申請一個商家版的微信公眾號或微信小程序(目前微信支付只有商家版公眾號可開通),然後開通微信支付功能,並做相應的配置。
  • 微信支付公眾號開發流程--JAVA
    可憐的工程師還得開發退款功能)開發流程1)獲取用戶授權(這個做不做沒有啥關係,反正我還沒做呢)2)調用統一下單接口獲取預支付id3)H5調起微信支付的內置JS4)支付完成後,微信回調URL的處理 看著大段的文字,是不是很不爽。忘記了在哪裡看到的一句話。
  • 微信支付服務商大會召開---方寸科技率先提供「微信車主服務」
    6月11日,「微信車主服務」微信支付服務商大會在長沙舉辦,微信支付宣布開放「服務商數字營銷新能力」,為服務商提供應用於商戶的廣告營銷管理引擎。服務商可登錄微信支付服務商後臺,進入「服務商功能」、「朋友圈廣告」、「邀請商戶授權」選擇發起邀請或開通,隨後商戶在「微信支付商戶助手」小程序進行授權,就可進行廣告的後續投放。 在服務商看來,對交易的洞察力和保障支付穩定的能力,是經營很重要的兩個基礎。此次一同推出的「微信支付服務商助手小程序」正包含了交易分析和支付接口調用質量監控這兩大主要功能。
  • 微信H5頁面前端開發,大多數人都會遇到的幾個兼容性坑
    最近給公司微信公眾號,寫了微信h5業務頁面,總結分享一下前端開發過程中的幾個兼容性坑,項目直接拿的公司頁面,所以下文涉及圖片都模糊處理了。圖片描述出現原因分析:待補充解決辦法:給input和textarea標籤添加focus事件,如下,先判斷是不是安卓手機下的操作,當然,可以不用判斷機型,Document 對象屬性和方法,setTimeout延時0.5秒,因為調用安卓鍵盤有一點遲鈍
  • 微信小程序支付功能全流程實踐
    前言微信小程序為電商類小程序,提供了非常完善、優秀、安全的支付功能。在小程序內可調用微信的API完成支付功能,方便、快捷。
  • 微信支付改革
    公告要求微信支付合作夥伴在 2019 年 9 月 15 日前,完成升級改造,逾期未能完成的新增和存量商戶將無法使用「APP支付」與「Native 支付」產品功能。而官方「直連」通道不受影響。所謂的App支付是指商戶通過在移動端應用App中集成開放SDK調起微信支付模塊來完成支付,適用於在移動端App中集成微信支付功能的場景。
  • php如何實現微信小程序支付及退款
    支付步驟前端請求支付後端請求微信伺服器後端接受微信伺服器返回數據微信的大概支付流程就是這樣。以下是PHP語法的微信支付類,可以比照上面的步驟介紹,加深理解。在需要支付時,直接傳入參數實例化此類再調用類的 pay 方法即可。
  • 微信支付,紅了!
    文案君(MrCopywriter)隨著國人消費水平的不斷提高春節境外遊已經成為中國消費者非常熱衷且普遍的一種消費方式了提到消費自然離不開支付而一向低調的微信支付在境外投放了一波春節廣告先一起來看看微信支付2019春節賀歲廣告片
  • 還能在微信支付裡面用!
    ④如果手機沒有網絡,還可以使用碰一碰的離線支付,會調用手機中的NFC功能,所以沒有NFC的手機是不能使用的。⑤另外,在開通微眾銀行數字人民幣錢包以後,將錢包升級為三類以後,就可以添加到微信支付裡面,這樣在使用微信支付的時候也可以直接調用數字人民幣裡面的錢。
  • 微信公眾號怎麼申請微信支付
    現在做微商城大部分都是需要申請微信支付的,有很多人不是特別了解微信公眾號支付該怎麼申請才能一次性通過,接下來小編就給大家講下關於微信支付申請的一些知識