最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot整合微信支付sdk過程解析

 更新時間:2019年08月02日 16:47:31   作者:謝彥杰  
這篇文章主要介紹了springboot整合微信支付sdk過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

前言

之前做的幾個微信小程序項目,大部分客戶都有要在微信小程序前端提現(xiàn)的需求。提現(xiàn)功能的實現(xiàn),自然使用企業(yè)付款接口,不過這個功能開通比較麻煩,要滿足3個條件;

之前實現(xiàn)過幾個微信支付的接口,不過都是自己碼的代碼,從網(wǎng)上找找拼湊,覺得看起來不舒服~_~ 于是乎找到了微信官方提供的支付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。但是首先我們需要配置相關(guān)的信息。新建一個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";
 }
 /**
  * 獲取商戶證書內(nèi)容
  * 這里是讀取resources根目錄下面的證書文件
  * @return 商戶證書內(nèi)容
  */
 @Override
 InputStream getCertStream() {
  InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("apiclient_cert.p12");
  return certStream;
 }
 /**
  * 獲取WXPayDomain, 用于多域名容災(zāi)自動切換
  * 實現(xiàn)這個接口
  * @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;
 }
}

提現(xiàn)接口開發(fā)

寫一個提現(xiàn)接口,傳入提現(xiàn)相關(guān)的參數(shù)

 /**
  *@描述 提現(xiàn)接口
  *@參數(shù) [param]
  *@創(chuàng)建人 Eangaie
  *@創(chuàng)建時間 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="用戶提現(xiàn)";
  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配置文件自動注入,接口參數(shù)主要是傳過來openid,跟提現(xiàn)金額。其實這個spbill_create_ip字段也可以固定的。

一開始是因為開發(fā)一直遇到IP不允許訪問的問題,最后發(fā)現(xiàn)。。是商戶號配置鍋,商戶號記得把配置允許IP訪問這個地方關(guān)了!,不然就一直不能訪問接口

提現(xiàn)成功返回,但是程序也會報500,因為processResponseXml這個函數(shù)里面有校驗返回值。但是提現(xiàn)這里用不到,可以注釋掉代碼。

 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));
//   }
  }

至此,提現(xiàn)接口完成。。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中處理日期時間的幾種操作技巧

    Java中處理日期時間的幾種操作技巧

    日期和時間是幾乎所有應(yīng)用程序中都會遇到的問題,從簡單的顯示當(dāng)前時間,到復(fù)雜的日期計算和時區(qū)處理,日期時間操作是開發(fā)中不可避免的一部分,Java提供了不同的工具來幫助我們處理日期和時間,本文為大家詳細說說,需要的朋友可以參考下
    2026-01-01
  • Http學(xué)習(xí)之組裝報文

    Http學(xué)習(xí)之組裝報文

    這篇文章主要介紹了Http學(xué)習(xí)之組裝報文,組裝報文就是指組裝HTTP響應(yīng)報文,你需要返回客戶請求的相應(yīng)資源,通常一個完整的報文包括報文頭和報文體,一起來看看吧
    2023-04-04
  • 基于JDOM生成解析XML過程解析

    基于JDOM生成解析XML過程解析

    這篇文章主要介紹了基于JDOM生成解析XML過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 學(xué)習(xí)Spring-Session+Redis實現(xiàn)session共享的方法

    學(xué)習(xí)Spring-Session+Redis實現(xiàn)session共享的方法

    本篇文章主要介紹了學(xué)習(xí)Spring-Session+Redis實現(xiàn)session共享的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java如何使用SSLContext請求https鏈接

    Java如何使用SSLContext請求https鏈接

    這篇文章主要介紹了Java如何使用SSLContext請求https鏈接問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 深入講解Java Maven配置

    深入講解Java Maven配置

    這篇文章主要介紹了Maven的安裝配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • Java正則表達式判斷字符串中是否包含中文示例

    Java正則表達式判斷字符串中是否包含中文示例

    之前一個朋友問我,如何判斷字符串中是否包含中文,其實解決的方法很簡單,但覺著有必要寫出給不知道的朋友們以參考,所以下面這篇文章主要介紹了利用Java正則表達式判斷字符串中是否包含中文的方法,需要的朋友可以參考。
    2017-03-03
  • SpringBoot整合FFmpeg進行視頻處理的詳細教學(xué)

    SpringBoot整合FFmpeg進行視頻處理的詳細教學(xué)

    這篇文章主要為大家詳細介紹了SpringBoot如何整合FFmpeg進行視頻處理,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-01-01
  • 玩轉(zhuǎn)SpringBoot2快速整合攔截器的方法

    玩轉(zhuǎn)SpringBoot2快速整合攔截器的方法

    這篇文章主要介紹了玩轉(zhuǎn)SpringBoot2快速整合攔截器的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java中時間戳和時間的轉(zhuǎn)換方法代碼

    Java中時間戳和時間的轉(zhuǎn)換方法代碼

    這篇文章主要介紹了Java中時間戳和時間的轉(zhuǎn)換的相關(guān)資料,Java8中時間戳與日期時間對象之間的轉(zhuǎn)換是編程中常見的操作,通過時間字符串獲取時間對象也是其中的一種方法,需要的朋友可以參考下
    2025-03-03

最新評論

盘山县| 揭西县| 万年县| 长兴县| 密云县| 海林市| 莒南县| 玛纳斯县| 毕节市| 台南市| 南皮县| 黄石市| 桃源县| 炉霍县| 玛沁县| 兴业县| 洪湖市| 诏安县| 蓝田县| 兴海县| 平利县| 宣恩县| 罗山县| 兖州市| 蓬安县| 获嘉县| 建德市| 高雄市| 吴忠市| 邵阳县| 乌审旗| 察隅县| 哈密市| 延长县| 巴中市| 津市市| 丹东市| 罗江县| 樟树市| 石林| 利川市|