关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

微信支付维权,告警,发货接口的打通

发布时间:2019-11-02 11:56:42

服务号申请完微信支付后,有最后三个接口还需要打通,经过几天研究后,总结出如下信息


例子使用的是ruby代码

首先在公众平台里填上接口的信息,给个参考

支付接口:http://example.com/wxpay/

维权接口:http://example.com/wxpay/feedback/

告警接口:http://example.com/wxpay/warning/

1,维权接口

  维权接口是为了让商家尽快解决用户提出的问题,微信第一时间将用户发起的维权数据通过这个接口推送到商家自己的服务器上,推送过来的数据有两种(可查看文档),一种是用户发起的维权数据,一种是用户更新维权处理结果的数据,两种数据微信传过来的都是xml格式,商家接收到微信的推送消息后,因为feedback方法没有页面,可以返回success的文本消息给微信,注意这里不返回消息也没关系,代码如下:

 def payfeedback

    VcoolineLog::Weixinpay.add(params)

    xml = params[:xml]

    wx_user = WxUser.where(uid: xml['OpenId']).first

    mp_user = WxMpUser.where(app_id: xml['AppId']).first

    feedback = WxFeedback.where(feed_back_id: xml['FeedBackId']).first || WxFeedback.new

    msg_type = WxFeedback.msg_type_status xml['MsgType']

    if msg_type == 0

      attrs = {wx_user_id: wx_user.id, supplier_id: mp_user.try{:supplier}.try{:id},          wx_mp_user_id: mp_user.id, feed_back_id: xml['FeedBackId'], msg_type:msg_type,

               trans_id: xml['TransId'], reason: xml['Reason'], solution: xml['Solution'], ext_info: xml['ExtInfo'],pic_info: xml['PicInfo']}

    else

      attrs = {wx_user_id: wx_user.id, supplier_id: mp_user.supplier.id, wx_mp_user_id: mp_user.id, feed_back_id: xml['FeedBackId'], msg_type:msg_type,

               trans_id: xml['TransId'].to_s, reason: xml['Reason']}

      #attrs = {msg_type: msg_type, reason: xml['Reason']}

    end

    feedback.attributes = attrs

    if feedback.save

      render text: ‘success’

    else

      render text: ‘faild’

    end

  rescue => e

    VcoolineLog::Weixinpay.add(“feedback error -> #{e}”)

    render :text => e

  end

2, 告警接口

  有时候商家的服务器会出现异常,这里微信就要通知商家,给商家报警,这就用到了告警接口,告警接口很简单,只要能收到微信的消息,至于怎么处理自己看着办,收到消息后只要给微信返回一个success,表明消息已经收到了,不必担心,微信收到你的返回值,就说明接口通了,如下:

 def warning

    VcoolineLog::Weixinpay.add(params)

    render text: ‘success’

  end

3,发货接口

   发货接口也比较容易,只要按照文档上给的参数,经过一些处理,向微信经起一个post请求,看微信返回的结果,值得注意的是,好多人说出来的签名和微信的不一样,很可能是数据顺序的问题,给出一个例子,

签名的顺序:

sign = Digest::SHA1.hexdigest “appid=#{self.app_id}&appkey=#{self.pay_sign_key}&deliver_msg=#{deliver_msg}&deliver_status=#{deliver_status}&deliver_timestamp=#{timestamp}&openid=#{open_id}&out_trade_no=#{payment.out_trade_no}&transid=#{payment.trade_no}”

很多人反应还不太清楚这些接口,博客回复比较慢,如果大家还有什么没明白,可扫描上面的微信号,输入问题问我,我尽量帮助。



/template/Home/Zkeys/PC/Static