大家好,我是小悟
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_消费者投诉](//dev-img.mos.moduyun.com/20231023/c0189e62-f337-468e-b774-06176e899362.jpg)
1、问题背景
玩过微信支付生态的,或许就有这种感受,如果收到投诉单,不会通知到手机端,只会在微信支付商户后台-账户中心-消费者投诉那里显示。那你能一直盯着电脑看吗?可能当你有空打开电脑登录查看的时候,已经积累了好多超时未处理的投诉单。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_微信支付_02](//dev-img.mos.moduyun.com/20231023/6dc56fb5-d86a-4c6a-ba86-73ad3ead6399.png)
一旦处理不及时,超时什么的,就会受到处罚,比如调整结算周期、关闭自动提现等等。这个时候找不到人工客服,客服电话永远没人接。提交申述,一周就过去了,时间浪费了不说,照样给你维持原判,不带说原因的。欲哭无泪,找谁说理去。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_消费者投诉_03](//dev-img.mos.moduyun.com/20231023/2b11303c-30de-4871-a1d2-2bc10d08cd07.png)
正好有小伙伴咨询说可以搞个消费者投诉处理系统吗?当然可以。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_微信支付_04](//dev-img.mos.moduyun.com/20231023/1e18a65c-7a20-40d1-b79d-f5f29c6fe947.jpg)
所以还是搞个系统来处理,起码会比较及时的处理投诉单。废话不多说,来看一下这个系统。
2、商户信息
这里录入的是商户号相关信息,可以新增多个商户号,管理起来也不麻烦,挺方便。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_消费者投诉_05](//dev-img.mos.moduyun.com/20231023/f62ec2ff-a86d-4787-848c-8109fb4f4995.png)
要准备商户名称、商户平台apiV3密钥、商户号、商户appid、商户API证书序列号、微信支付平台证书序列号、商户API证书位置路径、微信支付平台证书位置路径,这些参数信息到微信支付商户后台获取。
当系统在收到用户投诉时会自动回复,回复的内容就是获取的【商户回复用户内容】字段的值,所以,这个字段填写的内容要友好、客气、礼貌一点,毕竟,客户可是上帝哦。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_消费者投诉_06](//dev-img.mos.moduyun.com/20231023/e5c8cb50-edf9-4a3f-859b-fb67cbccb7c0.jpg)
如果开启了自动退款,系统收到投诉单后,也会自动退款,然后将投诉单状态改为已处理完成。
如果将状态改为禁用,则系统不会收到投诉单通知。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_微信支付_07](//dev-img.mos.moduyun.com/20231023/a4591131-d3fc-4576-bae2-3f1dd2111798.png)
try {
InputStream inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
String result = new String(outSteam.toByteArray(), StandardCharsets.UTF_8);
logger.info("微信投诉通知回调返回参数result:{}", result);
CallBackBody callBackBody = JSONObject.parseObject(result, CallBackBody.class);
String eventType = callBackBody.getEvent_type();
ResourceBody resource = callBackBody.getResource();
AesUtils aesUtil = new AesUtils(wechatApiV3.getBytes(StandardCharsets.UTF_8));
String resourceStr = aesUtil.decryptToString(
resource.getAssociated_data().getBytes(StandardCharsets.UTF_8),
resource.getNonce().getBytes(StandardCharsets.UTF_8),
resource.getCiphertext());
logger.info("微信投诉通知回调返回参数resourceStr明文:{}", resourceStr);
NotificationResult notificationResult = JSONObject.parseObject(resourceStr, NotificationResult.class);
String complaintId = notificationResult.getComplaint_id();
String actionType = notificationResult.getAction_type();
logger.info("微信投诉通知回调返回参数complaintId:{},actionType:{}", complaintId, actionType);
// 验证微信支付返回签名
String Wtimestamp = request.getHeader("Wechatpay-Timestamp");
String Wnonce = request.getHeader("Wechatpay-Nonce");
String Wsign = request.getHeader("Wechatpay-Signature");
logger.info("Wtimestamp:{},Wnonce:{},Wsign:{}", Wtimestamp, Wnonce, Wsign);
// 拼装待签名串
StringBuffer ss = new StringBuffer();
ss.append(Wtimestamp).append("\n");
ss.append(Wnonce).append("\n");
ss.append(result).append("\n");
// 验证签名
if (SignUtils.v3VerifyRSA(ss.toString(), Base64.decodeBase64(Wsign.getBytes()),
wechatPubKeyPath)) {
logger.info("微信投诉通知回调签名验证成功");
this.handleBusiness(complaintId, eventType, actionType, merchantBaseInfo);
res.put("code", "SUCCESS");
res.put("message", "OK");
} else {
logger.info("微信投诉通知回调签名验证失败");
res.put("code", "ERROR_NAME");
res.put("message", "VERIFY SIGN ERROR");
}
} catch (GeneralSecurityException e) {
e.printStackTrace();
res.put("code", "ERROR_NAME");
res.put("message", e.getMessage());
}
3、通知参数
这个配置的是消息通知参数,如果商户号被投诉了,系统收到投诉单时,会通知接收人。有三种通知渠道,邮箱通知、公众号通知、短信通知,任选其一。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_消费者投诉_08](//dev-img.mos.moduyun.com/20231023/0e1b955f-7c92-4bd1-a786-bffddf611d4c.jpg)
邮箱通知需要设置发送人邮箱(必须是网易云163邮箱)、发送人邮箱授权码、接收人邮箱。这些需要到网易云163邮箱后台获取。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_微信支付_09](//dev-img.mos.moduyun.com/20231023/e44422b3-f972-4462-915f-1437805f7e67.png)
公众号通知需要设置公众号appId、公众号secret、公众号模板消息id、接收人公众号openId。这些需要到公众号后台获取。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_微信支付_10](//dev-img.mos.moduyun.com/20231023/f452a11f-50ca-45ec-b0eb-6cc2c0f69d19.png)
短信通知需要设置腾讯云短信secretId、腾讯云短信secretKey、腾讯云短信模板id、腾讯云短信appId。这些需要到腾讯云后台获取。
![图片 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户_微信支付_11](//dev-img.mos.moduyun.com/20231023/924f1aac-fa56-4f03-9aaf-1192fad4e02c.png)
公众号【悟空码字】后台回复【微信消费者投诉】获取账号密码。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海