微信小程序> 微信退款,微信小程序之退款

微信退款,微信小程序之退款

浏览量: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 ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎