微信退款,微信小程序之退款
浏览量:937
时间:
来源:dd_Gao
/@paramrequest@paramorderId订单id@paramorderNum订单号@paramrefundNum退款流水号@paramorderMoney订单金额@paramrefundMoney退款金额@paramrefundCase退款原因@return/publicJSONObjectrefundByOrderId(HttpServletRequestrequest,StringorderId,StringorderNum,StringrefundNum,doubleorderMoney,doublerefundMoney,StringrefundCase){JSONObjectjsonObject=newJSONObject();try{//创建退款数据报包SortedMapObject,ObjectpackageParams=newTreeMapObject,Object();//获取商户号的一些参数信息(这里是自己封装的获取商户号的一些配置)PluginConfigpluginConfig=weixinPublicPaymentPlugin.getPluginConfig();//获取订单Orderorder=orderService.find(Long.parseLong(orderId));//封装所有参数//appid==公众账号ID==同下单packageParams.put("appid",pluginConfig.getAttribute("appId"));//mch_id==商户号==同下单packageParams.put("mch_id",pluginConfig.getAttribute("mchId"));//nonce_str==32位随机字符串==生成方法同下单packageParams.put("nonce_str",WXPayUtil.generateNonceStr());//随机字符串(32位以内)//sign_type==签名类型==同下单packageParams.put("sign_type","MD5");//paySign加密//out_trade_no==商户订单号==用户下单单号//退款订单号packageParams.put("out_trade_no",orderNum);//out_refund_no==商户退款单号==退款流水号(为了简单,我这里是:时间戳后8位+5位随机数)packageParams.put("out_refund_no",refundNum);//total_fee==订单金额==该退款订单的总价格(官方规定单位:分,且为整数)packageParams.put("total_fee",(int)(orderMoney100));//refund_fee==退款金额==需要退款的金额(官方规定单位:分,且为整数)packageParams.put("refund_fee",(int)(refundMoney100));//退款原因packageParams.put("refund_desc",refundCase);//获取signStringsign=PayCommonUtil.createSign("UTF-8",packageParams,pluginConfig.getAttribute("apiKey"));//最后这个是自己在微信商户设置的32位密钥//sign==签名==签名方法同同下单packageParams.put("sign",sign);//退款回调接口(非必要)//packageParams.put("notify_url",notifyUrl+"/apiRefund/backRefund");//所有参数赋值并签名后转化为xml封装好请求StringrequestXML=PayCommonUtil.getRequestXml(packageParams);//System.err.println("requestXML:"+requestXML);logger.info("退款人ID:"+order.getMember().getId());logger.info("退款请求参数:"+requestXML);StringEntitystringEntity=newStringEntity(requestXML,"UTF-8");HttpPosthttpPost=newHttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund");//得指明使用UTF-8编码,否则到API服务器XML的中文不能被成功识别httpPost.addHeader("Content-Type","text/xml");httpPost.setEntity(stringEntity);//初始化证书,得到一个HttpClient(加载含有证书的http请求)HttpResponseresponse=initCert(request).execute(httpPost);HttpEntityentity=response.getEntity();//得到返回结果的XMLStringresXml=EntityUtils.toString(entity,"UTF-8");logger.info("退款微信返回参数:"+resXml);//将XML转换成Map集合Mapmap=XMLUtil.doXMLParse(resXml);//回调结果StringreturnCode=(String)map.get("return_code");StringreturnMsg=(String)map.get("return_msg");//返回信息StringresultCode=(String)map.get("result_code");//返回结果码StringerrCodeDes=(String)map.get("err_code_des");//返回结果码Stringtransaction_id=(String)map.get("transaction_id");//微信订单号//返回结果成功if("SUCCESS".equals(returnCode)&&"OK".equals(returnMsg)){if("FAIL".equals(resultCode)){//退款失败的逻辑returnjsonObject;}else{//退款成功的逻辑returnjsonObject;}}else{//返回结果失败的逻辑returnjsonObject;}}catch(Exceptione){//返回结果失败jsonObject.put("status",HttpStatus.BAD_REQUEST);jsonObject.put("Msg",e.getMessage());returnjsonObject;}}//商户Id@Value("${payConfig.mchId}")privateStringkey;//商户证书路径@Value("${payConfig.payConfigPath}")privateStringpayConfigPath;/加载证书/privateCloseableHttpClientinitCert(HttpServletRequestrequest)throwsException{//System.err.println("key:"+key);//System.err.println("payConfigPath:"+payConfigPath);//商户证书的路径Stringpath=request.getServletContext().getRealPath(payConfigPath);//证书文件路径//System.err.println("path:"+path);//指定读取证书格式为PKCS12KeyStorekeyStore=KeyStore.getInstance("PKCS12");//读取本机存放的PKCS12证书文件FileInputStreaminstream=newFileInputStream(newFile(path));try{//指定PKCS12的密码(商户ID)keyStore.load(instream,key.toCharArray());}finally{instream.close();}SSLContextsslcontext=SSLContexts.custom().loadKeyMaterial(keyStore,key.toCharArray()).build();//指定TLS版本SSLConnectionSocketFactorysslsf=newSSLConnectionSocketFactory(sslcontext,newString[]{"TLSv1"},null,SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);//设置httpclient的SSLSocketFactoryreturnHttpClients.custom().setSSLSocketFactory(sslsf).build();}
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

小程序制作平台选型踩坑记录:2026年五大主流方案横向对比
2026 年微信小程序月活达 10.7 亿、覆盖 108 个行业,本次横向对比即速应用、乔拓云、凡科、有赞、微盟五大主流平台,分三阶段给出选型结论,核心聚焦成本、扩展性、运营能力三大维度。 -

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。










