微信支付服务商,消费者投诉处理系统

有读者朋友需要接入微信支付消费者投诉功能,安排。

为了让商户、服务商可以快速获取消费者投诉并进行处理,提高解决消费者投诉的处理能力及效率,为用户提供更优质的服务体验,微信特此提供该消费者投诉API产品。适用于微信支付所有商户、服务商、银行、从业机构对消费者投诉问题进行处理。

商户通过主动查询或通知回调接口实时获取商户号下的消费者投诉数据;商户通过API接口可跟用户留言协商解决投诉;商户与用户协商一致后,商户可通过API接口向微信支付反馈投诉已处理完毕;用户对处理结果不满意时,商户可通过接口跟用户继续协商处理。交互过程看如下业务流程时序图。

设置投诉回调

系统采用的是通过设置投诉通知回调地址来实时获取投诉信息,商户通过调用此接口创建投诉通知回调URL,当用户产生新投诉且投诉状态已变更时,微信支付会通过回调URL通知商户。对于服务商、渠道商,会收到所有子商户的投诉信息推送。

处理投诉数据

如果有新的投诉,会通过回调地址实时接收,再通过调用查询投诉单详情I,查询指定投诉单的用户投诉详情,包含投诉关联订单信息、投诉的问题类型、问题描述、投诉人联系方式等信息,方便商户处理投诉。投诉单状态是从待处理,到处理中,再到已处理完成的演变过程。

回复用户

提交内容回复用户。 首次回复用户后,投诉单状态将由待处理更新为处理中。

更新退款审批结果

更新“申请退款”单据的退款审批结果。

核实可以退款,审批动作同意退款,并给出一个预计退款时间。同意退款后,需要额外调退款接口发起原路退款。退款到账后,投诉单的状态将自动扭转为“处理完成”。

核实不可退款,审批动作拒绝退款,并说明拒绝退款原因。驳回退款后,投诉单的状态将自动扭转为“处理完成”。

反馈处理完成

反馈投诉单已处理完成。投诉单处理完成后系统将对用户下发满意度评价。

投诉协商历史

查询指定投诉单的用户与商户的协商历史,方便商户根据处理历史来制定后续处理方案。

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

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

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

上一篇:微信支付服务商,可视化进件特约商户

本文转载于网络 如有侵权请联系删除

相关文章

  • Ajax请求的五个步骤[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。目录Ajax请求的五个步骤一、定义1、什么是Ajax2、同步与异步的区别3、ajax的工作原理二、实现AJAX的基本步骤1、创建XMLHttpRequest对象2、创建HTTP请求3、设置响应HTTP请求状态变化的函数4、设置获取服务器返回数据的语句5、发送HTTP请求6、局部更新三、完整的AJAX实例Ajax请求的五个步骤一、定义1、什么是AjaxAjax:即异步JavaScript和XML。Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。而传统的网页(不使用Ajax)如果需要更新内容,必需重载整个网页面。2、同步与异步的区别同步提交:当用户发送请求时,当前页面不可以使用,服务器响应页面到客户端,响应完成,用户才可以使用页面。异步提交:当用户发送请求时,当前页面还可以继续使用,当异步请求的数据响应给页面,页面把数据显示出来。3、ajax的工作原理客户端发送请求,请求交给xhr,xhr把请求提交给服务,服务器进行业务处理

  • 和第三方接口对接总结

    大家好,又见面了,我是你们的朋友全栈君。接口对接分为两种形式:我方A公司提供接口给B公司,B公司进行一些操作时调用我们的接口进行实现。例:A开发会员等级同步接口,供B同步会员等级到B系统。B会员等级的变动需要调用A接口主动推送给A(即更新会员卡等级)。我们首先要做的就是按照对方的要求,在对方调用我们的接口,我方成功处理之后,按照对方所需要的返回数据以及格式反馈给他们信息。在写本接口中,因为我们会员卡等级的字段是不一样的,所以我们对此主要处理的就是这个事情,1.例如对方传来修改后的卡等级是金卡,因为我们数据库中是分为vipcard和cardgrade两张表的,所以首先我们要去写一个方法,查询cardgrade表中所有的卡等级的id,返回一个list集合,再利用B公司传过来的数据for循环遍历比较,如果相等,则拿到金卡等级在我方A公司的ID,代码如下:再根据B公司提供的会员卡号在我们查询到该条会员并拿到id;最后就可以根据拿到跟新后的等级id和该会员的id进行更新了,任务完成!代码如下:2.B公司开发会员查询接口,A公司调用B公司接口,实时查询会员调对方接口和对方调我方的接口稍微有些不同,

  • php 生成订单号201807205598981

    php版/** *生成唯一订单号 */ publicfunctionbuild_order_no() { $no=date('Ymd').substr(implode(NULL,array_map('ord',str_split(substr(uniqid(),7,13),1))),0,8); //检测是否存在 $db=M('Order'); $info=$db->where(array('number'=>$no))->find(); (!empty($info))&&$no=$this->build_order_no(); return$no; }复制js版<!DOCTYPEhtml> <html> <head> <title>支付宝电脑网站支付</title> <metahttp-equiv="Content-Type"content="text/html;c

  • linux 之 curl 使用技巧

    获取页面内容>curlhttps://json.im复制显示HTTP头>curl-Ihttps://json.im HTTP/1.1200OK Server:openresty Date:Fri,04Jun202107:38:32GMT Content-Type:text/html Content-Length:12864 Last-Modified:Thu,29Apr202101:39:01GMT Connection:keep-alive Vary:Accept-Encoding ETag:"608a0e35-3240" Expires:Fri,04Jun202108:38:32GMT Cache-Control:max-age=3600 Accept-Ranges:bytes复制同时显示HTTP头和文件内容,使用-i选项>curl-ihttps://json.im复制将链接保存到文件我们可以使用>符号将输出重定向到本地文件中。>curlhttps://json.im>index.html复制也可以通过curl自带的-o/-O

  • 下载丨53页PDF,云和恩墨技术通讯(2021年4月刊)

    墨墨导读:为了及时分享行业案例、通知共性问题、达成共享和提前预防,我们整理和编辑了《云和恩墨技术通讯》,通过对过去一段时间的知识回顾、故障归纳,以期提供有价值的信息供大家参考。同时,我们也希望能够将热点事件、新的产品特性及其他有价值的信息聚集起来,为您提供具有前瞻性的支持信息,保持对于当前最新的数据库新闻和事件的了解,其中包括重要数据库产品发布、警报、更新、新版本、补丁等。墨天轮文档:《云和恩墨技术通讯-2021.04》https://www.modb.pro/doc/27282以下是期刊的部分截图,供大家参考,如果觉得还不错,除了查看原文档以外,记得点赞和转发,让更多和你一样热爱数据库技术的朋友看到!

  • 【一天一大 lee】数组中的最长山脉 (难度:中等) - Day20201025

    20201025题目:我们把数组A中符合下列属性的任意连续子数组B称为“山脉”:B.length>=3存在0<i<B.length-1使得B[0]<B[1]<...B[i-1]<B[i]>B[i+1]>...>B[B.length-1](注意:B可以是A的任意子数组,包括整个数组A。)给出一个整数数组A,返回最长“山脉”的长度。如果不含有“山脉”则返回0。示例:示例1:输入:[2,1,4,7,3,2,5] 输出:5 解释:最长的“山脉”是[1,4,7,3,2],长度为5。 复制示例2:输入:[2,2,2] 输出:0 解释:不含“山脉”。 复制提示:0<=A.length<=100000<=A[i]<=10000抛砖引玉思路:整理下题意:找到数组中连续递增+连续递减最大长度和从前到后,统计从0到i连续递增元素数量left[i]从后到前,统计从len到i连续递减元素数量right[i]最后循环元素返回两片段和的最大值(即递增递减的交换节点)抛砖引玉/** *@param{number[]}A *@return{n

  • svn报错-ra_serf: The server sent a truncated HTTP response body.

    今天从svn上checkout项目到本地的时候,遇到了一个这样的报错ra_serf:TheserversentatruncatedHTTPresponsebody.复制打开本地文件夹一看,项目也只下载了一半不到,还有一大部分没有拉下来查看了一下原因,SVN的请求是写一个XML包体,如果仓库过大,请求的body就变得很大了,导致请求超时,文件夹被locked,只能检出了一部分文件。解决办法: 在项目里面右击鼠标,选择cleanup在弹出的cleanup框里面,勾选Breakwritelocks(解锁),点击确定然后使用update更新一下文件,就可以了

  • 如何基于SAP CDS view创建OData服务

    PrerequisiteyoushouldhaveaworkingCDSview.RefertothislinkabouthowtocreateCDSview.StepsJustaddoneannotationandre-activateyourview:Takemyviewforexample,thefollowingartifactsareautomaticallygeneratedduringactivation.TheMPCclass:Afteractivationyoucanregisterthecreatedodataserviceviatcode/IWFND/MAINT_SERVICE.Oncedone,youcantestthemetadataretrievalviagatewayclient.Note:thisisjustadummyodataservicesincethereisnootherODatarelatedannotationexcept@OData.publish.Pleasecontinuetoreadifyouneedtodefinesomemode

  • 导入:什么是数据结构,为什么要学习数据结构,约瑟夫环的数组实现

    我们不知道怎么造轮子,但是我们起码要知道轮子为什么是圆的。在读这篇文章的你估计在想,为什么会有数据结构这门课,为什么我要学数据结构?现在我解释你们也不会听进去,我简短说一句,如果你是想考研,数据结构必考,如果你想去好一点的公司,数据结构必考,所以以后你也不用再纠结为什么要学数据结构,数据结构有什么用,学就对了。我们以一个问题引入数据结构基础,先看题目约瑟夫问题:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。问题是,给定了和,一开始要站在什么地方才能避免被处决?Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是

  • Python内置数据结构大总结

    内置据结构大总结 今天不讲解新的内容,主要回顾一下以往讲过的内置数据结构,来个大总结。五种线性结构列表元组字符串bytesbytearray两种非线性结构字典集合列表、元组、字符串属于线性结构,我们可以对其进行切片操作、解包/封包操作。序列类型操作符下表是所有序列类型都适用的操作符:序列操作符作用seq[ind]获得下标为ind的元素seq[ind1:ind2]获得下标从ind1到ind2间的元素集合seq*expr序列重复expr次seq1+seq2连接序列seq1和seq2objinseq判断obj元素是否包含在seq中objnotin判断obj元素是否不包含在seq中几种数据结构的共性这几种数据结构的共性:都是顺序存储顺序访问可迭代对象(可迭代对象可以用len方法获取其长度)通过索引进行元素的访问可以进行切片操作切片切片不会对原有的序列做任何修改,切片的语法为:seq[start:stop]复制从索引start开始,到索引stop结束,不包含stop,返回新的序列,不会对原有的对象做任何修改。几个特性:start超出索引范围:start=0stop超出索引范围:stop=-1负数

  • 可用于集群的开源软件赏:Chef

    目前我在腾讯主要负责一个服务器端软件的相关开源项目,所以接下来几天的开源内容是最近工作上积累的一些经验和想法,下图中的内容就是我目前主要的工作内容和一些小小的成果。服务器集群系统设计是一个需要考虑开发、部署、维护整个生命周期的复杂工作。因此把这个复杂的过程切分成单独的任务,是解决问题最重要的思想。而开源软件最擅长的就是,能很好的完成特定的任务。因此我们通过学习、利用开源软件,就能逐步的完成服务器集群系统设计的困难工作。今天的主题是关注集群服务器系统的安装部署。我们关注的是一款流行的开源安装部署专用软件——Chef。Chef是什么现在在Linux上安装服务器系统,变得越来越复杂。早期的Linux软件往往通过源代码就能编译成功,然后简单的拷贝安装就可以了。但是现在的一个完整业务系统,往往会依赖多款开源服务系统。如一个电子商务网站,可能会依赖Apache/PHP/MySQL/memcache/redis,而一个游戏服务器端系统,则可能会由Tomcat/MySQL/ActiveMQ/Ngix/PHP-FPM构成。同时这些服务器软件不是安装到一个服务器上,而是要按某种规划,分种类安装到不同的服务

  • 在线分享 Hosts 规则工具:Remote Hosts Server

    “1024”做了一个能够让SwitchHosts使用起来更舒服一些的小工具,不论是程序工具本身,还是Docker容器都只有5MB尺寸,支持多种CPU架构。当我们需要在多台设备上同步Hosts规则,或者需要和团队小伙伴共享Hosts规则的时候,使用这个工具能够极大提升分享时的使用体验。写在前面之前在《用于本地开发使用的DNS方案》一文中,分享的内容包含了使用带有界面的“dnsmasq”、使用“go-dnsmasq”、以及在不方便使用DNS模式的时候,使用工具编辑“系统Hosts”的方法。在最近整理仓库的时候,看到了一个使用Nginx作为SwitchHosts远程配置的项目,虽然方案的运行性能、资源占用都不错,但偶尔想更新配置,需要使用本地编辑器更新,然后使用Git推动仓库变动,再触发CI/CD部署更新流程,总归比较麻烦。为了接下来能够偷懒,于是我做了一个简单的工具,支持在线编辑和修改Hosts配置,并分享给包括SwitchHosts在内的软件使用。RemoteHostsServer使用示例完整代码开源在GitHub:https://github.com/soulteary/remote-

  • vue element-ui el-upload组件多选文件上传改造

    ElementUI上传图片组件(支持多传和单传),多图时报错Cannotsetproperty'status'ofnull 注意fileLIst是只读的,不能修改。我们这里使用uploadList来保存我们需要改动的数组,否则报错Cannotsetproperty'status'ofnull:    上传多图时,第一张图片file对象有值,后面就没了,这边就报错了。 问题分析:每次上传都会促发 handleBeforeUpload和handleUploadSuccess,传几张就会触发几次,经过反复调试,应该是handleUploadSuccess上传回调方法执行多次$emit引起的 解决方案:声明一个number变量用于记录上传图片数量,上传成功回调后通过判断图片数量与number一致时,执行一次$emit。 使用uploadList数组用来临时保存上传的多图数组    增加两个变量  uploadList:[], number:0, 复制   修改两个方法: 1.handleBeforeUpload /

  • 678. 有效的括号字符串

    678.有效的括号字符串 给定一个只包含三种字符的字符串:( ,) 和*,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则: 任何左括号( 必须有相应的右括号)。 任何右括号) 必须有相应的左括号( 。 左括号(必须在对应的右括号之前)。 * 可以被视为单个右括号) ,或单个左括号( ,或一个空字符串。 一个空字符串也被视为有效字符串。 示例1: 输入:"()" 输出:True 复制 栈 classSolution{ public: boolcheckValidString(strings){ //堆栈 stack<int>left,star; for(inti=0;i<s.size();++i){ if(s[i]=='(') left.push(i); elseif(s[i]=='*') star.push(i); else{ if(left.empty()&&star.empty()) returnfalse; elseif(!left.empty()

  • ES6中Promise的简单理解

    一个函数参数:newPromise(function(resolve,reject)) 每个Promise构造函数可接受一个参数,该参数为一个函数,该函数又有两个参数resolve和reject,分别表示为成功之后的回调函数和失败之后的回调函数。 当异步操作执行成功后,会将异步操作结果作为参数传入resolve函数并执行,此时Promise对象状态从pending变为fulfilled;失败则会将异步操作的错误作为参数传入reject函数并执行,此时Promise对象状态从pending变为rejected 两个状态转换:pending->fulfilled,pending->rejected 从两种状态转换可以看出一个有三种状态,挂起态pending,已成功fulfilled,已失败rejected。状态一旦改变就不会再变。 三个原型方法:.then(),.catch(),.finally() .then()方法可提供一个或两个回调函数作为参数。第一个回调函数是Promise对象的状态由pending变为resolved时执行;第二个回调函数则是Promise对象的状态

  • 网络弊端

    网络的弊端 传递信息特点 危害 1. 碎片化的,肤浅化的. Fragmented 片面思维  2. 极端化(平淡的信息是没有关注度的,雷人的语言) 极端思维 3.  网络会自我洗脑(网络上看的信息是内在的我要的信息,不够客观) 虚假思维              

  • 在PHP语言中使用JSON

    5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。 一、json_encode() 该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:   $arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);      echojson_encode($arr);    复制 结果为   {"a":1,"b":2,"c":3,"d":4,"e":5}    复制 再看一个对象转换的例子:   $obj->body='anotherpost';      $obj->id=21;      $obj->approved=true;      $obj->favorite_count=1;      $obj->status=NULL;      echojson_encode($obj);    复制 结果为   {     "body":"anotherpost",        "id":

  • OpenLayers 3 之 地图图层数据来源(ol.source)详解

    原文地址 source是Layer的重要组成部分,表示图层的来源,也就是服务地址。除了在构造函数中制定外,可以使用layer.setSource(source)稍后指定。一、包含的类型   ol.source.BingMaps,必应地图的切片数据,继承自ol.source.TileImage;   ol.source.Cluster,聚簇矢量数据,继承自ol.source.Vector;   ol.source.ImageCanvas,数据来源是一个canvas元素,其中的数据是图片,继承自ol.source.Image;   ol.source.ImageMapGuide,Mapguide服务器提供的图片地图数据,继承自ol.source.Image,fireol.source.ImageEvent;   ol.source.ImageStatic,提供单一的静态图片地图,继承自ol.source.Image;  &

  • docker 安装启动jenkins 以及问题剖析

    docker安装启动jenkins以及问题剖析   高考时有句“神话”,只要累不死,就往死里干。这句话依然适合现在的工作中的我们。开篇喜欢讲些小语句;     今天docker安装jenkins不小心遇到一个问题,查了很多遍,发现自己一个小失误,但是这个过程中,也了解的一些常见的问题;做了很多,所以很生气,这一气之下,写篇文章来作为记录吧;     首先,你环境必须要有docker,我这里是自己本地虚拟机Vmware,我的虚拟机时linuxcentos7的.如果你不知怎么安装虚拟机和命令工具可以,联系我或下面给我留言;   1、查找下jenkins镜像        命令:dockerserachjenkins              从上面我们可以看到下载最多的时5540这个,而且是jenkins/jenkins:lts,意思时长期稳定版; ok,就拉这个镜像;    2、dockerpulljenkins/jenkins:lts 拉取镜像   3、mkdir-

  • 子类父类属性的覆盖(继承)

    http://gaolixu.iteye.com/blog/363709

  • python元组与字典

    一、元组 1.元组的表达 (1,2,3,4) ('olive',123) ("python",)复制 创建元组: a=tuple((1,2,3,)) b=("python",)复制 2.元组功能属性 1classtuple(object): 2""" 3tuple()->emptytuple 4tuple(iterable)->tupleinitializedfromiterable'sitems 5 6Iftheargumentisatuple,thereturnvalueisthesameobject. 7""" 8defcount(self,value):#realsignatureunknown;restoredfrom__doc__ 9"""T.count(value)->integer--returnnumberofoccurrencesofvalue""" 10return0 11 12defindex(self,value,start=None,stop=None):#realsignatureunknown;restoredfrom__d

相关推荐

推荐阅读