中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot整合微信支付sdk過程的示例分析

發布時間:2021-07-08 11:38:16 來源:億速云 閱讀:291 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“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項目,會有以下幾個文件

springboot整合微信支付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過程的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

县级市| 兖州市| 广平县| 白水县| 无为县| 邵阳县| 连城县| 天全县| 刚察县| 道真| 抚宁县| 台北市| 林西县| 齐河县| 金昌市| 德保县| 肃北| 陆川县| 瓦房店市| 永年县| 锡林浩特市| 贺兰县| 抚顺县| 永丰县| 凤山县| 红原县| 阳新县| 肥西县| 丹阳市| 合水县| 内江市| 高青县| 左云县| 阳山县| 东港市| 沙坪坝区| 商城县| 无极县| 衡阳县| 阜新市| 长岛县|