springboot集成微信支付普通商户版之付款码支付
一、说明:
通过引入依赖实现微信支付,是非常方便的,因为SDK已经封装了很多公共的操作,比如签名sign等;以前还会因为字段排序等问题导致签名错误,使用该SDK可以规避此类问题。
巨坑!!!请留意:如果是新开的微信商户号,设置API密钥一定要设置两遍,否则会大概率出现“签名错误”。
二、准备参数
1.appid:登陆微信公众平台获取,是申请微信支付时对应公众号的appid;
2.mch_id:商户id,登陆微信商户平台获取
3.商户key(API密钥);设置后不能查看,只能重置,所以要保存好,如果是已经设置过了,重置要注意影响范围
三、开发步骤
1.在pom.xml中引入依赖
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
2.在MyWechatpayConfig类实现sdk中的WXPayConfig(注意:以下配置要改为自己的)
public class MyWechatpayConfig implements WXPayConfig {
//appid
public String getAppID() {
return "wx112324223";
}
//商户号
public String getMchID() {
return "156988272323";
}
//API密钥
public String getKey() {
return "112233344566788754432dfdkjjhjkjd";
}
public InputStream getCertStream() {
return null;
}
public int getHttpConnectTimeoutMs() {
return 8000;
}
public int getHttpReadTimeoutMs() {
return 10000;
}
}
3.主体报文逻辑如下
/**
* 付款码支付
* @param request
*/
public void weChatPayMicroPay(HttpServletRequest request) throws Exception {
MyWechatpayConfig myWechatpayConfig = new MyWechatpayConfig();
//获取配置
WXPay wxPay = new WXPay(myWechatpayConfig);
//组装参数
Map<String,String> requestData = new HashMap<String, String>();
requestData.put("body","你的标语");
requestData.put("out_trade_no","商户系统内部订单号");
requestData.put("total_fee","订单总金额,单位为分,只能为整数");
requestData.put("spbill_create_ip",getIpAddress(request));
requestData.put("auth_code","付款码");
//发起支付
Map<String, String> mapBack = wxPay.microPay(requestData);
if("SUCCESS".equals(mapBack.get("return_code"))){
if("SUCCESS".equals(mapBack.get("result_code"))){
//支付成功,处理业务
}else{
System.out.println("接口异常信息====="+mapBack.get("err_code_des"));
}
}else{
System.out.println("通信异常信息====="+mapBack.get("return_msg"));
}
}
了解更多资讯,请关注此公众号!!!