Skip to content

车牌状态变更通知(XML)

从用户进入开通车主服务的停车场(用户入场通知接口),到用户离场期间(扣款接口),这个时间段内如果用户状态变为可用或者不可用,微信会把相关状态变更情况(可用/不可用)异步发送给商户,回调url为调用上述用户入场通知接口时填写的notify_url字段。商户在收到车主状态变更通知后,需进行接收处理并返回应答。 官方文档 官方文档

请求报文

xml
<xml>
  <mch_id>100000981</mch_id>
  <sub_mch_id>10000100</sub_mch_id>
  <appid>wxcbda96de0b165486</appid>
  <nonce_str>5K8264ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str>
  <sign_type>HMAC-SHA256</sign_type>
  <sign>EE088059BBC9141264F8D14293AD6C4BB94CEA8C08AA98FBF93E262D445F8FF5</sign>
  <plate_number>粤A00000</plate_number>
  <vehicle_event_type>NORMAL</vehicle_event_type>
  <vehicle_event_des>OVERDUE</vehicle_event_des>
  <deduct_mode>PROACTIVE</deduct_mode>
  <vehicle_event_createtime>20180101100000</vehicle_event_createtime>
</xml>

处理程序

js
const { 
Transformer
,
Hash
,
Aes
} =
require
('wechatpay-axios-plugin')
const
obj
=
Transformer
.
toObject
(
xml
)
let
return_code
= 'SUCCESS',
return_msg
= 'OK'
if (!
Hash
.
equals
(
Hash
.
sign
('HMAC-SHA256',
obj
,
apiv2Secret
),
obj
?.
sign
)) {
return_code
= 'FAIL'
return_msg
= 'sign mismatched'
} const {
mch_id
,
sub_mch_id
,
appid
,
plate_number
,
vehicle_event_type
,
vehicle_event_des
,
deduct_mode
,
vehicle_event_createtime
,
} =
obj
;
// do your business // ... // ... const
response
=
Transformer
.
toXml
({
return_code
,
return_msg
})

应答报文

xml
<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[OK]]></return_msg>
</xml>

注意:

  • 对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功(通知频率为6/12/24/48/96/192/384/768/1536,单位:秒)。
  • 注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。
  • 推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。

Released under the MIT License. (SITEMAP)