连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户
大家好,我是小悟
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。這些需要到騰訊云后臺獲取。
您的一鍵三連,是我更新的最大動力,謝謝
山水有相逢,來日皆可期,謝謝閱讀,我們再會
我手中的金箍棒,上能通天,下能探海
總結
以上是生活随笔為你收集整理的连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于人脸识别的老年人照顾服务系统设计与实
- 下一篇: Scrapy爬取豆瓣图书Top250数据