欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-04-02 16:02:46
一、交易通知 用户在成功完成支付后,微信后台通知(post)商户服务器(notify_url)支付结果。商户可以使用notify_url的通知结果进行个性化页面的展示。...

一、交易通知

用户在成功完成支付后,微信后台通知(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的弹出窗

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

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