日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java开发微信支付接口_JAVA微信支付接口开发——支付

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java开发微信支付接口_JAVA微信支付接口开发——支付 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微信支付接口開發——支付

這幾天在做支付服務,系統接入了支付寶、微信、銀聯三方支付接口。個人感覺支付寶的接口開發較為簡單,并且易于測試。

關于數據傳輸,微信是用xml,所以需要對xml進行解析。

1、微信支付的幾種接口

付款碼支付、JSAPI支付、Native支付、APP支付、H5支付、小程序支付。幾種支付方式都是大同小異。

2、支付流程

基于APP支付來說,微信支付的大體流程:

1、APP客戶端根據用戶支付請求,將訂單信息(訂單號,金額等)傳至后臺服務器

2、后臺服務器根據訂單信息,拼裝微信統一下單接口需要的請求參數。其中比較重要的參數為appid、mch_id、nonce_str、sign、out_trade_no、total_fee、notify_url。

這里參數拼裝需要根據微信提供的簽名算法

假設請求參數為:

"appid":"wxd930ea5d5a258f4f"

"mch_id":"10000100"

"body":"test"

"nonce_str":"ibuaiVcKdpRxkhJA"

需要將以上參數按照規則先拼裝成String

key值按照ASCII從小到大排序(A->Z),key=value形式并用&連接

String a = "appid=wxd930ea5d5a258f4f&mch_id=10000100&body=test&nonce_str=ibuaiVcKdpRxkhJA"

拼接API密鑰 key 是商戶平臺設置的密鑰key

signStr = a + "&key=192006250b4c09247ec02edce69f6a2d"

MD5簽名(轉大寫) 注:微信默認為MD5簽名,也支持HMAC-SHA256簽名方式

sign=MD5(signStr).toUpperCase()

//最終得到sign = "9A0A8659F005D6984697E2CA0A9CF3B7"

然后sign繼續按照規則(A->Z)拼裝進String中。

java中可以用map完成排序

Map paramsMap = new TreeMap(String::compareTo);

paramsMap.put("appid", APP_APP_ID);

......

//完成簽名得到sign

paramsMap.put("sign",sign);

最后需要將參數轉化成xml格式的string進行接口請求

![CDATA[wxd930ea5d5a258f4f]]

![CDATA[10000100]]

![CDATA[1000]]

![CDATA[ibuaiVcKdpRxkhJA]]

![CDATA[9A0A8659F005D6984697E2CA0A9CF3B7]]

3、微信支付統一下單的接口地址為:https://api.mch.weixin.qq.com/pay/unifiedorder

java中可以利用httpclient進行post調用。參數即之前拼接完成的帶sign簽名參數。

得到微信支付接口的返回值也同樣是xml格式的數據,需要我們將其轉成便于操作的map型數據。

返回的數據包含了return_code、return_msg。

return_code只有SUCCESS和FAIL,這是通信成功與否的標識,非業務標識。

只有return_code是SUCCESS時,才會有其他數據返回包括result_code,sign等。

若result_code業務標識也同樣為SUCCESS時候才說明微信方預付單生成成功。

這時會返回我們支付業務需要的prepay_id預支付會話id。

注意: 這里需要我們進行sign簽名驗證,以保證數據安全性

4、將通過驗簽的prepay_id等信息返回給APP客戶端。此時APP端可以調起支付接口,

調起了微信支付窗口,讓用戶完成支付操作。

然后微信端會根據之前設置的notify_url異步通知地址,進行調用。通知服務端支付情況。

3、總結

微信支付接口開發還涉及到訂單的相關業務(查詢,關閉),以及退款等相關業務。

微信支付主要需要先了解其業務流程,然后就是調用微信支付的接口,其中就是參數的拼裝與驗簽。這部分可以抽取成一個工具類,比如mapToXml(),xmlToMap(),md5()等等。最后根據接口文檔中返回的數據判斷進行業務操作。

最后吐槽一下,微信測試號沒有提供支付測試環境,需要真實的服務號。

總結

以上是生活随笔為你收集整理的java开发微信支付接口_JAVA微信支付接口开发——支付的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。