这篇文章主要为大家展示了“springboot整合微信支付sdk过程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“springboot整合微信支付sdk过程的示例分析”这篇文章吧。
金湖网站建设公司创新互联,金湖网站设计制作,有大型网站制作公司丰富经验。已为金湖近千家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的金湖做网站的公司定做!
前言
之前做的几个微信小程序项目,大部分客户都有要在微信小程序前端提现的需求。提现功能的实现,自然使用企业付款接口,不过这个功能开通比较麻烦,要满足3个条件;
之前实现过几个微信支付的接口,不过都是自己码的代码,从网上找找拼凑,觉得看起来不舒服~_~ 于是乎找到了微信官方提供的支付sdk。这里用的是java版本,springboot整合java
下载sdk,引入项目
这里可以直接下载官方提供的sdk,然后将几个java类拷贝到你的项目,也可以直接引入maven依赖,这里是直接将Java类拷贝到我项目的。
com.github.wxpay WXPay-SDK-Java 0.0.4
如图,打开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 param) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config,1);
SortedMap sendData;
sendData=getDespData(param);
sendData.put("sign", WXPayUtil.generateSignature(sendData,key , WXPayConstants.SignType.MD5));
Map resData=wxpay.despot(sendData,config.getHttpConnectTimeoutMs(),config.getHttpReadTimeoutMs());
return ResultUtil.success(resData);
}
private SortedMap getDespData(Map param) {
SortedMap params = new TreeMap();
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过程的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
文章名称:springboot整合微信支付sdk过程的示例分析
文章出自:http://www.jxjierui.cn/article/pshppc.html


咨询
建站咨询
