20191204 支付後端文檔

JSAPI支付:公衆號接入文檔(支付系統對比.pdf 文檔)

商戶已有H5商城網站,用戶通過消息或掃描二維碼在微信內打開網頁時(公衆號),可以調用微信支付完成下單購買的流程。

 

立即支付---->確認支付---->支付成功

調起微信支付控件,用戶開始輸入支付密碼。密碼驗證通過,支付成功。商戶後臺得到支付成功的通知。

返回商戶頁面,顯示購買成功。該頁面由商戶自定義。

微信支付公衆號下發支付憑證。

 

(1)在網頁通過JavaScript調用getBrandWCPayRequest接口,發起微信支付請求,用戶進入支付流程。

(2)用戶成功支付點擊完成按鈕後,商戶的前端會收到JavaScript的返回值。商戶可直接跳轉到支付成功的靜態頁面進行展示。

(3)商戶後臺收到來自微信開放平臺的支付成功回調通知,標誌該筆訂單支付成功。

(2)和(3)的觸發不保證遵循嚴格的時序。JS API返回值作爲觸發商戶網頁跳轉的標誌,但商戶後臺應該只在收到微信後臺的支付成功回調通知後,才做真正的支付成功的處理。

 

支付服務生產環境現狀

1、單節點部署,沒做高可用:生產環境只有一個payment服務,如果此節點出現問題,整個支付業務失敗;

2、硬件配置信息: 2核8G,但是當前系統上同時運行了其他服務,暫無法評估支付接口TPS。

3、支付類型單一:現在只有微信支付(優惠券支付,但是缺少優惠券使用場景),缺少支付寶支付,銀聯支付等;

4、缺少支付對賬功能,比如每天凌晨計算上一天收款總金額與收款記錄是否一致,不一致則立即進行報警,防止出現盜刷。

5、沒有支付管理後臺,客服暫無法查詢訂單以及支付狀態。

6、下單已經通過唯一索引做了冪等性校驗,防止用戶多次重複下單。

7、所有微信weixin.pay.appid,weixin.pay.key全部都在配置中心,儘量減少開發人員的接觸,保證數據安全

 

JSAPI支付(公衆號支付)

JSAPI支付是用戶在微信中打開商戶的H5頁面,商戶在H5頁面通過調用微信支付提供的JSAPI接口調起微信支付模塊完成支付。應用場景有:

  1. ◆ 用戶在微信公衆賬號內進入商家公衆號,打開某個主頁面,完成支付;
  2. ◆ 用戶的好友在朋友圈、聊天窗口等分享商家頁面連接,用戶點擊鏈接打開商家頁面,完成支付;
  3. ◆ 將商戶頁面轉換成二維碼,用戶掃描二維碼後在微信瀏覽器中打開頁面後完成支付;

APP支付:APP支付又稱移動端支付,是商戶通過在移動端應用APP中集成開放SDK調起微信支付模塊完成支付的模式。

H5支付:H5支付主要是在手機、ipad等移動設備中通過瀏覽器來喚起微信支付的支付產品。

 

微信開放平臺是商戶APP接入微信支付開放接口的申請入口,通過此平臺可申請微信APP支付。

 

微信商戶平臺

微信商戶平臺是微信支付相關的商戶功能集合,包括參數配置、支付數據查詢與統計、在線退款、代金券或立減優惠運營等功能。

平臺入口:http://pay.weixin.qq.com

 

微信支付系統

微信支付系統是指完成微信支付流程中涉及的API接口、後臺業務處理系統、賬務系統、回調通知等系統的總稱。

 

商戶證書:(調用微信支付後臺接口時,需要傳遞當前證書,用戶身份憑據)

商戶證書是微信提供的二進制文件,商戶系統發起與微信支付後臺服務器通信請求的時候,作爲微信支付後臺識別商戶真實身份的憑據。

 

簽名:商戶後臺和微信支付後臺根據相同的密鑰和算法生成一個結果,用於校驗雙方身份合法性。簽名的算法由微信支付制定並公開,常用的簽名方式有:MD5、SHA1、SHA256、HMAC等。

 

微信支付商戶號,微信支付appId。

下載api證書,api密鑰;

微信支付商戶平臺;

下載最新的文檔進行開發;

 

AppSecret是APPID對應的接口密碼,用於獲取接口調用憑證access_token時使用。先獲取接口調用憑證,才能調通接口。

 

交易類型trade_type:JSAPI--JSAPI支付(或小程序支付)、NATIVE--Native支付、APP--app支付,MWEB--H5支付,不同trade_type決定了調起支付的方式,請根據支付產品正確上傳。

貨幣類型:境內商戶號僅支持人民幣。CNY:人民幣。

 

從哪些角度對比兩個系統?

 

openid是微信用戶在公衆號appid下的唯一用戶標識(appid不同,則獲取到的openid就不同),可用於永久標記一個用戶,同時也是微信JSAPI支付的必傳參數。

 

微信支付要求商戶訂單號保持唯一性(建議根據當前系統時間加隨機序列來生成訂單號)。重新發起一筆支付要使用原訂單號,避免重複支付;已支付過或已調用關單、撤銷(請見後文的API列表)的訂單號不能重新發起支付。

 

1、界面功能(前端、後端管理)

2、業務模塊與流程 3、接口詳情與接口流程 4、表 5、存在問題;

剛我找的問題太泛了,不具有針對性。需要對比分析兩套系統的優缺點。

 

先理解業務才能進行編碼。

配置中心修改了配置,重新啓動config Server服務;然後重新啓動具體的某個業務員服務,重新拉取配置即可。

 

下單業務邏輯

前端調用接口傳遞參數---->參數校驗---->"商品描述爲空""商品描述過長"訂單號爲空,"訂單號過長""訂單金額不正確""用戶終端IP不正確""支付有效時間不正確""openid爲空""訂單優惠標記過長"。

 

訂單服務與支付服務分離。

訂單號由訂單服務生成。

支付服務:下單時要校驗訂單好的唯一性,做好接口冪等性。

 

什麼是預下單接口流程,支付流程?

什麼時候關閉訂單? 客服系統關閉訂單接口;如果不關閉當前訂單,重新下單,調用微信後臺,數據不一致的問題。

 

手機端支付,後端沒有支付接口;

某筆支付使用了代金券,把代金券信息存儲到代金券信息表中。

 

生成訂單接口------>下單接口------>支付接口

 

支付狀態接口回調,退款狀態接口回調

這是兩個異步回調接口,主要用於數據落庫和保持一致性。需要把地址貼到微信商戶開放平臺上供微信支付平臺回調。

支付結果通知,退管結果通知,商戶管理後臺,把url配上去。微信直接調用這兩個url。

 

支付系統表設計:預支付表,支付狀態表,退款表,對賬表,代金券表,代金券退款表;

 

表設計:表之間的關聯關係。

 

微信商戶平臺下載證書放在項目的resources目錄下的cert文件夾下.

 

將來肯定會做的,所以還是現在學會,做一遍比較好。

 

用戶是否安裝支付寶App,分爲兩種情況: 如果沒有安裝支付寶,就會激活支付寶網頁支付收銀臺,用戶需要登錄支付寶。

創建應用並獲取APPID,並且申請開通開放產品使用權限。

RSA密鑰包含應用私鑰(APP_PRIVATE_KEY)、應用公鑰(APP_PUBLIC_KEY)。

開發者需要在開放平臺開發者中心進行密鑰配置,配置完成後可以獲取支付寶公鑰。ALIPAY_PUBLIC_KEY,配置的詳細步驟請參考《配置應用環境》

如何在支付寶進行密鑰配置?

支付寶開放平臺SDK封裝了簽名和驗簽過程,只需配置賬號及密鑰參數,建議開發者使用。

客戶端sdk 與服務器端sdk。

服務端SDK需要商戶集成在自己的服務端系統中,用於協助解析並驗證客戶端同步返回的支付結果和異步通知。

如何集成客戶端sdk? 如何集成服務器端sdk?

SDK調用前需要進行初始化

對這個方法的調用進行封裝。

AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);

把當前重複調用的地方封裝起來。支付寶網關地址不能硬編碼。

 

用alipayClient 來調用具體的API 了。alipayClient 只需要初始化一次,後續調用不同的API都可以使用同一個 alipayClient 對象。

只初始化一次,啓動的時候初始化,進行對象注入就好了。

 

生產環境,沙箱環境。

App中需要傳遞的參數return_url;

服務器端調用傳遞的參數notify_url.;

 

沙箱聯調指南

安卓端沙箱環境測試支付調通支付。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章