2020-8-11 SpringBoot项目接入微信接口
程序员文章站
2022-06-28 18:23:36
...
首先讲一下接入接口的具体步骤:
1、注册一个微信支付
点我查看注册方法,在注册后可以获得下面三个参数,在第四步配置微信数据时需要用
2、下载Java对应的SDK
3、配置依赖
可以在下载的文件中找到pom文件,找到自己的依赖
<!-- 微信支付 -->
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
4、配置微信数据
将下载好的sdk文件导入项目中,如下图的几个文件,在同一个文件夹下,FeiConfig为自己配置的
需要配置FeiConfig文件类,*** 为自己的配置
package github.wxpay.sdk;
import java.io.InputStream;
/*
微信平台的相关配置
*/
public class FeiConfig extends WXPayConfig {
//注册微信支付账号后获取
@Override
String getAppID() {
return "***";
}
@Override
String getMchID() {
return "***";
}
@Override
String getKey() {
return "***";
}
@Override
InputStream getCertStream() {
return null;
}
@Override
IWXPayDomain getWXPayDomain() {
return new IWXPayDomain() {
@Override
public void report(String domain, long elapsedTimeMillis, Exception ex) {
}
@Override
public DomainInfo getDomain(WXPayConfig config) {
return new DomainInfo(WXPayConstants.DOMAIN_API, true);
}
};
}
}
5、代码实现
我是写了一个工具类,在工具类中有生成二维码和查询订单状态的方法。但是生成二维码的方法需要自己将return的字符串转为二维码,自己可以百度一下,这种插件还是很多的。在生成二维码后,可以在前端写一个定时器不断查询订单状态,不过这就不属于本篇文章的内容了(手动狗头)
package com.fh.util;
import github.wxpay.sdk.FeiConfig;
import github.wxpay.sdk.WXPay;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class WXUtil {
//私有化构造
private WXUtil(){}
//生成code_url 三个参数分别是订单描述、订单唯一的标识,可以是id、订单的支付金额
public static String createCodeUrl(String body, String orderPay, String sumMoney) throws Exception {
// 微信支付 natvie 商户生成二维码
//配置配置信息
FeiConfig config = new FeiConfig();
//得到微信支付对象
WXPay wxpay = new WXPay(config);
//设置请求参数
Map<String, String> data = new HashMap<String, String>();
//对订单信息描述
data.put("body", body);
//String payId = System.currentTimeMillis()+"";
//设置订单号 (保证唯一 )
data.put("out_trade_no",orderPay);
//设置币种
data.put("fee_type", "CNY");
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
Date d=new Date();
String dateStr = sdf.format(new Date(d.getTime() + 120000000));
//设置二维码的失效时间
data.put("time_expire", dateStr);
//设置订单金额 单位分
data.put("total_fee",sumMoney);
data.put("notify_url", "http://www.example.com/wxpay/notify");
//设置支付方式
data.put("trade_type", "NATIVE"); // 此处指定为扫码支付
// 统一下单
Map<String, String> resp = wxpay.unifiedOrder(data);
String codeUrl = resp.get("code_url");
return codeUrl;
}
//查询订单状态
public static String getOrderState(String orderPay) throws Exception {
FeiConfig config = new FeiConfig();
WXPay wxpay = new WXPay(config);
Map<String, String> data = new HashMap<String, String>();
data.put("out_trade_no",orderPay);
// 查询支付状态
Map<String, String> resp = wxpay.orderQuery(data);
String state = resp.get("trade_state");
return state;
}
}
上一篇: http协议,http状态码,请求,响应
下一篇: 全方位分析web前端如何进行性能优化