您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“springboot整合微信支付sdk過程的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“springboot整合微信支付sdk過程的示例分析”這篇文章吧。
前言
之前做的幾個微信小程序項目,大部分客戶都有要在微信小程序前端提現的需求。提現功能的實現,自然使用企業付款接口,不過這個功能開通比較麻煩,要滿足3個條件;
之前實現過幾個微信支付的接口,不過都是自己碼的代碼,從網上找找拼湊,覺得看起來不舒服~_~ 于是乎找到了微信官方提供的支付sdk。這里用的是java版本,springboot整合java
下載sdk,引入項目
這里可以直接下載官方提供的sdk,然后將幾個java類拷貝到你的項目,也可以直接引入maven依賴,這里是直接將Java類拷貝到我項目的。
<!-- https://mvnrepository.com/artifact/com.github.wxpay/WXPay-SDK-Java --> <dependency> <groupId>com.github.wxpay</groupId> <artifactId>WXPay-SDK-Java</artifactId> <version>0.0.4</version> </dependency>
如圖,打開sdk項目,會有以下幾個文件
配置config文件
通過它的readme文件,可以看到幾個demo。但是首先我們需要配置相關的信息。新建一個java類繼承原先的配置類。
package com.github.wxpay.sdk; import java.io.InputStream; /** * @author Ean * @date 2019/7/2 */ public class MyConfig extends WXPayConfig { /** * 獲取 App ID * * @return App ID */ @Override String getAppID() { return "wxdb70c7c6b******"; } /** * 獲取 Mch ID * * @return Mch ID */ @Override String getMchID() { return "1522050000"; } /** * 獲取 API 密鑰 * * @return API密鑰 */ @Override String getKey() { return "xxxxxxxxxxxxxxxx"; } /** * 獲取商戶證書內容 * 這里是讀取resources根目錄下面的證書文件 * @return 商戶證書內容 */ @Override InputStream getCertStream() { InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("apiclient_cert.p12"); return certStream; } /** * 獲取WXPayDomain, 用于多域名容災自動切換 * 實現這個接口 * @return */ @Override public IWXPayDomain getWXPayDomain() { IWXPayDomain iwxPayDomain = new IWXPayDomain() { public void report(String domain, long elapsedTimeMillis, Exception ex) { } public DomainInfo getDomain(WXPayConfig config) { return new IWXPayDomain.DomainInfo(WXPayConstants.DOMAIN_API, true); } }; return iwxPayDomain; } }
提現接口開發
寫一個提現接口,傳入提現相關的參數
/** *@描述 提現接口 *@參數 [param] *@創建人 Eangaie *@創建時間 2019/7/2 */ @PostMapping("despot") public Result despot(@RequestBody Map<String,Object> param) throws Exception { MyConfig config = new MyConfig(); WXPay wxpay = new WXPay(config,1); SortedMap<String, String> sendData; sendData=getDespData(param); sendData.put("sign", WXPayUtil.generateSignature(sendData,key , WXPayConstants.SignType.MD5)); Map<String,String> resData=wxpay.despot(sendData,config.getHttpConnectTimeoutMs(),config.getHttpReadTimeoutMs()); return ResultUtil.success(resData); } private SortedMap<String, String> getDespData(Map<String, Object> param) { SortedMap<String, String> params = new TreeMap<String, String>(); String nonce_str=commonUtil.gen32RandomString(); String partner_trade_no=commonUtil.createNo(); String openid= String.valueOf(param.get("openid")); String check_name="NO_CHECK"; String amount= String.valueOf(param.get("amount")); String desc="用戶提現"; String spbill_create_ip= String.valueOf(param.get("spbill_create_ip")); params.put("mch_appid",mch_appid); params.put("mchid",mchid); params.put("nonce_str",nonce_str); params.put("partner_trade_no",partner_trade_no); params.put("openid",openid); params.put("check_name",check_name); params.put("amount", amount); params.put("desc", desc); params.put("spbill_create_ip", spbill_create_ip); return params; }
這里的一些變量,比如商戶id,appid這些直接通過spring掃描application配置文件自動注入,接口參數主要是傳過來openid,跟提現金額。其實這個spbill_create_ip字段也可以固定的。
一開始是因為開發一直遇到IP不允許訪問的問題,最后發現。。是商戶號配置鍋,商戶號記得把配置允許IP訪問這個地方關了!,不然就一直不能訪問接口
提現成功返回,但是程序也會報500,因為processResponseXml這個函數里面有校驗返回值。但是提現這里用不到,可以注釋掉代碼。
else if (return_code.equals(WXPayConstants.SUCCESS)) { return respData; // if (this.isResponseSignatureValid(respData)) { // return respData; // } // else { // throw new Exception(String.format("Invalid sign value in XML: %s", xmlStr)); // } }
至此,提現接口完成。。
以上是“springboot整合微信支付sdk過程的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。