Q:翻看了微信支付的api沒發現支持h5調支付接口的狀況(微信js除外),而後卻發現美團的支付成功調用了,這是怎麼實現的?php
A:web
使用微信H5支付便可。
H5支付經過URL調起微信APP,不涉及到應用簽名,可解決一次申請給多款APP使用的問題,看看如今遊戲分發行業就知道了。api
如今從官網申請到的APP支付(即經過SDK調起微信APP),若是適用在公司只有幾款APP的狀況,徹底沒問題。可是若是一家公司有幾十幾百款APP的話,使用APP支付就不合適了。(APP支付要求申請APPID,但每家公司主體只能申請10個APPID,若是該公司有100款APP,意味着要註冊10家公司,而H5支付是不須要APPID的)瀏覽器
H5支付如何申請?
微信官網如今只是放了H5支付的文檔,連接:【微信支付】開發者文檔,可是並無開放H5支付的申請,因此通常的公司目前從微信官網是沒法申請H5支付的,那麼從哪裏能夠申請到呢?
一、銀行,好比中信銀行、民生銀行、興業銀行。
二、銀行受理機構,好比這家剛剛賣了20億的威富通。
此外,還能夠經過一些聚合支付提供商或者第三方支付公司申請到。聚合支付好比ping++,愛貝,還有一些提供的二清的,怕題主也不敢用吧。第三方支付的話,匯元網、如今支付可申請到。
價格的話,小商戶基本在1%以上,大商戶的話1%下,T+1結算。據悉,杭州中信對大商戶可作到8%,T+1結算。安全
爲何經過銀行或者受理機構可申請,受理機構是個什麼鬼?
這與微信官方發展策略有關,微信官網一直不開放H5支付真實緣由,我也一直很想知道。微信在與支付寶競爭中,採起的與支付寶大相徑庭的政策,即經過銀行拓展商戶,最早找到的就是中信總行,中信總行落地在深圳分行。微信
微信拓展商戶,除了從官網獲客外,還經過如下三種方式:
一、普通代理,如今在官網仍能夠申請到,以線下主掃和被掃居多。普通代理在開始的時候,發展了不少二清代理模式,如今差很少都被清掉了。
二、第三方支付轉接結算模式,即由第三方支付爲商戶清算。嚴格來說,違規作法,第三方支付不能接第三方支付。不知道如今這種怎麼樣了。
三、銀行轉接清算模式,由銀行發展商戶,銀行負責商戶的進件與審覈,清算方面,財付通清算到銀行後,由銀行清算給商戶。如今是除了官網外,微信商戶進件量和交易量最大的一種,包括線下的主掃、被掃和線上的APP、H五、公衆號,PC掃碼。網絡
受理機構是什麼?
銀行的軟件服務商,具體來講,就是銀行要發展商戶,須要一套系統用來處理商戶的進件、交易轉接、商戶對帳、清結算等。銀行固然不會本身去開發,就和機構合做,由機構開發,兩者共同發展商戶,兩方分潤。異步
銀行和受理機構分別有哪些?
一、銀行
中信銀行,分中信總行和杭州分行,中信總行的微信落地在深圳分行。
民生,最出名的廈門民生
興業,福州興業和廣州興業作的很是好。
浦發,線下的比較多,線上的不多見到
據說還有渤海銀行,主要是天津分行,固然還有其餘一些銀行也在發展。
二、受理機構
最大的就是威富通了,財付通背景,威富通爲多家銀行提供系統,20億已賣。樓上那位說市面上微信都是走他們家的應該就是威富通的了。微信支付
若是不想經過H5支付,要解決應用內簽名的話,就有點走偏門了,好比我知道的有:
一、本身作一個SDK,每次支付時候經過APP調用該SDK,再由該SDK調用微信,這體驗可想而知。
二、將微信SDK作到手機應用底層去,跟1講到的SDK相似,體驗稍好。不過只有手機廠商能作到。網站
若是您是使用瀏覽器的移動網頁進行支付,那就是調用微信H5支付,若是是使用APP客戶端進行支付,那就要調用微信APP支付。
H5支付是指商戶在微信客戶端外的移動端網頁展現商品或服務,用戶在前述頁面確認使用微信支付時,商戶發起本服務呼起微信客戶端進行支付。主要用於觸屏版的手機瀏覽器請求微信支付的場景。能夠方便的從外部瀏覽器喚起微信支付。順便提醒一下,H5支付不建議在APP端使用,如須要在APP中使用微信支付,請接微信APP支付。
登陸商戶平臺-->產品中心-->個人產品-->支付產品-->H5支付
商戶側
要求商戶已有H5商城網站,而且已通過ICP備案。經過微信H5支付能夠實如今非微信瀏覽器(如QQ瀏覽器、谷歌瀏覽器、Safari等)中使用微信支付的場景。
用戶側
步驟(1):用戶從非微信瀏覽器的站點導航進入商戶H5網頁,用戶挑選需購買商品,選擇微信支付發起購買流程。
步驟(2):進入微信客戶端確認交易,輸入支付密碼。
步驟(3):支付成功,用戶收到支付憑證,同時商戶後臺收到支付成功的通知。
一、用戶在商戶側完成下單,使用微信支付進行支付;
二、由商戶後臺向微信支付發起下單請求,調用統一下單接口,交易類型trade_type=MWEB;
三、統一下單接口返回支付相關參數給商戶後臺,如支付跳轉url(參數名「mweb_url」),商戶經過mweb_url調起微信支付中間頁;
四、中間頁進行H5權限的校驗,安全性檢查;
五、如支付成功,商戶後臺會接收到微信側的異步通知;
六、用戶在微信支付收銀臺完成支付或取消支付,返回商戶頁面(默認爲返回支付發起頁面);
七、商戶在展現頁面,引導用戶主動發起支付結果的查詢;
八、商戶後臺判斷是否接到收微信側的支付結果通知,如沒有,後臺調用咱們的訂單查詢接口確認訂單狀態;
十、展現最終的訂單支付結果給用戶。
一、回調頁面
正常流程用戶支付完成後會返回至發起支付的頁面,如需返回至指定頁面,則能夠在MWEB_URL後拼接上redirect_url參數,來指定回調頁面。
如,您但願用戶支付完成後跳轉至https://www.wechatpay.com.cn,則能夠作以下處理:
假設您經過統一下單接口獲到的MWEB_URL= https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096
注意事項:
(1)需對redirect_url進行urlencode處理
(2)因爲設置redirect_url後,回跳指定頁面的操做可能發生在:1,微信支付中間頁調起微信收銀臺後超過5秒 2,用戶點擊「取消支付「或支付完成後點「完成」按鈕。所以沒法保證頁面回跳時,支付流程已結束,因此商戶設置的redirect_url地址不能自動執行查單操做,應讓用戶去點擊按鈕觸發查單操做。
(1)商戶側統一下單傳的終端IP(spbill_create_ip)與用戶實際調起支付時微信側檢測到的終端IP不一致致使的,這個問題通常是商戶在統一下單時沒有傳遞正確的終端IP到spbill_create_ip致使。
(2). 統一下單與調起支付時的網絡有變更,如統一下單時是WIFI網絡,下單成功後切換成4G網絡再調起支付,這樣可能會引起咱們的正常攔截,請保持網絡環境一致的狀況下從新發起支付流程。
(1)當前調起H5支付的referer爲空致使,通常是由於直接訪問頁面調起H5支付,請按正常流程進行頁面跳轉後發起支付,或自行抓包確認referer值是否爲空。
(2)若是是APP裏調起H5支付,須要在webview中手動設置referer。
(1)當前調起H5支付的域名(微信側從referer中獲取)與申請H5支付時提交的受權域名不一致,如需添加或修改受權域名,請登錄商戶號對應的商戶平臺--"產品中心"--"開發配置"自行配置 。
(2)若是設置了回跳地址redirect_url,請確認設置的回跳地址的域名與申請H5支付時提交的受權域名是否一致 。
統一下單返回的MWEB_URL生成後,有效期爲5分鐘,如超時請從新生成MWEB_URL後再發起支付。
H5支付不能直接在微信客戶端內調起,請在外部瀏覽器調起。