微信退款开发 微信如何申请退款( 二 )


2、查询退款的实现应用场景:
提交退款申请后,通过调用该接口查询退款状态 。退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态 。(退款有延迟,可通过轮询来判断是否成功退款)
注意:如果单个支付订单部分退款次数超过20次请使用退款单号查询
退款状态变化:

微信退款开发 微信如何申请退款

文章插图
查询退款接口具体实现:
@GET@Path(value = "https://www.goobye.net/queryRefund")@Produces(MediaType.APPLICATION_JSON)public Response queryRefund(@QueryParam("outTradeNo") String outTradeNo){Map result = new HashMap();try{// 1、查询退款Map paramMap = new HashMap<>();paramMap.put("appid", appid);// 公众账号IDparamMap.put("mch_id", mchid);// 商户号paramMap.put("nonce_str", WXPayUtil.generateNonceStr());// 随机字符串paramMap.put("out_trade_no", outTradeNo + "");// 商户订单号String sign = WXPayUtil.generateSignature(paramMap, paternerKey);paramMap.put("sign", sign);// 签名WXPay wxpay = new WXPay(MyConfig.getInstance());Map resp = wxpay.refundQuery(paramMap);if("FAIL".equals(resp.get("return_code"))){throw new RuntimeException("return_code为fail, " + resp.get("return_msg"));}if("FAIL".equals(resp.get("result_code")) && !"订单已全额退款".equals(resp.get("err_code_des"))){throw new RuntimeException("result_code为fail, " + resp.get("err_code_des"));}// 2、成功退款后的操作流程......result.put("code", SUCCESS);}catch(Exception e){e.printStackTrace();result.put("code", ERROR);result.put("msg", e.getMessage());}return Response.ok(result).build();}