微信支付

一肪笋、公眾號支付

①開發(fā)步驟

1谈截、設(shè)置測試目錄

在微信公眾平臺設(shè)置加酵,欄目見圖1.1。支付測試狀態(tài)下,設(shè)置測試目錄,測試人的微信號添加到白名單,發(fā)起支付的頁面目錄必須與設(shè)置的精確匹配京景。并將支付鏈接發(fā)到對應(yīng)的公眾號會話窗口中才能正常發(fā)起支付測試。注意正式目錄一定不能與測試目錄設(shè)置成一樣骗奖,否則支付會出錯确徙。


圖1.1 微信內(nèi)網(wǎng)頁支付設(shè)置欄目入口
圖1.1 微信內(nèi)網(wǎng)頁支付設(shè)置欄目入口

2、設(shè)置正式支付目錄

根據(jù)圖中欄目順序進入修改欄目执桌,勾選JSAPI網(wǎng)頁支付開通該權(quán)限鄙皇,并配置好支付授權(quán)目錄,該目錄必須是發(fā)起支付的頁面的精確目錄仰挣,子目錄下無法正常調(diào)用支付伴逸。具體界面如圖1.2所示:


圖1.2 微信網(wǎng)頁內(nèi)支付接口授權(quán)目錄設(shè)置
圖1.2 微信網(wǎng)頁內(nèi)支付接口授權(quán)目錄設(shè)置

②業(yè)務(wù)流程

業(yè)務(wù)流程時序圖

商戶系統(tǒng)和微信支付系統(tǒng)主要交互:
1、商戶server調(diào)用統(tǒng)一下單接口請求訂單膘壶,api參見公共api【統(tǒng)一下單API
2错蝴、商戶server接收支付通知,api參見公共api【支付結(jié)果通知API
3颓芭、商戶server查詢支付結(jié)果顷锰,api參見公共api【查詢訂單API

③獲取微信版本號

由于微信5.0版本后才加入微信支付模塊,低版本用戶調(diào)用微信支付功能將無效亡问。因此官紫,建議商戶通過user agent來確定用戶當前的版本號后再調(diào)用支付接口。以iPhone版本為例玛界,可以通過user agent可獲取如下微信版本示例信息:

"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X)
AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206 MicroMessenger/5.0"

其中5.0為用戶安裝的微信版本號万矾,商戶可以解析以上HTTP頭,獲取到微信版本號是否高于或者等于5.0慎框。

④網(wǎng)頁端調(diào)起支付API

1、目前微信支付jsapi支付支持兩種調(diào)用方式:

1. WeixinJSBridge調(diào)用模式:
通過WeixinJSBridge調(diào)用getBrandWCPayRequest發(fā)起支付后添,該方式支持普通商戶以及服務(wù)商子商戶
2. jssdk調(diào)用模式:
通過jssdk調(diào)用chooseWXPay發(fā)起支付笨枯,該方式支持普通商戶

注意:如果調(diào)用方為普通商戶,可任意采用上述兩種調(diào)用方式,如果調(diào)用方為服務(wù)商子商戶馅精,需要采用WeixinJSBridge的調(diào)用方式

3严嗜、WeixinJSBridge調(diào)用模式
在微信瀏覽器里面打開H5網(wǎng)頁中執(zhí)行JS調(diào)起支付。接口輸入輸出數(shù)據(jù)格式為JSON洲敢。
注意:WeixinJSBridge內(nèi)置對象在其他瀏覽器中無效漫玄。
列表中參數(shù)名區(qū)分大小,大小寫錯誤簽名驗證會失敗压彭。getBrandWCPayRequest參數(shù)以及返回值定義見圖7.1睦优,返回列表值說明見圖7.2。
表7.1 網(wǎng)頁端接口參數(shù)列表:

名稱 變量名 必填 類型 示例值 描述
公眾號id appId String(16) wx8888888
888888888
商戶注冊具有支付權(quán)限的公眾號成功后即可獲得
時間戳 timeStamp String(32) 1414561699 當前的時間壮不,其他詳見時間戳規(guī)則
隨機字符串 nonceStr String(32) 5K8264ILTKCH16CQ2
502SI8ZNMTM67VS
隨機字符串汗盘,不長于32位。推薦隨機數(shù)生成算法
訂單詳情擴展字符串 package String(128) prepay_id=123456789 統(tǒng)一下單接口返回的prepay_id參數(shù)值询一,提交格式如:prepay_id=***
簽名方式 signType String(32) MD5 簽名算法隐孽,暫支持MD5
簽名 paySign String(64) C380BEC2BFD727A4
B6845133519F3AD6
簽名,詳見簽名生成算法

表7.2 網(wǎng)頁內(nèi)支付接口err_msg返回結(jié)果值說明:

返回值 描述
get_brand_wcpay_request:ok 支付成功
get_brand_wcpay_request:cancel 支付過程中用戶取消
get_brand_wcpay_request:fail 支付失敗

注:JS API的返回結(jié)果
get_brand_wcpay_request:ok僅在用戶成功完成支付時返回健蕊。
由于前端交互復(fù)雜菱阵,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以統(tǒng)一處理為用戶遇到錯誤或者主動放棄,不必細化區(qū)分缩功。
示例代碼如下:

 function onBridgeReady({   
     WeixinJSBridge.invoke(       
         'getBrandWCPayRequest', { 
                "appId" : "wx2421b1c4370ec43b",     //公眾號名稱晴及,由商戶傳入
                "timeStamp":" 1395712654",         //時間戳,自1970年以來的秒數(shù)
                "nonceStr" : "e61463f8efa94090b1f366cccfbbb444", //隨機串
                "package" : "prepay_id=u802345jgfjsdfgsdg888", 
                "signType" : "MD5",         //微信簽名方式:
                "paySign" : "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信簽名  
          },   
          function(res){ 
               // 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg將在用戶支付成功后返回    
               //ok掂之,但并不保證它絕對可靠抗俄。                
               if(res.err_msg == "get_brand_wcpay_request: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();
 }

4、jssdk調(diào)用模式
在微信瀏覽器里面打開H5網(wǎng)頁中執(zhí)行JS調(diào)起支付世舰。接口輸入輸出數(shù)據(jù)格式為JSON动雹。
列表中參數(shù)名區(qū)分大小,大小寫錯誤簽名驗證會失敗跟压。
chooseWXPay參數(shù)以及返回值定義見圖7.3胰蝠,返回列表值說明見圖7.4

圖7.3
圖7.3

圖7.4
圖7.4

表7.3 網(wǎng)頁端接口參數(shù)列表:
注意:jssdk中timestamp均為小寫

名稱 變量名 必填 類型 示例值 描述
時間戳 timestamp String(32) 1414561699 當前的時間震蒋,其他詳見時間戳規(guī)則
隨機字符串 nonceStr String(32) 5K8264ILTKCH16CQ
2502SI8ZNMTM67VS
隨機字符串茸塞,不長于32位。推薦隨機數(shù)生成算法
訂單詳情擴展字符串 package String(128) prepay_id=123456789 統(tǒng)一下單接口返回的prepay_id參數(shù)值查剖,提交格式如:prepay_id=***
簽名方式 signType String(32) MD5 簽名算法钾虐,暫支持MD5
簽名 paySign String(64) C380BEC2BFD727A4
B6845133519F3AD6
簽名,詳見簽名生成算法

表7.4 網(wǎng)頁內(nèi)支付接口err_msg返回結(jié)果值說明:

返回值 描述
get_brand_wcpay_request:ok 支付成功
get_brand_wcpay_request:cancel 支付過程中用戶取消
get_brand_wcpay_request:fail 支付失敗

注:JS API的返回結(jié)果get_brand_wcpay_request:ok僅在用戶成功完成支付時返回笋庄。由于前端交互復(fù)雜效扫,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以統(tǒng)一處理為用戶遇到錯誤或者主動放棄倔监,不必細化區(qū)分。
示例代碼如下:

wx.config({   
   // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來菌仁,若要查看傳入的參數(shù)浩习,
   // 可以在pc端打開,參數(shù)信息會通過log打出济丘,僅在pc端時才會打印谱秽。
   debug: true,    
   appId: 'wx2421b1c4370ec43b', // 必填,公眾號的唯一標識
   timestamp: 1414561699, // 必填摹迷,生成簽名的時間戳
   nonceStr: '5K8264ILTKCH16CQ2502SI8ZNMTM67VS', // 必填疟赊,生成簽名的隨機串  
   signature: 'C380BEC2BFD727A4B6845133519F3AD6',// 必填,簽名泪掀,見附錄1
   jsApiList: ['chooseWXPay'] // 必填听绳,需要使用的JS接口列表,所有JS接口列表見附錄2
});
 wx.ready(function(){
    wx.chooseWXPay({ 
      timestamp: 1395712654, // 支付簽名時間戳 
      nonceStr: 'e61463f8efa94090b1f366cccfbbb444', // 支付簽名隨機串异赫,不長于 32 位 
      //統(tǒng)一支付接口返回的prepay_id參數(shù)值椅挣,提交格式如:prepay_id=**\*  
      package: 'prepay_id=u802345jgfjsdfgsdg888', 
      signType: 'MD5', // 簽名方式,默認為'SHA1'塔拳,使用新版支付需傳入'MD5' 
      paySign: '70EA570631E4BB79628FBCA90534C63FF7FADD89', // 支付簽名 
       success: function (res) {            // 支付成功后的回調(diào)函數(shù)  
          if(res.err_msg == "get_brand_wcpay_request:ok" ) {
          } // 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg將在用戶支付成功后返回 ok鼠证,但并不保證它絕對可靠。        
       }    
   });
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靠抑,一起剝皮案震驚了整個濱河市量九,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颂碧,老刑警劉巖荠列,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異载城,居然都是意外死亡肌似,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門诉瓦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來川队,“玉大人,你說我怎么就攤上這事睬澡」潭睿” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵煞聪,是天一觀的道長斗躏。 經(jīng)常有香客問我,道長昔脯,這世上最難降的妖魔是什么瑟捣? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任馋艺,我火速辦了婚禮栅干,結(jié)果婚禮上迈套,老公的妹妹穿的比我還像新娘。我一直安慰自己碱鳞,他們只是感情好桑李,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窿给,像睡著了一般贵白。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上崩泡,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天禁荒,我揣著相機與錄音,去河邊找鬼角撞。 笑死呛伴,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的谒所。 我是一名探鬼主播热康,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼劣领!你這毒婦竟也來了姐军?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤尖淘,失蹤者是張志新(化名)和其女友劉穎奕锌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體村生,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡惊暴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了梆造。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缴守。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖镇辉,靈堂內(nèi)的尸體忽然破棺而出屡穗,到底是詐尸還是另有隱情,我是刑警寧澤忽肛,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布村砂,位于F島的核電站,受9級特大地震影響屹逛,放射性物質(zhì)發(fā)生泄漏础废。R本人自食惡果不足惜汛骂,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望评腺。 院中可真熱鬧帘瞭,春花似錦、人聲如沸蒿讥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芋绸。三九已至媒殉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摔敛,已是汗流浹背廷蓉。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留马昙,地道東北人桃犬。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像给猾,于是被迫代替她去往敵國和親疫萤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在微信服務(wù)號開發(fā)的時候經(jīng)常會遇到微信支付的功能實現(xiàn)敢伸,通過實際經(jīng)驗自己總結(jié)了一下扯饶,前端在H5頁面調(diào)起微信支付有兩種辦...
    溫室尋荒涼閱讀 72,635評論 3 41
  • 自己總結(jié)的微信支付寶支付流程和注意點: 準備工作: 需要公司的營業(yè)執(zhí)照,稅務(wù)信息池颈,等老板的身份證信息等尾序,我記得,用...
    Www劉閱讀 18,567評論 2 50
  • 準備工作: 需要公司的營業(yè)執(zhí)照躯砰,稅務(wù)信息每币,等老板的身份證信息等,我記得琢歇,用這些材料兰怠,去支付寶注冊一個商家賬戶(審核...
    Hevin_Chen閱讀 6,806評論 0 9
  • 白鹿原在成為小說之前,僅是一個普通的地名李茫,而且揭保,還是那種流傳于口耳之間,不在行政區(qū)劃中得見的地名魄宏,九十年代秸侣,陳忠實...
    王延民閱讀 1,223評論 4 0
  • 不可否認,虛擬現(xiàn)實時代已經(jīng)來臨了。越來越多的廠商開始投身VR行業(yè)味榛,越來越多的產(chǎn)品出現(xiàn)在我們眼前⊥旨幔現(xiàn)如今,VR的關(guān)注...
    小太陽會發(fā)光諾閱讀 404評論 0 0