• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

springboot 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

前言

之前做的几个微信小程序项目,大部分客户都有要在微信小程序前端提现的需求。提现功能的实现,自然使用企业付款接口,不过这个功能开通比较麻烦,要满足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) {
  <i style="color:transparent">本文来源gaodai$ma#com搞$$代**码网$</i>    }
      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;
  }

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:springboot整合微信支付sdk过程解析
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址