欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

之前實(shí)現(xiàn)過幾個(gè)微信支付的接口,不過都是自己碼的代碼,從網(wǎng)上找找拼湊,覺得看起來不舒服~_~ 于是乎找到了微信官方提供的支付sdk。這里用的是java版本,springboot整合java

下載sdk,引入項(xiàng)目

這里可以直接下載官方提供的sdk,然后將幾個(gè)java類拷貝到你的項(xiàng)目,也可以直接引入maven依賴,這里是直接將Java類拷貝到我項(xiàng)目的。

<!-- 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項(xiàng)目,會(huì)有以下幾個(gè)文件

配置config文件

通過它的readme文件,可以看到幾個(gè)demo。但是首先我們需要配置相關(guān)的信息。新建一個(gè)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)自動(dòng)切換
  * 實(shí)現(xiàn)這個(gè)接口
  * @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ā)

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

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

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

提現(xiàn)成功返回,但是程序也會(huì)報(bào)500,因?yàn)閜rocessResponseXml這個(gè)函數(shù)里面有校驗(yàn)返回值。但是提現(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)接口完成。。

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

相關(guān)文章

  • SpringBoot之?dāng)r截器與過濾器解讀

    SpringBoot之?dāng)r截器與過濾器解讀

    這篇文章主要介紹了SpringBoot之?dāng)r截器與過濾器解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java日期工具類操作字符串Date和LocalDate互轉(zhuǎn)

    Java日期工具類操作字符串Date和LocalDate互轉(zhuǎn)

    這篇文章主要介紹了Java日期工具類操作字符串Date和LocalDate互轉(zhuǎn),文章首先通過需要先引入坐標(biāo)展開主題的相關(guān)內(nèi)容介紹,需要的朋友可以參一下
    2022-06-06
  • Java排序之Comparable和Comparator比較器詳解

    Java排序之Comparable和Comparator比較器詳解

    這篇文章主要介紹了Java排序之Comparable和Comparator比較器詳解,Comparable<T>是內(nèi)部比較器,Comparator<T>是外部比較器,最推薦使用Comparator<T>接口排序,Comparator提供靜態(tài)方法很方便,推薦使用,需要的朋友可以參考下
    2024-01-01
  • JavaEE開發(fā)之SpringMVC中的自定義消息轉(zhuǎn)換器與文件上傳

    JavaEE開發(fā)之SpringMVC中的自定義消息轉(zhuǎn)換器與文件上傳

    本篇文章主要介紹了SpringMVC的相關(guān)知識(shí)。同時(shí)也會(huì)介紹到j(luò)s、css這些靜態(tài)文件的加載配置,以及服務(wù)器推送的兩種實(shí)現(xiàn)方式并且給出了兩者的區(qū)別。下面跟著小編一起來看下吧
    2017-04-04
  • Java同步函數(shù)代碼詳解

    Java同步函數(shù)代碼詳解

    這篇文章主要介紹了Java線程中的同步函數(shù)的相關(guān)內(nèi)容,涉及了實(shí)例代碼,需要的朋友,可以參考下。
    2017-10-10
  • 服務(wù)器實(shí)現(xiàn)Java遠(yuǎn)程訪問Linux服務(wù)器方式(JSch)

    服務(wù)器實(shí)現(xiàn)Java遠(yuǎn)程訪問Linux服務(wù)器方式(JSch)

    文章介紹了如何使用Java遠(yuǎn)程訪問Linux服務(wù)器,主要包括建立SSH連接、使用JSch庫執(zhí)行命令、解析返回值以及關(guān)閉連接的步驟
    2024-11-11
  • Mybatis-Plus使用ID_WORKER生成主鍵id重復(fù)的解決方法

    Mybatis-Plus使用ID_WORKER生成主鍵id重復(fù)的解決方法

    本文主要介紹了Mybatis-Plus使用ID_WORKER生成主鍵id重復(fù)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • SpringBoot實(shí)現(xiàn)發(fā)送郵件、發(fā)送微信公眾號(hào)推送功能

    SpringBoot實(shí)現(xiàn)發(fā)送郵件、發(fā)送微信公眾號(hào)推送功能

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)發(fā)送郵件、發(fā)送微信公眾號(hào)推送功能,這里對(duì)成員變量JavaMailSender使用了@Resource注解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • IDEA 格式化SQL代碼技巧分享

    IDEA 格式化SQL代碼技巧分享

    這篇文章主要介紹了IDEA 格式化SQL代碼技巧分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java多線程中常見的幾個(gè)問題

    Java多線程中常見的幾個(gè)問題

    這篇文章主要介紹了Java多線程中常見的幾個(gè)問題 ,需要的朋友可以參考下
    2015-05-05

最新評(píng)論