支付宝支付成功回调接口返回来的数据

  •   
  • 19047
  • PHP
  • 3
  • super_dodo
  • 2014/10/23

在支付宝支付成功之后,支付宝会通过不同的响应机制来通知用户的接口。支付宝的返回接口有xml的也有$_POST的数据.下面是记录一个支付宝返回的$_POST的数据的信息。

记录的方式为,单纯的写文件。file_put_contents()

if(!empty($_POST)){				//如果$_POST数据不为空的话
	foreach ($_POST as $k => $v) {
		file_put_contents('post.txt', $k.'---'.$v.PHP_EOL, FILE_APPEND);
	}

	if(!empty($_POST['trade_status'])){			//状态值不为空
		$bill_list_id_date = $_POST['out_trade_no'];		//商户订单号
		$trade_no = $_POST['trade_no'];						//支付宝交易号
		$trade_status = $_POST['trade_status'];				//交易状态
		$total_fee = $_POST['total_fee'];					//支付金额
		//检查该账单是否已支付.....

		if($trade_status == 'TRADE_FINISHED' OR $trade_status  == 'TRADE_SUCCESS') {
			//处理你的业务逻辑......
		}
	}
}

之后检查查看post.txt 你将会看到得到下面的数据。中间的****是我加上的。各个字段的意思的话,请查阅支付宝的相关说明。

discount---0.00       //
payment_type---1
subject---13********98余额充值给****1元
trade_no---2014*******032
buyer_email---94******6@qq.com
gmt_create---2014-10-21 11:06:15
notify_type---trade_status_sync
quantity---1
out_trade_no---20141021110603_3****5
seller_id---20884********649
notify_time---2014-10-21 11:20:25
body---13********8余额充值给百翼付1元
trade_status---TRADE_FINISHED
is_total_fee_adjust---N
total_fee---1.00
gmt_payment---2014-10-21 11:06:15
seller_email---co****@*****.com
gmt_close---2014-10-21 11:06:15
price---1.00
buyer_id---2088********329
notify_id---90bd154453dc243b52583fb0c2594a663s
use_coupon---N
sign_type---RSA
sign---bkylcYUYbBVlIJrSX94MyVG5+jLdOYjxPnzW2ySPRdqi2HPlGUjWD68LWV88SFhf2hcxOatVDol/T8oO/0ocpJBiFaaNrpUz+8EnUWar9uavMN6lsAi2ZLiYFpdU3dsz6WzObd/sf15/npQvi3XNAzR3gxYrLKe1G4i1r7RiwdM=

如果是xml的数据的话。大概你会得到下面的数据。$_POST['notify_data']的xml数据如下:

<notify>
	<partner>2088*******3</partner>
	<discount>0.00</discount>
	<payment_type>1</payment_type>
	<subject>测试支付</subject>
	<trade_no>2013********32</trade_no>
	<buyer_email>94*****6@qq.com</buyer_email>
	<gmt_create>2013-09-23 09:22:21</gmt_create>
	<quantity>1</quantity>
	<out_trade_no>2013********03</out_trade_no>
	<seller_id>2088********3</seller_id>
	<trade_status>TRADE_FINISHED</trade_status>
	<is_total_fee_adjust>N</is_total_fee_adjust>
	<total_fee>0.01</total_fee>
	<gmt_payment>2013-09-23 09:22:22</gmt_payment>
	<seller_email>13*******8@163.com</seller_email>
	<gmt_close>2013-09-23 09:22:22</gmt_close>
	<price>0.01</price>
	<buyer_id>2088********29</buyer_id>
	<use_coupon>N</use_coupon>
</notify>

同时附上解析xml的demo

$notify_data = $_POST['notify_data'];
$doc = new DOMDocument();
$doc->loadXML($notify_data);
if(!empty($doc->getElementsByTagName("notify")->item(0)->nodeValue) ) {
	$bill_list_id_date = $doc->getElementsByTagName("out_trade_no")->item(0)->nodeValue;		//商户订单号
	$trade_no = $doc->getElementsByTagName("trade_no")->item(0)->nodeValue;				//支付宝交易号
	$trade_status = $doc->getElementsByTagName("trade_status")->item(0)->nodeValue;		//交易状态
	$total_fee = $doc->getElementsByTagName("total_fee")->item(0)->nodeValue;			//支付金额
	//.............
}

相遇总是淬不及防,而离别多是蓄谋已久