微信公众号接口开发—-退款详解编程语言

微信公众号开发—退款   微信接口文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4

1.先上官方文档说明

微信公众号接口开发----退款详解编程语言

注意点:该接口是需要证书的,so,点击证书使用查看

微信公众号接口开发----退款详解编程语言

按照上图中的所示路径前往下载(下载时比较烦,每次都有要验证码,而且是没点击一次下载就发一条,很容易造成验证码不正确)

我这儿是windows服务器,so直接下载运行即可,密码是商户号。

2.ok,准备工作好了,开始开发

参数

 SortedMap<String, Object> paramesMap = new TreeMap<>(); 
        paramesMap.put("appid", appId); 
        paramesMap.put("mch_id", mchId); 
        paramesMap.put("nonce_str", "date"); 
        paramesMap.put("out_trade_no", tradeNo);//商户订单号,也可用微信的订单号,二选已,具体看文档 
        paramesMap.put("out_refund_no", refundSn);//商户退款单号,商户方自己生成 
        paramesMap.put("total_fee", "total_fee");//订单总金额 
        paramesMap.put("refund_fee", "refund_fee");//退款金额 
        paramesMap.put("sign", generateSign(paramesMap));//签名,同支付签名一样

请求

  HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund"); 
  String xml="<xml>" 
                        +"<appid>"+appId+"</appid>" 
                        + "<mch_id>"+mchId+"</mch_id>" 
                        + "<nonce_str>"+paramesMap.get("nonce_str")+"</nonce_str>" 
                        + "<out_trade_no>"+paramesMap.get("out_trade_no")+"</out_trade_no>" 
                        + "<out_refund_no>"+paramesMap.get("out_refund_no")+"</out_refund_no>" 
                        + "<refund_fee>"+paramesMap.get("refund_fee")+"</refund_fee>" 
                        + "<total_fee>"+paramesMap.get("total_fee")+"</total_fee>" 
                        + "<sign>"+paramesMap.get("sign")+"</sign>" 
                        +"</xml>"; 
                httpPost.setEntity(new StringEntity(xml, "UTF-8")); 
 
                CloseableHttpResponse response = httpclient.execute(httpPost);
返回的数据
 String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");

3,请求成功了,就开始配置回调,用于微信通知商户方是否退款成功

微信配置:

微信公众号接口开发----退款详解编程语言

在该处配置退款的回调地址即可

然后,就要开始处理回调结果了,还是先上官方文档

微信公众号接口开发----退款详解编程语言

微信对订单的相关数据进行了加密,需要解密处理

base64解码直接调用java自带的

java.util.Base64.Decoder base64进行解码,最好不要用第三方包。

然后将商户key进行32位小写md5加密,

最后用该key进行AES-256-ECB解密

解密时需要注意的是,jar包的安全策略是只支持128位的,所以需要替换安全策略文件

下载地址,oracle官方搜索

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download

下载该文件,并替换 Java/jdk1.8.0_101/jre/lib/security


该文件夹中的这两个文件。ok,参数加密后就可以按照具体逻辑处理了。


原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/13705.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论