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

一、发货通知

为了更好地跟踪订单的情况,需要第三方在收到最终支付通知之后,调用发货通知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) 发货通知相关推荐

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

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

  2. 微信支付v2开发(9) 标记客户投诉处理状态

    本文介绍微信支付中如何标记客户投诉的处理状态. 一.API Api 的 url 为: https://api.weixin.qq.com/payfeedback/update?access_token ...

  3. 微信支付接口开发流程

    第一步,微信支付接口申请: [1]首先需要申请成为服务号,并在申请微信认证后: [2]填写商户基本资料.业务基本资料.财务审核资料. [3]通过审核进入开发流程,通过开发接口文档的指引,完成开发. [ ...

  4. java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...

    这段时间把支付基本搞完了,因为做的过程中遇到许多问题,特地记录下来,同时方便其他java coder,废话少说,下面开始. 整体思路:在后台,根据参数创建支付宝客户端AlipayClient,发送参数 ...

  5. 微信公众号开发,微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  6. 1元云购微信支付功能开发 - 1元云购网站开发

    1元云购是时下比较流行的电子商务模式,1元云购系统现在在网上也比较多,但是大多数的网站建设源码是比较老的版本,要么就是没有微信支付功能,要么就是微信支付功能有缺陷,例如 1.微信支付的账户配置在程序里 ...

  7. (微信支付签名失败)微信支付v2版本踩坑-二次签名不同类型签名参数key不同

    小伙伴们在做微信支付对接的时候会遇到各种各样的坑,特别是微信支付v2版本,微信支付的二次签名官方文档没有给出明显的签名参数,导致在开发中很容易碰到微信支付的这个坑(微信支付签名失败),app签名key ...

  8. php微信支付测试开发(流程已通)

    必要条件: appid //公众号后台开发者中心获得(和邮件内的一样)   mchid//邮件内获得  key//商户后台自己设置  appsecret //公众号开发者中心获得 两个证书文件,邮件内 ...

  9. php微信支付接口开发程序

    必要条件: appid //公众号后台开发者中心获得(和邮件内的一样)   mchid//邮件内获得  key//商户后台自己设置  appsecret //公众号开发者中心获得 两个证书文件,邮件内 ...

  10. PHP获取微信支付v2预支付参数prepay_id后在小程序端完成支付

    PS:在上一篇文章中,通过对主体上传xml数据进行签名获取到了微信返回的数据,将返回的xml数据中的prepay_id提取出来后就可以进行下一步: 对prepay_id以及其他所需参数进行在此签名并将 ...

最新文章

  1. 【TeeChart Pro ActiveX教程】(八):ADO数据库访问(上)
  2. ios11修改微信步数_一个人有多孤独,看他的微信步数就知道了
  3. UA MATH567 高维统计专题2 Low-rank矩阵及其估计1 Matrix Completion简介
  4. 使用多窗体时, 关于节约内存和加快启动速度的思考与尝试
  5. 20145207 《Java程序设计》第4周学习总结
  6. linux重装出现cannot load file 5555h,重装win7系统开机提示cannot load file code:5555h怎么办...
  7. AspNet2.0页面生命周期
  8. php static_castunsigned int,static_cast揭密
  9. 编译加速 remote cache
  10. java块语句_Java运算符、表达式、语句块
  11. mysql拼装字段_Mysql 实现字段拼接的三个函数
  12. 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据
  13. linux 多线程服务端编程 pdf,Linux 多线程服务端编程.pdf
  14. Linux内核中获取虚拟机KVM结构体信息以及vCPU个数
  15. 体系结构笔记------动态调度中的Tomasulo算法
  16. Win10怎么删除快速访问中最近使用文件记录
  17. C++语言的基本符号与词汇
  18. oracle重新编译package,oracle package 编译问题
  19. oppor11st升Android p,OPPO R11st刷机教程_OPPO R11st卡刷升级更新官方系统包
  20. (洛谷刷题)P1830 轰炸机III

热门文章

  1. paip.提升开发效率--终极方法---组件化及其障碍
  2. paip.接入支付接口功能流程总结
  3. 【单目标优化求解】基于matlab非线性权重的自适应鲸鱼算法求解单目标优化问题(NWAWOA)【含Matlab源码 1665期】
  4. 2021年全国研究生数学建模指导
  5. 【优化调度】基于matlab遗传算法求解码头泊位分配调度优化问题【含Matlab源码 247期】
  6. 【运量预测】基于matlab BP神经网络公路运量预测【含Matlab源码 413期】
  7. 误用检测_如何(不)在创业中误用人工智能
  8. 机器学习 数据间的定义_定义数据科学,机器学习和人工智能
  9. ai人工智能伪原创_AI伪科学与科学种族主义
  10. 人工智能ai以算法为基础_为公司采用人工智能做准备