web 支付
(一)目前支付有兩種主流方式
1. 支付寶支付 2. 微信支付
(二)微信支付
1. 微信支付
微信支付分為多種情況
(1)付款碼支付
付款碼支付是指使用者展示微信錢包內的“付款碼”給商戶系統掃描後直接完成支付
(2)小程式支付
小程式支付是指商戶通過呼叫微信支付小程式支付介面,在微信小程式平臺內實現支付功能;使用者開啟商家助手小程式下單,輸入支付密碼並完成支付後,返回商家小程式
(3)APP支付
APP支付是指商戶通過在移動端應用APP中整合開放SDK調起微信支付模組來完成支付。適用於在移動端APP中整合微信支付功能的場景。
(4)H5支付
H5支付是指商戶在微信客戶端外的移動端網頁展示商品或服務,使用者在前述頁面確認使用微信支付時,商戶發起本服務呼起微信客戶端進行支付。主要用於觸屏版的手機瀏覽器請求微信支付的場景。可以方便的從外部瀏覽器喚起微信支付。
(5)刷臉支付
刷臉支付是指使用者在刷臉裝置前通過攝像頭刷臉、識別身份後進行的一種支付方式,安全便捷。
微信支付接入入文件:https://pay.weixin.qq.com/wiki/doc/api/index.html,選擇接入的型別,主要看 API列表 和 支付實踐
呼叫微信介面支付的時候,需要前置條件,比如 註冊微信公眾平臺、商戶號等等
(三)呼叫支付介面
url 介面連結是 微信已經給出的,現在要做的就是 將相應的引數整理好傳過去 引數值用XML轉義即可
const reqData = `
<xml>
<appid>${公眾賬號ID}</appid>
<mch_id>${商戶號}</mch_id>
<nonce_str>${隨機字串}</nonce_str>
<notify_url>${通知地址}</notify_url>
<openid>${使用者標識}</openid>
<out_trade_no>${商戶訂單號}</out_trade_no>
<spbill_create_ip>${終端IP}</spbill_create_ip>
<total_fee>${標價金額}</total_fee>
<trade_type>${交易型別}</trade_type>
<sign>${簽名}</sign>
</xml>`
// 訂單總金額,單位為分
以上就是模擬的傳引數資料,其中比較複雜的是簽名演算法,通過簽名演算法生成簽名
簽名演算法規則:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_3
使用 axios 發起請求的時候,需要指定
Content-type: 'application/xml'
然後就傳送請求 獲取結果就行了,返回的結果是xml 格式的 比如這種
<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>
我們需要把 xml 轉化成 js 格式的,來獲取欄位
xml 轉化成 js 需要藉助外掛: xml2js
(四)生成支付二維碼
如果 以支付介面返回欄位 return_code 和 result_code 不都是 success,就提示使用者 支付失敗資訊
如果 return_code 和 result_code 都為SUCCESS的時候,會返回一個 code_url,二維碼連結
二維碼生成外掛:qrcode.js (引入生成二維碼)
(五)支付成功通知
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_7&index=8
商戶系統對於支付結果通知的內容一定要做簽名驗證,介面返回的簽名和傳入的簽名呢是否一致!!
並校驗返回的訂單金額是否與商戶側的訂單金額一致,防止資料洩漏導致出現“假通知”,造成資金損失。
如果 全都校驗通過,則改變訂單狀態~
相關文章
- web端網站接入支付寶支付過程Web網站
- 支付處理器 API :將你的支付應用帶到 Web 中來APIWeb
- ? 你可能還不知道的 Web 支付流程標準化Web
- 微信支付 WEB APP 配置資訊流程(個人筆記)WebAPP筆記
- 微信支付,支付寶支付
- 支付寶支付
- 關於微信支付,支付寶支付
- PHP-Laravel支付寶支付和微信支付PHPLaravel
- java對接支付寶支付(手機網站支付)Java網站
- 支付寶alipay移動支付
- 支付寶、微信支付(.NET)
- vue-仿支付寶支付Vue
- Django呼叫支付寶支付介面Django
- Java接入支付寶支付教程Java
- XorPay 個人支付平臺【支援個人微信支付和支付寶支付介面】
- Android 接入微信支付寶支付Android
- pc端實現支付寶支付
- 支付寶微信合單支付
- Java 支付寶支付,退款,單筆轉賬到支付寶賬戶(支付寶訂單退款)Java
- pay-spring-boot 開箱即用的Java支付模組,整合支付寶支付、微信支付SpringbootJava
- android 整合微信支付和支付寶支付其實很簡單Android
- nodejs微信支付之掃碼支付NodeJS
- 支付那些事:支付清算體系
- 微信、支付寶支付那點事
- 手機APP如何接入支付寶支付APP
- flutter 支付寶APP支付 (包含後臺)FlutterAPP
- 支付寶裡如何使用網銀支付?
- iOS使用Stripe整合支付寶Alipay支付iOS
- go-zero之App支付寶支付GoAPP
- Django對接支付寶Alipay支付介面Django
- java實現沙箱測試環境支付寶支付(demo)和整合微信支付和支付寶支付到springmvc+spring+mybatis環境全過程(支付寶和微信支付、附原始碼)JavaSpringMVCMyBatis原始碼
- 支付寶支付產品介面文件地址和支付寶代金券理解
- IDEA支付寶小程式開發流程——支付Idea
- 支付寶支付回撥觸發問題
- 基於 golang 的支付寶支付小案例Golang
- SpringMVC 實現支付寶支付功能(沙箱環境)SpringMVC
- 關於支付寶以及微信支付的整合
- Laravel 搞定支付寶和微信掃碼支付Laravel