微信支付用户如果对订单有疑问或异议,可以通过支付凭证发起投诉,商户需在限定时限内进行回复处理。这个机制设计初衷应该是为了保护消费者权益,促进商户提升服务质量,官方也推出了投诉处理指南。
但是…重点来了,看一下这个苦主记录一次令人糟心的微信支付投诉处理,实际上我们自己也遇到过类似的场景,在商户本身没有任何过错的情况下,用户涉嫌装无辜连续甚至恶意投诉的时候,商户本身除了退款之外几乎没有其他任何维护自身利益的手段。
微信支付在接到用户投诉的时候可以通过回调消息通知商户进行跟进处理,前面描述的这个场景其实跟本文没有直接关系,只是说明接入投诉消息回调的必要性,避免非商户自身意愿导致商家服务质量指标下降。
首先,调用创建投诉通知回调地址接口,向微信支付登记用于处理投诉通知回调的接口url。代码如下(以微信支付API Python SDK为例)
from wechatpayv3 import WeChatPay, WeChatPayType
APPID = 'wx1234567890' # 应用appid
MCHID = '1234567890' # 微信支付商户号
APIV3_KEY = '1234567890ABCDEFG' # 微信支付APIV3 KEY
CERT_SERIAL_NO = '1234567890ABCDEFG' # 商户证书序列号
with open('path_to_private_key/apiclient_key.pem') as f:
PRIVATE_KEY = f.read()
CERT_DIR = './cert' # 平台证书缓存目录
wxpay = WeChatPay(
wechatpay_type=WeChatPayType.MINIPROG,
mchid=MCHID,
private_key=PRIVATE_KEY,
cert_serial_no=CERT_SERIAL_NO,
apiv3_key=APIV3_KEY,
appid=APPID,
notify_url='',
cert_dir=CERT_DIR)
code, message = wxpay.complaint_notification_create('https://xxx.com/complaint/notify')
print('{}, {}'.format(code, message))
调用成功的话,微信支付服务器会返回
{
"mchid": "1234567890",
"url": "https://xxx.com/complaint/notify"
}
当发生用户投诉的时候,微信支付会将相关投诉信息推送到前面设置的https://xxx.com/complaint/notify这个地址。
下面将回调消息解密,并将解密后的内容推送到企业微信群里,以便相关人员及时更进处理。
import json
import requests
from flask import jsonify, request
from wechatpayv3 import WeChatPay, WeChatPayType
QIYE_WX_HOOK_URL = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=12345678-abcd-abcd-abcd-12345678' # 企业微信群机器人HOOK URL
@app.route("/complaint/notify", methods=['POST'])
def wxnotify():
try:
wxpay = WeChatPay(
wechatpay_type=WeChatPayType.MINIPROG,
mchid=MCHID,
private_key=PRIVATE_KEY,
cert_serial_no=CERT_SERIAL_NO,
apiv3_key=APIV3_KEY,
appid=APPID,
notify_url='',
cert_dir=CERT_DIR)
result = wxpay.callback(request.headers, request.data.decode())
if result and result.get('resource'):
data = result.get('resource')
complaint_id = data.get('complaint_id')
action_type = data.get('action_type')
message = '微信支付用户投诉,投诉单号:{},事件类型:{}。'.format(complaint_id, action_type)
data = {
"msgtype": "markdown",
"markdown": {
"content": message
}
}
requests.post(QIYE_WX_HOOK_URL, json=data)
return jsonify({"code": "SUCCESS","message": "成功"})
except Exception as e:
sslogger.exception('exception in complaint wxnotify: %s' % e)
return '', 500
至此,调试通过后,只需将涉及到微信支付用户投诉的人员,比如:客服、售后、财务、物流等拉个企业微信群,在微信支付端收到用户投诉或者投诉状态变更时,企业微信群机器人将会自动将提示信息推送到群里,方便了日常更进,也提升了用户体验。
这里只是展示了一个相对简单的业务场景,如果商户的业务量较大,业务系统体系和架构复杂,完全可以利用微信支付提供的消费者投诉2.0接口将用户投诉全流程和自己的业务系统对接,不用跳转到第三方系统即可完成用户投诉的处理回复和结单。