由于微信支付接口更新,本文档已过期,请查看新版微信支付教程。地址 http://www.cnblogs.com/txw1958/category/624506.html

本文介绍微信支付中发货通知功能的实现。

一、发货通知

为了更好地跟踪订单的情况,需要第三方在收到最终支付通知之后,调用发货通知API告知微信后台该订单的发货状态。

发货时间限制:虚拟、服务类24小时内,实物类72小时内。

请在收到支付通知后,按时发货,并使用发货通知接口将相关信息同步到微信后台。若平台在规定时间内没有收到,将视作发货超时处理。

发货通知API的URL为:

https://api.weixin.qq.com/pay/delivernotify?access_token=xxxxxx

URL中的参数只包含目前微信公众平台凭证access_token,而发货通知的真正的数据是放在PostData中的,格式如下:

{"appid" : "wwwwb4f85f3a797777","openid" : "oX99MDgNcgwnz3zFN3DNmo8uwa-w","transid" : "111112222233333","out_trade_no" : "555666uuu","deliver_timestamp" : "1369745073","deliver_status" : "1","deliver_msg" : "ok","app_signature" : "53cca9d47b883bd4a5c85a9300df3da0cb48565c","sign_method" : "sha1"
}

上述内容参数说明如表6-12所示。

参数

说明

appid

公众平台账户的AppId;

openid

贩买用户的OpenId,这个已经放在最终支付结果通知的PostData里了;

transid

交易单号;

out_trade_no

第三方订单号;

deliver_timestamp

发货时间戳,这里指的是Linux时间戳;

deliver_status

发货状态,1表明成功,0表明失败,失败时需要在deliver_msg填上失败原因;

deliver_msg

发货状态信息,失败时可以填上UTF8编码的错诨提示信息,比如“该商品已退款”;

app_signature

根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、openid、transid、out_trade_no、deliver_timestamp、deliver_status、deliver_msg;

sign_method

签名方法(不计入签名生成);

表6-12 发货通知参数说明

微信公众平台在校验ok之后,会返回数据表明是否通知成功,例如:{"errcode":0,"errmsg":"ok"}如果有异常,会在errcode和errmsg描述出来,如果成功errcode就为0。

二、程序实现

程序中的一些参数来自本博客前面的微信支付开发数据。读者请参照运行

 <?php//方倍工作室include_once("WxPayHelper.php");//1. 获取access token$appid = "wx0000000000000000";$appsecret = "e76050733ce76050733ce76050733cdd";$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";$result = https_request($url);$jsoninfo = json_decode($result, true);$access_token = $jsoninfo["access_token"];//2.准备参数$deliver_timestamp = time();//2.1构造最麻烦的app_signature$obj['appid']               = $appid;$obj['appkey']              = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";$obj['openid']              = "o0pk9uIVnlY-fJkzFKEbQ6LJ4cFc";$obj['transid']             = "1218614901201405273313473135";$obj['out_trade_no']        = "JfuKdiBig4zZnE4n";$obj['deliver_timestamp']   = $deliver_timestamp;$obj['deliver_status']      = "1";$obj['deliver_msg']         = "ok";$WxPayHelper = new WxPayHelper();//get_biz_sign函数受保护,需要先取消一下,否则会报错$app_signature  = $WxPayHelper->get_biz_sign($obj);//3. 将构造的json提交给微信服务器,查询$jsonmenu = '{"appid" : "'.$obj['appid'].'","openid" : "'.$obj['openid'].'","transid" : "'.$obj['transid'].'","out_trade_no" : "'.$obj['out_trade_no'].'","deliver_timestamp" : "'.$deliver_timestamp.'","deliver_status" : "'.$obj['deliver_status'].'","deliver_msg" : "'.$obj['deliver_msg'].'","app_signature" : "'.$app_signature.'","sign_method" : "sha1"}';$url = "https://api.weixin.qq.com/pay/delivernotify?access_token=".$access_token;$result = https_request($url, $jsonmenu);var_dump($result);function https_request($url, $data = null){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);if (!empty($data)){curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);}curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);curl_close($curl);return $output;}

运行后返回结果

string(27) "{"errcode":0,"errmsg":"ok"}"

====================================================================

方倍工作室微信公众平台账号关注方法:
1. 微信通讯录-添加朋友-查找公众号-搜索“方倍工作室”
2. 微信通讯录-添加朋友-搜号码-输入“pondbaystudio”
3. 使用微信扫描下面的二维码

微信支付开发(6) 发货通知相关推荐

  1. 微信支付开发(7) 告警通知

    本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付 ...

  2. 微信支付通知 php,微信支付开发交易通知实例

    一.交易通知 用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果.商户可以使用notify_url的通知结果进行个性化页面的展示. 对后台通知交互时,如果微信收到 ...

  3. 微信支付 php编程,PHP编程:微信支付开发交易通知实例

    <PHP编程:微信支付开发交易通知实例>要点: 本文介绍了PHP编程:微信支付开发交易通知实例,希望对您有用.如果有疑问,可以联系我们. 一.交易通知 用户在成功完成支付后,微信后台通知( ...

  4. 转:微信支付开发关键点技术解析

    原文来自于:http://www.csdn.net/article/2014-10-21/2822207-weiixn 微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放 ...

  5. 微信支付开发关键点技术解析

    微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放,相关需求也越来越多,很多开发人员进行微信支付开发及 商家申请微信支付时,面临着诸多疑惑.本文将结合微信支付接口开发的实 ...

  6. 【记】微信支付服务器证书更换通知的验证流程

    [记]微信支付服务器证书更换通知的验证流程 原文:[记]微信支付服务器证书更换通知的验证流程 [重要]微信支付服务器证书更换通知,请开发人员验证以免影响交易 尊敬的微信支付商户&服务商: 因微 ...

  7. 微信支付开发准备工作和详细步骤

    微信支付前的准备工作 1 开发者资质认证 微信支付开发第一步就是使用公司管理者/高层帐号登录微信开放平台,进入"账号中心",进行开发者资质认证,需要填写公司资料,包括但不限于,公司 ...

  8. 工作笔记——微信支付开发相关知识整理

    在最近的工作中,引入了微信小程序支付,在开发过程中积累和整理了一些技术知识,现将其整理如下 目录 一.概念认识 (一)术语介绍 (二)名词解释 (四)对接微信支付接口规则整理 二.微信支付开发参考 ( ...

  9. JSAPI微信支付开发流程和坑

    首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...

最新文章

  1. NeuIPS|在知识图谱上嵌入逻辑查询
  2. 计算机主机房的消防配置包括,信息安全等级保护之技术要求→物理安全→防火...
  3. 部门工作中的“求同存异”法则
  4. Hudson升级异常及解决办法
  5. STL 容器 与 数据结构
  6. ABB 机器人 IRBP系列转台的一段代码注释
  7. Linux Shell脚本_较少Swap使用
  8. 自动加载简单实现 __autoload()
  9. L1-067 洛希极限 (10 分)
  10. 开课吧Java课堂:什么是流?如何运用字节流和字符流?
  11. R语言爬虫系列6|动态数据抓取范例
  12. 原型模式,孙悟空都会用,猴毛变出的小猴子!
  13. python随机生成三位数字_python3 随机生成数字
  14. Java并发编程:volatile关键字解析 by 海子
  15. dns设置快速连接微软服务器,快速搭建Windows防污染DNS服务器——Pcap_DNSProxy(一)...
  16. 什么是Richard Feynman 积分技巧
  17. 利用MATLAB命令求解运输问题
  18. 一文带你了解-Java集合超详解(破天荒总结)
  19. Spring 项目无法解析包含 uri http://java.sun.com/jsp/jstl/core 的 taglib
  20. 召回率、精确率、精确度、F值

热门文章

  1. [Java]-Guava工具库简介
  2. Clickhosue ck ch DB::Exception: Memory limit (total) exceeded
  3. SysY语言(C子集)简单词法分析
  4. 生活混乱怎办?FEED如何训练大脑?《大脑整理术》免费下载
  5. 主流动画实现方式总结
  6. spring boot小区物业管理系统 毕业设计源码101409
  7. 用python做计算器(低级版)
  8. 二维码保存时看到是一张纯黑色图片问题
  9. multism同相比例运算电路与单限比较器连接问题
  10. php传奇发布系统,独家100%仿8845传奇网游发布系统 V1.0 专业SEO版