微信支付v2开发(6) 发货通知
本文介绍微信支付中发货通知功能的实现。
一、发货通知
为了更好地跟踪订单的情况,需要第三方在收到最终支付通知之后,调用发货通知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. 使用微信扫描下面的二维码
转载于:https://www.cnblogs.com/lanzhi/p/6467480.html
微信支付v2开发(6) 发货通知相关推荐
- 微信支付v2开发(7) 告警通知
本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付 ...
- 微信支付v2开发(9) 标记客户投诉处理状态
本文介绍微信支付中如何标记客户投诉的处理状态. 一.API Api 的 url 为: https://api.weixin.qq.com/payfeedback/update?access_token ...
- 微信支付接口开发流程
第一步,微信支付接口申请: [1]首先需要申请成为服务号,并在申请微信认证后: [2]填写商户基本资料.业务基本资料.财务审核资料. [3]通过审核进入开发流程,通过开发接口文档的指引,完成开发. [ ...
- java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...
这段时间把支付基本搞完了,因为做的过程中遇到许多问题,特地记录下来,同时方便其他java coder,废话少说,下面开始. 整体思路:在后台,根据参数创建支付宝客户端AlipayClient,发送参数 ...
- 微信公众号开发,微信支付功能开发(网页JSAPI调用)
1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...
- 1元云购微信支付功能开发 - 1元云购网站开发
1元云购是时下比较流行的电子商务模式,1元云购系统现在在网上也比较多,但是大多数的网站建设源码是比较老的版本,要么就是没有微信支付功能,要么就是微信支付功能有缺陷,例如 1.微信支付的账户配置在程序里 ...
- (微信支付签名失败)微信支付v2版本踩坑-二次签名不同类型签名参数key不同
小伙伴们在做微信支付对接的时候会遇到各种各样的坑,特别是微信支付v2版本,微信支付的二次签名官方文档没有给出明显的签名参数,导致在开发中很容易碰到微信支付的这个坑(微信支付签名失败),app签名key ...
- php微信支付测试开发(流程已通)
必要条件: appid //公众号后台开发者中心获得(和邮件内的一样) mchid//邮件内获得 key//商户后台自己设置 appsecret //公众号开发者中心获得 两个证书文件,邮件内 ...
- php微信支付接口开发程序
必要条件: appid //公众号后台开发者中心获得(和邮件内的一样) mchid//邮件内获得 key//商户后台自己设置 appsecret //公众号开发者中心获得 两个证书文件,邮件内 ...
- PHP获取微信支付v2预支付参数prepay_id后在小程序端完成支付
PS:在上一篇文章中,通过对主体上传xml数据进行签名获取到了微信返回的数据,将返回的xml数据中的prepay_id提取出来后就可以进行下一步: 对prepay_id以及其他所需参数进行在此签名并将 ...
最新文章
- 【TeeChart Pro ActiveX教程】(八):ADO数据库访问(上)
- ios11修改微信步数_一个人有多孤独,看他的微信步数就知道了
- UA MATH567 高维统计专题2 Low-rank矩阵及其估计1 Matrix Completion简介
- 使用多窗体时, 关于节约内存和加快启动速度的思考与尝试
- 20145207 《Java程序设计》第4周学习总结
- linux重装出现cannot load file 5555h,重装win7系统开机提示cannot load file code:5555h怎么办...
- AspNet2.0页面生命周期
- php static_castunsigned int,static_cast揭密
- 编译加速 remote cache
- java块语句_Java运算符、表达式、语句块
- mysql拼装字段_Mysql 实现字段拼接的三个函数
- 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据
- linux 多线程服务端编程 pdf,Linux 多线程服务端编程.pdf
- Linux内核中获取虚拟机KVM结构体信息以及vCPU个数
- 体系结构笔记------动态调度中的Tomasulo算法
- Win10怎么删除快速访问中最近使用文件记录
- C++语言的基本符号与词汇
- oracle重新编译package,oracle package 编译问题
- oppor11st升Android p,OPPO R11st刷机教程_OPPO R11st卡刷升级更新官方系统包
- (洛谷刷题)P1830 轰炸机III
热门文章
- paip.提升开发效率--终极方法---组件化及其障碍
- paip.接入支付接口功能流程总结
- 【单目标优化求解】基于matlab非线性权重的自适应鲸鱼算法求解单目标优化问题(NWAWOA)【含Matlab源码 1665期】
- 2021年全国研究生数学建模指导
- 【优化调度】基于matlab遗传算法求解码头泊位分配调度优化问题【含Matlab源码 247期】
- 【运量预测】基于matlab BP神经网络公路运量预测【含Matlab源码 413期】
- 误用检测_如何(不)在创业中误用人工智能
- 机器学习 数据间的定义_定义数据科学,机器学习和人工智能
- ai人工智能伪原创_AI伪科学与科学种族主义
- 人工智能ai以算法为基础_为公司采用人工智能做准备