微信支付开发交易通知实例


Posted in PHP onJuly 12, 2016

一、交易通知

用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果。商户可以使用notify_url的通知结果进行个性化页面的展示。

对后台通知交互时,如果微信收到商户的应答不是success或超时,微信不为通知失败,微信会通过一定的策略(如30分钟共8次)定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。

后台通知通过请求中的 notify_url ?行,采用 POST 机制。

同时,在postData中还将包含xml数据。

二、交易结果获取与响应

根据官方文档,创建notice.php用于通知结果。

程序内容如下所示:

<?php

foreach ($_GET as $key=>$value) 
{
 logger("Key: $key; Value: $value");
}
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
logger($postStr);

if (isset($_GET)){
 echo "success";
}

//日志记录
function logger($log_content)
{
 $max_size = 100000;
 $log_filename = "log.xml";
 if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}
 file_put_contents($log_filename, date('H:i:s')." ".$log_content."\r\n", FILE_APPEND);
}
?>

上述程序的作用是:

获取post到url的通知,他们以GET变量形式

获取post的XML数据包

返回成功消息 success

将notice.php的完整路径放入JS API支付的notice url中。

$wxPayHelper->setParameter("notify_url", http://www.doucube.com/wxpay/notice.php);

这样当交易完成后,该url将收到通知,并记录在日志文件中,我们的测试如下所示:

获得的GET变量及XML如下所示:

Key: bank_billno; Value: 201405273540085997
Key: bank_type; Value: 2011
Key: discount; Value: 0
Key: fee_type; Value: 1
Key: input_charset; Value: GBK
Key: notify_id; Value: Gx8ov6tT6_yaARrtKG6RFZ4KiVtKqVnJzvulFlteJ3dhBg38iRtKs0pTXXfgh8WnH15mIhG6j65ggbzzYguh1mutG3B5oHsK
Key: out_trade_no; Value: JfuKdiBig4zZnE4n
Key: partner; Value: 1234567890
Key: product_fee; Value: 1
Key: sign; Value: 08876C4A9F7A36A9EA972C211C122362
Key: sign_type; Value: MD5
Key: time_end; Value: 20140527194139
Key: total_fee; Value: 1
Key: trade_mode; Value: 1
Key: trade_state; Value: 0
Key: transaction_id; Value: 1218614901201405273313473135
Key: transport_fee; Value: 0

<xml><OpenId><![CDATA[o0pk9uIVnlY-fJkzFKEbQ6LJ4cFc]]></OpenId>
<AppId><![CDATA[wx0000000000000000]]></AppId>
<IsSubscribe>1</IsSubscribe>
<TimeStamp>1401190899</TimeStamp>
<NonceStr><![CDATA[iOb2flJ0ILFAmBqJ]]></NonceStr>
<AppSignature><![CDATA[66678894aae680ba140e18e66d1295dfadabd9ab]]></AppSignature>
<SignMethod><![CDATA[sha1]]></SignMethod>
</xml>

而在微信窗口中将收到OK的弹出窗

微信支付开发交易通知实例

以上就是对微信支付开发交易通知的资料整理,谢谢支持!

PHP 相关文章推荐
在JavaScript中调用php程序
Mar 09 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
Apr 09 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
Dec 19 PHP
Symfony2学习笔记之模板用法详解
Mar 17 PHP
PHP生成随机数的方法总结
Mar 01 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 03 PHP
php实现的debug log日志操作类实例
Jul 12 #PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 #PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 #PHP
php处理带有中文URL的方法
Jul 11 #PHP
PHP实现JS中escape与unescape的方法
Jul 11 #PHP
php处理复杂xml数据示例
Jul 11 #PHP
php的debug相关函数用法示例
Jul 11 #PHP
You might like
PHP 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
js监听input输入框值的实时变化实例
2017/01/26 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
致接力运动员广播稿
2014/02/17 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript