微信支付开发(6) 发货通知
由于微信支付接口更新,本文档已过期,请查看新版微信支付教程。地址 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) 发货通知相关推荐
- 微信支付开发(7) 告警通知
本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付 ...
- 微信支付通知 php,微信支付开发交易通知实例
一.交易通知 用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果.商户可以使用notify_url的通知结果进行个性化页面的展示. 对后台通知交互时,如果微信收到 ...
- 微信支付 php编程,PHP编程:微信支付开发交易通知实例
<PHP编程:微信支付开发交易通知实例>要点: 本文介绍了PHP编程:微信支付开发交易通知实例,希望对您有用.如果有疑问,可以联系我们. 一.交易通知 用户在成功完成支付后,微信后台通知( ...
- 转:微信支付开发关键点技术解析
原文来自于:http://www.csdn.net/article/2014-10-21/2822207-weiixn 微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放 ...
- 微信支付开发关键点技术解析
微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放,相关需求也越来越多,很多开发人员进行微信支付开发及 商家申请微信支付时,面临着诸多疑惑.本文将结合微信支付接口开发的实 ...
- 【记】微信支付服务器证书更换通知的验证流程
[记]微信支付服务器证书更换通知的验证流程 原文:[记]微信支付服务器证书更换通知的验证流程 [重要]微信支付服务器证书更换通知,请开发人员验证以免影响交易 尊敬的微信支付商户&服务商: 因微 ...
- 微信支付开发准备工作和详细步骤
微信支付前的准备工作 1 开发者资质认证 微信支付开发第一步就是使用公司管理者/高层帐号登录微信开放平台,进入"账号中心",进行开发者资质认证,需要填写公司资料,包括但不限于,公司 ...
- 工作笔记——微信支付开发相关知识整理
在最近的工作中,引入了微信小程序支付,在开发过程中积累和整理了一些技术知识,现将其整理如下 目录 一.概念认识 (一)术语介绍 (二)名词解释 (四)对接微信支付接口规则整理 二.微信支付开发参考 ( ...
- JSAPI微信支付开发流程和坑
首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...
最新文章
- NeuIPS|在知识图谱上嵌入逻辑查询
- 计算机主机房的消防配置包括,信息安全等级保护之技术要求→物理安全→防火...
- 部门工作中的“求同存异”法则
- Hudson升级异常及解决办法
- STL 容器 与 数据结构
- ABB 机器人 IRBP系列转台的一段代码注释
- Linux Shell脚本_较少Swap使用
- 自动加载简单实现 __autoload()
- L1-067 洛希极限 (10 分)
- 开课吧Java课堂:什么是流?如何运用字节流和字符流?
- R语言爬虫系列6|动态数据抓取范例
- 原型模式,孙悟空都会用,猴毛变出的小猴子!
- python随机生成三位数字_python3 随机生成数字
- Java并发编程:volatile关键字解析 by 海子
- dns设置快速连接微软服务器,快速搭建Windows防污染DNS服务器——Pcap_DNSProxy(一)...
- 什么是Richard Feynman 积分技巧
- 利用MATLAB命令求解运输问题
- 一文带你了解-Java集合超详解(破天荒总结)
- Spring 项目无法解析包含 uri http://java.sun.com/jsp/jstl/core 的 taglib
- 召回率、精确率、精确度、F值
热门文章
- [Java]-Guava工具库简介
- Clickhosue ck ch DB::Exception: Memory limit (total) exceeded
- SysY语言(C子集)简单词法分析
- 生活混乱怎办?FEED如何训练大脑?《大脑整理术》免费下载
- 主流动画实现方式总结
- spring boot小区物业管理系统 毕业设计源码101409
- 用python做计算器(低级版)
- 二维码保存时看到是一张纯黑色图片问题
- multism同相比例运算电路与单限比较器连接问题
- php传奇发布系统,独家100%仿8845传奇网游发布系统 V1.0 专业SEO版