连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户
大家好,我是小悟
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。这些需要到腾讯云后台获取。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海
总结
以上是生活随笔为你收集整理的连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 基于人脸识别的老年人照顾服务系统设计与实
- 下一篇: 微软语音技术 Windows 语音编程初