国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

所在位置: 首頁(yè) > 營(yíng)銷(xiāo)資訊 > 網(wǎng)站運(yùn)營(yíng) > 微信支付——后臺(tái)對(duì)接

微信支付——后臺(tái)對(duì)接

時(shí)間:2023-05-21 10:34:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-05-21 10:34:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)

微信支付——后臺(tái)對(duì)接:
最近在做支付平臺(tái)的項(xiàng)目,承接公司業(yè)務(wù)系統(tǒng)與第三方支付平臺(tái)的對(duì)接任務(wù),主要涉及微信支付、支付寶支付以及理房通支付等第三方平臺(tái)。微信支付作為后起之秀,市場(chǎng)占有率大有趕超支付寶之勢(shì),其復(fù)雜多樣的社交屬性使支付場(chǎng)景豐富而深入。以下主要以業(yè)務(wù)后臺(tái)對(duì)接的視角,對(duì)微信開(kāi)發(fā)文檔做了些總結(jié),過(guò)濾出我們需要關(guān)注的點(diǎn)。(前端及App端對(duì)接請(qǐng)查官方資料)

一、名詞解釋

商戶(hù)號(hào):微信支付分配的商戶(hù)號(hào)。支付審核通過(guò)后,申請(qǐng)人郵箱會(huì)收到騰訊下發(fā)的開(kāi)戶(hù)郵件, 郵件中包含商戶(hù)平臺(tái)的賬號(hào)、密碼等重要信息。

appid:商戶(hù)通過(guò)微信管理后臺(tái),申請(qǐng)服務(wù)號(hào)、訂閱號(hào)、小程序或APP應(yīng)用成功之后,微信會(huì)為每個(gè)應(yīng)用分配一個(gè)唯一標(biāo)識(shí)id。

openid:用戶(hù)在公眾號(hào)內(nèi)的身份標(biāo)識(shí),一旦確認(rèn),不會(huì)再變;同一用戶(hù)在不同公眾號(hào)擁有不同的openid。商戶(hù)后臺(tái)系統(tǒng)通過(guò)登錄授權(quán)、支付通知、查詢(xún)訂單等API可獲取到用戶(hù)的openid。主要用途是判斷同一個(gè)用戶(hù),對(duì)用戶(hù)發(fā)送客服消息、模版消息等。

微信管理后臺(tái):微信有很多管理平臺(tái),容易混淆,我們主要關(guān)注下面三個(gè)平臺(tái):
1. 微信公眾平臺(tái) 微信公眾賬號(hào)申請(qǐng)入口和管理后臺(tái)。商戶(hù)可以在公眾平臺(tái)提交基本資料、業(yè)務(wù)資料、財(cái)務(wù)資料申請(qǐng)開(kāi)通微信支付功能。帳號(hào)分類(lèi):服務(wù)號(hào)、訂閱號(hào)、小程序、企業(yè)微信(也叫企業(yè)號(hào),類(lèi)似于企業(yè)OA)。
2. 微信商戶(hù)平臺(tái) 微信支付相關(guān)的商戶(hù)功能集合,包括參數(shù)配置、支付數(shù)據(jù)查詢(xún)與統(tǒng)計(jì)、在線(xiàn)退款、代金券或立減優(yōu)惠運(yùn)營(yíng)等功能。
3. 微信開(kāi)放平臺(tái) 商戶(hù)APP接入微信支付開(kāi)放接口的申請(qǐng)入口,通過(guò)此平臺(tái)可申請(qǐng)微信APP支付。

簽名:商戶(hù)后臺(tái)和微信支付后臺(tái)根據(jù)相同的密鑰和算法生成一個(gè)結(jié)果,用于校驗(yàn)雙方身份合法性。簽名的算法 由微信支付制定并公開(kāi),常用的簽名方式有:MD5、SHA1、SHA256、HMAC等。

密鑰:作為簽名算法中的鹽,需要在微信平臺(tái)及商戶(hù)業(yè)務(wù)系統(tǒng)各存一份,要妥善保管。key設(shè)置路徑:微信商戶(hù)平臺(tái)(http://pay.weixin.qq.com)-->賬戶(hù)設(shè)置-->API安全-->密鑰設(shè)置。

二、支付流程與場(chǎng)景

一個(gè)完整的支付流程如下:用戶(hù)在業(yè)務(wù)系統(tǒng)下完單,進(jìn)入收銀臺(tái)頁(yè)面;選擇微信支付,業(yè)務(wù)后臺(tái)將業(yè)務(wù)單信息傳給微信后臺(tái),完成預(yù)下單;拿到預(yù)下單結(jié)果后,收銀臺(tái)喚起微信交互頁(yè)面,用戶(hù)輸密碼確認(rèn)支付;微信后臺(tái)完成支付邏輯,并通知業(yè)務(wù)后臺(tái),完成業(yè)務(wù)端邏輯。目前微信支持多種支付場(chǎng)景,重點(diǎn)關(guān)注掃碼支付與公眾號(hào)支付。
1. 刷卡支付 申請(qǐng)流程

用戶(hù)展示微信錢(qián)包內(nèi)的“刷卡條碼/二維碼”給商戶(hù)系統(tǒng)掃描后直接完成支付的模式。主要應(yīng)用線(xiàn)下面對(duì)面收銀的場(chǎng)景。大家比較感興趣的是,收銀員掃了一下我們的微信條形碼,卡上的錢(qián)是怎么被扣掉的呢?
免密支付流程



2. 掃碼支付 申請(qǐng)流程

商戶(hù)系統(tǒng)按微信支付協(xié)議生成支付二維碼,用戶(hù)再用微信“掃一掃”完成支付的模式。該模式適用于PC網(wǎng)站支付、實(shí)體店單品或訂單支付、媒體廣告支付等場(chǎng)景。按二維碼的含義分為兩個(gè)模式。(二維碼知識(shí))




3. APP支付 申請(qǐng)流程

又稱(chēng)移動(dòng)端支付,是商戶(hù)通過(guò)在移動(dòng)端應(yīng)用APP中集成開(kāi)放SDK調(diào)起微信支付模塊完成支付的模式。
4. 公眾號(hào)支付 申請(qǐng)流程

公眾號(hào)支付是用戶(hù)在微信中打開(kāi)商戶(hù)的H5頁(yè)面,商戶(hù)在H5頁(yè)面通過(guò)調(diào)用微信支付提供的JSAPI接口調(diào)起微信支付模塊完成支付。應(yīng)用場(chǎng)景有:
業(yè)務(wù)流程



注意項(xiàng)

5. H5支付

H5支付是指商戶(hù)在微信客戶(hù)端外的移動(dòng)端網(wǎng)頁(yè)展示商品或服務(wù),用戶(hù)在前述頁(yè)面確認(rèn)使用微信支付時(shí),商戶(hù)發(fā)起本服務(wù)呼起微信客戶(hù)端進(jìn)行支付。主要用于觸屏版的手機(jī)瀏覽器請(qǐng)求微信支付的場(chǎng)景??梢苑奖愕膹耐獠繛g覽器喚起微信支付。
申請(qǐng)流程:使用注冊(cè)微信支付時(shí)登記的郵箱,將公司名稱(chēng)+商戶(hù)號(hào)+聯(lián)系方式 以及對(duì)應(yīng)H5支付應(yīng)用場(chǎng)景說(shuō)明發(fā)送到 wxpaySP@tencent.com
6. 小程序支付

用戶(hù)在微信小程序中使用微信支付的場(chǎng)景,接口對(duì)接時(shí)與公眾號(hào)支付很相似。

三、接口對(duì)接

1. 對(duì)接方式

微信支付開(kāi)發(fā)文檔上將接口分為普通商戶(hù)版和服務(wù)商版。所謂普通商戶(hù),是指有實(shí)際業(yè)務(wù)需求,要對(duì)接微信支付的廣大商戶(hù);而服務(wù)商,是指那些有開(kāi)發(fā)能力的第三方服務(wù)提供商,它們封裝微信支付高級(jí)接口,為普通商戶(hù)提供支付申請(qǐng)、技術(shù)開(kāi)發(fā)、機(jī)具調(diào)試、活動(dòng)營(yíng)銷(xiāo)等全生態(tài)鏈服務(wù)支持,以簡(jiǎn)化對(duì)接流程。因此,普通商戶(hù)對(duì)接微信支付平臺(tái)有兩個(gè)選擇:直接對(duì)接微信平臺(tái) 或 對(duì)接服務(wù)商平臺(tái)。
2. 接口文檔


服務(wù)商對(duì)外提供的api,入?yún)⒓俺鰠⒑臀⑿牌胀ㄉ虘?hù)版api大體相同,只是返回參數(shù)里多了一些包裝數(shù)據(jù)。所以我們關(guān)注普通商戶(hù)版api即可,以下的規(guī)則及api均來(lái)自于微信官方普通商戶(hù)版接口文檔。

2.1 接口規(guī)范




2.2 API列表

下面列出了幾個(gè)比較關(guān)鍵的API及其參數(shù)要求,入?yún)⒓胺祬⒅涣谐隽吮貍骰蛐枰⒁獾淖侄?,完整參?shù)請(qǐng)以官方文檔為準(zhǔn)。為安全起見(jiàn),無(wú)論是商戶(hù)后臺(tái)請(qǐng)求微信平臺(tái),還是微信平臺(tái)請(qǐng)求商戶(hù)后臺(tái),也無(wú)論是API的入?yún)?,還是返參,都要遵守發(fā)起端加簽名,接收端校驗(yàn)簽名的規(guī)則。比如商戶(hù)端請(qǐng)求微信平臺(tái)時(shí),會(huì)對(duì)入?yún)⑿畔⒓雍灻?,微信平臺(tái)接到請(qǐng)求,會(huì)先校驗(yàn)簽名,校驗(yàn)通過(guò)并處理完,微信平臺(tái)再將返回參數(shù)按同一算法加簽名,商戶(hù)端接收響應(yīng)時(shí)也需要先校驗(yàn)簽名,校驗(yàn)通過(guò)再做業(yè)務(wù)處理。 因此所有API中,無(wú)論是入?yún)⑦€是返回參數(shù)都包含如下通用字段。




2.2.1 統(tǒng)一下單 /pay/unifiedorder

除了刷卡支付(刷卡支付有單獨(dú)的支付接口,不調(diào)用統(tǒng)一下單接口),其它的支付方式都需要調(diào)用統(tǒng)一下單接口。商戶(hù)系統(tǒng)先調(diào)用該接口在微信支付服務(wù)后臺(tái)生成預(yù)支付交易單,返回正確的預(yù)支付交易會(huì)話(huà)標(biāo)識(shí)后再按掃碼、JSAPI、APP等不同場(chǎng)景生成交易串調(diào)起支付。

入?yún)⑿畔?/b>

入?yún)⒗?/b>


<xml> <appid>wx2421b1c4370ec43b</appid> <body>JSAPI支付測(cè)試</body> <mch_id>10000100</mch_id> <nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str> <notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url> <openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid> <out_trade_no>1415659990</out_trade_no> <spbill_create_ip>14.23.150.211</spbill_create_ip> <total_fee>1</total_fee> <trade_type>JSAPI</trade_type> <sign>0CB01533B8C1EF103065174F50BCA001</sign></xml>獲取openid

公眾號(hào)支付模式下,統(tǒng)一下單接口必須要傳用戶(hù)的openid,業(yè)務(wù)后臺(tái)獲取openid的步驟如下:
  1. 第三方發(fā)起微信授權(quán)登錄請(qǐng)求,微信用戶(hù)允許授權(quán)第三方應(yīng)用后,微信會(huì)拉起應(yīng)用或重定向到第三方網(wǎng)站,并且?guī)鲜跈?quán)臨時(shí)票據(jù)code參數(shù);
  2. 通過(guò)code參數(shù)加上AppID和AppSecret等,通過(guò)API換取access_token;
  3. 通過(guò)access_token進(jìn)行接口調(diào)用,獲取用戶(hù)基本數(shù)據(jù)資源或幫助用戶(hù)實(shí)現(xiàn)基本操作。
為避免重造輪子,我們使用了公司基礎(chǔ)平臺(tái)組提供的微信接入平臺(tái)——第三方OAuth轉(zhuǎn)接接口, 采用靜默授權(quán)方式獲取用戶(hù)openid。需要提前在基礎(chǔ)平臺(tái)配置應(yīng)用的AppID及AppSecret,并需要他們分配全局唯一的app_name。 關(guān)于OAuth 2.0 授權(quán)協(xié)議,大家可自行了解。

返回參數(shù)

返回結(jié)果有兩個(gè)狀態(tài)碼return_code及result_code,需要理解其各自的含義。return_code表示通信是否成功,當(dāng)其為SUCCESS時(shí),才會(huì)有后續(xù)的返回字段,當(dāng)其為FAIL時(shí),return_msg會(huì)填充錯(cuò)誤信息;而result_code表示業(yè)務(wù)操作是否成功,當(dāng)其為SUCCESS時(shí),才會(huì)返回后續(xù)的業(yè)務(wù)字段(如prepay_id等),當(dāng)其為FAIL時(shí),會(huì)填充err_code及err_code_des等字段。
返參試?yán)?/b>


<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[wx2421b1c4370ec43b]]></appid> <mch_id><![CDATA[10000100]]></mch_id> <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str> <openid><![CDATA[oUpF8uMuAJO_M2pxb1Q9zNjWeS6o]]></openid> <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id> <trade_type><![CDATA[JSAPI]]></trade_type></xml>2.2.2 支付結(jié)果通知

支付成功后,微信會(huì)把相關(guān)支付結(jié)果和用戶(hù)信息發(fā)送給商戶(hù),商戶(hù)需要接收處理,并返回應(yīng)答。如果微信收到商戶(hù)的應(yīng)答不是成功或超時(shí),微信認(rèn)為通知失敗,微信會(huì)通過(guò)一定的策略定期重新發(fā)起通知,盡可能提高通知的成功率,但微信不保證通知最終能成功(因此商戶(hù)端需要定時(shí)去check兩邊待支付單子的狀態(tài))。 (通知頻率為15/15/30/180/1800/1800/1800/1800/3600,單位:秒)。
回調(diào)通知接口對(duì)安全性要求極高,有如下注意點(diǎn):
1. 接口冪等,同樣的通知可能會(huì)多次發(fā)送給商戶(hù)系統(tǒng)。商戶(hù)系統(tǒng)必須保證回調(diào)接口是冪等的,能夠正確處理重復(fù)的通知。
2. 并發(fā)控制,在對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行狀態(tài)檢查和處理之前,要采用數(shù)據(jù)鎖進(jìn)行并發(fā)控制,以避免函數(shù)重入造成的數(shù)據(jù)混亂。
3. 簽名驗(yàn)證,商戶(hù)系統(tǒng)對(duì)于支付結(jié)果通知的內(nèi)容一定要做簽名驗(yàn)證。
4. 金額校驗(yàn),校驗(yàn)返回的訂單金額是否與商戶(hù)側(cè)的訂單金額一致,防止數(shù)據(jù)泄漏導(dǎo)致出現(xiàn)“假通知”,造成資金損失。
接口鏈接

該鏈接由商戶(hù)端提供,通過(guò)【統(tǒng)一下單API】中提交的參數(shù)notify_url設(shè)置,通知url必須為直接可訪(fǎng)問(wèn)的url,不能攜帶參數(shù)。示例:notify_url:“https://pay.weixin.qq.com/wxpay/pay.action
入?yún)⑿畔?/b>

入?yún)⑿畔⑹怯晌⑿牌脚_(tái)整理發(fā)送的,商戶(hù)后端需要接收并解析各字段,做必要的校驗(yàn)。
入?yún)⒗?/b>

<xml> <appid><![CDATA[wx2421b1c4370ec43b]]></appid> <bank_type><![CDATA[CFT]]></bank_type> <mch_id><![CDATA[10000100]]></mch_id> <nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str> <openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid> <out_trade_no><![CDATA[1409811653]]></out_trade_no> <result_code><![CDATA[SUCCESS]]></result_code> <return_code><![CDATA[SUCCESS]]></return_code> <sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign> <time_end><![CDATA[20140903131540]]></time_end> <total_fee>1</total_fee> <trade_type><![CDATA[JSAPI]]></trade_type> <transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id></xml>返回參數(shù)

商戶(hù)后臺(tái)的返回參數(shù)必須是微信支付指定的格式,否則都被微信認(rèn)為通知失敗,會(huì)不斷重試。
返參例子


<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg></xml>2.2.3 申請(qǐng)退款 /secapi/pay/refund

退款有兩種方式,商戶(hù)可以登錄微信商戶(hù)平臺(tái),直接使用管理后臺(tái)的退款功能;另一種則是接口對(duì)接,在商戶(hù)的業(yè)務(wù)系統(tǒng)里發(fā)起退款。 退款時(shí)需要注意的是:
1. 交易時(shí)間超過(guò)一年的訂單無(wú)法提交退款;
2. 微信支付退款支持單筆交易分多次退款,多次退款需要提交原支付訂單的商戶(hù)訂單號(hào)和設(shè)置不同的退款單號(hào)。申請(qǐng)退款總金額不能超過(guò)訂單金額。
3. 每個(gè)支付訂單的部分退款次數(shù)不能超過(guò)50次。
入?yún)⑿畔?/b>

入?yún)⒗?/b>


<xml> <appid>wx2421b1c4370ec43b</appid> <mch_id>10000100</mch_id> <nonce_str>6cefdb308e1e2e8aabd48cf79e546a02</nonce_str> <out_refund_no>1415701182</out_refund_no> <out_trade_no>1415757673</out_trade_no> <refund_fee>1</refund_fee> <total_fee>1</total_fee> <transaction_id></transaction_id> <sign>FE56DD4AA85C0EECA82C35595A69E153</sign></xml>返回參數(shù)

這里需要注意返回參數(shù)里return_code為SUCCESS且result_code也為SUCCESS時(shí),只是說(shuō)明退款申請(qǐng)成功了,并不代表錢(qián)已經(jīng)成功退給用戶(hù)。因此,業(yè)務(wù)端需要通過(guò)退款查詢(xún)接口定時(shí)check退款單的狀態(tài),如果有異常需要報(bào)警出來(lái),以便人工處理。
退款狀態(tài)

關(guān)鍵詞:后臺(tái),支付

74
73
25
news
  • 網(wǎng)站
  • 營(yíng)銷(xiāo)
  • 設(shè)計(jì)
  • 運(yùn)營(yíng)
  • 優(yōu)化
  • 效率
  • 專(zhuān)注
  • 電商
  • 方案
  • 推廣
為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉