java 微信退款配置,java--springboot微信支付退款服务端实现以及证书配置(含代码)...

本文介绍了如何在Java中实现微信支付退款的过程。首先在Controller中创建退款方法,然后调用wxPayService进行退款操作,包括设置参数如退款流水号、交易号、金额等。退款逻辑检查返回结果,判断退款是否成功。退款服务中,配置了微信支付的相关信息,包括appid、商户id、安全证书等。代码中还包含了微信支付配置类的详细内容。
摘要由CSDN通过智能技术生成

上次写了篇微信支付的文章,有童鞋来问我如果要退款怎么写,退款比支付简单多了,废话不多说,来贴下代码。

首先在controller里:

public String refund(

) throws Exception {

Mapdata = new HashMap();

System.err.println("进入微信退款申请");

Date now = new Date();

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");//可以方便地修改日期格式

String hehe = dateFormat.format(now);

String out_refund_no = hehe + "wxrefund";

String transaction_id = "微信支付时生成的流水号";

String total_fee = "微信支付时支付的钱(单位为分)";

data.put("out_refund_no", out_refund_no);

data.put("transaction_id", transaction_id);

data.put("total_fee", total_fee);

data.put("refund_fee", total_fee);

String result = wxPayService.refund(data);

//判断是否退款成功

if (result.equals("\"退款申请成功\"")) {

return "已退款";

}

return "微信退款失败";

}

具体传参什么的对应你们自己的业务逻辑,我只贴跟微信退款相关的。

里面调用了wxPayService这个的方法:

/**

* 申请退款

*

* @param data 包含商户订单号、商户退款单号、订单金额、退款金额

* @return

*/

@Override

public String refund(Mapdata) throws Exception {

WXMyConfigUtil config = new WXMyConfigUtil();

WXPay wxpay = new WXPay(config);

data.put("appid", config.getAppID());

data.put("mch_id", config.getMchID());

data.put("nonce_str", WXPayUtil.generateNonceStr());

data.put("sign", md5Util.getSign(data));

Mapresp = null;

try {

resp = wxpay.refund(data);

} catch (Exception e) {

e.printStackTrace();

}

System.err.println(resp);

String return_code = resp.get("return_code"); //返回状态码

String return_msg = resp.get("return_msg"); //返回信息

String resultReturn = null;

if ("SUCCESS".equals(return_code)) {

String result_code = resp.get("result_code"); //业务结果

String err_code_des = resp.get("err_code_des"); //错误代码描述

if ("SUCCESS".equals(result_code)) {

//表示退款申请接受成功,结果通过退款查询接口查询

//修改用户订单状态为退款申请中(暂时未写)

resultReturn = "退款申请成功";

} else {

logger.info("订单号:{}错误信息:{}", err_code_des);

resultReturn = err_code_des;

}

} else {

logger.info("订单号:{}错误信息:{}", return_msg);

resultReturn = return_msg;

}

return JSON.toJSONString(resultReturn);

}

如何导包和配置pom文件,我在上次那篇博客里已经写了。这里涉及到了config文件的配置。

这是微信很坑的一点,它的demo里并没有告诉你如何配置。我还是一样直接放代码:

package com.kyd.callcenter.util.weixin;

import com.github.wxpay.sdk.WXPayConfig;

import java.io.ByteArrayInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

public class WXMyConfigUtil implements WXPayConfig {

private byte[] certData;

public WXMyConfigUtil() throws Exception {

String certPath = "apiclient_cert.p12";//从微信商户平台下载的安全证书存放的目录

File file = new File(certPath);

InputStream certStream = new FileInputStream(file);

this.certData = new byte[(int) file.length()];

certStream.read(this.certData);

certStream.close();

}

@Override

public String getAppID() {

return "你微信账户的appid";

}

//parnerid

@Override

public String getMchID() {

return "你微信账户的商户id";

}

@Override

public String getKey() {

return "你微信账户的api密钥";

}

@Override

public InputStream getCertStream() {

ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);

return certBis;

}

@Override

public int getHttpConnectTimeoutMs() {

return 8000;

}

@Override

public int getHttpReadTimeoutMs() {

return 10000;

}

}

有哪里不清楚的小伙伴,欢迎评论提问我不定期查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值