连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户

大家好,我是小悟

在这里插入图片描述

1、问题背景

玩过微信支付生态的,或许就有这种感受,如果收到投诉单,不会通知到手机端,只会在微信支付商户后台-账户中心-消费者投诉那里显示。那你能一直盯着电脑看吗?可能当你有空打开电脑登录查看的时候,已经积累了好多超时未处理的投诉单。

在这里插入图片描述
一旦处理不及时,超时什么的,就会受到处罚,比如调整结算周期、关闭自动提现等等。这个时候找不到人工客服,客服电话永远没人接。提交申述,一周就过去了,时间浪费了不说,照样给你维持原判,不带说原因的。欲哭无泪,找谁说理去。

在这里插入图片描述

正好有小伙伴咨询说可以搞个消费者投诉处理系统吗?当然可以。

在这里插入图片描述

所以还是搞个系统来处理,起码会比较及时的处理投诉单。废话不多说,来看一下这个系统。

2、商户信息

这里录入的是商户号相关信息,可以新增多个商户号,管理起来也不麻烦,挺方便。

在这里插入图片描述

要准备商户名称、商户平台apiV3密钥、商户号、商户appid、商户API证书序列号、微信支付平台证书序列号、商户API证书位置路径、微信支付平台证书位置路径,这些参数信息到微信支付商户后台获取。

当系统在收到用户投诉时会自动回复,回复的内容就是获取的【商户回复用户内容】字段的值,所以,这个字段填写的内容要友好、客气、礼貌一点,毕竟,客户可是上帝哦。

在这里插入图片描述

如果开启了自动退款,系统收到投诉单后,也会自动退款,然后将投诉单状态改为已处理完成。

如果将状态改为禁用,则系统不会收到投诉单通知。

在这里插入图片描述

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、通知参数

这个配置的是消息通知参数,如果商户号被投诉了,系统收到投诉单时,会通知接收人。有三种通知渠道,邮箱通知、公众号通知、短信通知,任选其一。

在这里插入图片描述

邮箱通知需要设置发送人邮箱(必须是网易云163邮箱)、发送人邮箱授权码、接收人邮箱。这些需要到网易云163邮箱后台获取。

在这里插入图片描述

公众号通知需要设置公众号appId、公众号secret、公众号模板消息id、接收人公众号openId。这些需要到公众号后台获取。

在这里插入图片描述

短信通知需要设置腾讯云短信secretId、腾讯云短信secretKey、腾讯云短信模板id、腾讯云短信appId。这些需要到腾讯云后台获取。

在这里插入图片描述

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空码字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值