注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

php asp 高端网站开发 微信网站开发 视频会议软硬件

 
 
 

日志

 
 

php解析支付宝担保交易xml通知内容  

2015-12-12 11:00:53|  分类: 支付宝担保交易 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
支付宝担保交易,确认发货时,收到了一个xml通知内容,需要解析为一般的变量;
顺便写了一个小测试代码,把一个xml字符串转化成xml对象。

php解析支付宝担保交易xml通知内容 - 加菲 - 加菲
 
这是最后的解析显示,具体代码如下:


<?php
header("Content-type: text/html; charset=utf-8");
$xml_str = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
$xml_str .="
<alipay>
<is_success>T</is_success>
<request>
<param name=\"trade_no\">2015121100001000730067000000</param>
<param name=\"_input_charset\">utf-8</param>
<param name=\"transport_type\">EXPRESS</param>
<param name=\"service\">send_goods_confirm_by_platform</param>
<param name=\"partner\">2088021162000000</param>
<param name=\"invoice_no\">67</param>
<param name=\"logistics_name\">顺丰快递</param>
</request>

<response>
<tradeBase>
<buyer_account>20883024522657000000</buyer_account>
<buyer_actions>[REFUND, CONFIRM_GOODS]</buyer_actions>
<buyer_login_email>1160355344@qq.com</buyer_login_email>
<buyer_type>PRIVATE_ACCOUNT</buyer_type>
<buyer_user_id>2088302452000000</buyer_user_id>
<channel>interface/escrow</channel>
<create_time>2015-12-11 14:57:56</create_time>
<currency>156</currency>
<gathering_type>1</gathering_type>
<last_modified_time>2015-12-11 14:58:41</last_modified_time>
<operator_role>B</operator_role>
<out_trade_no>850503161038000000</out_trade_no>
<partner_id>2088021162000000</partner_id>
<seller_account>2088021162964000000</seller_account>
<seller_actions>[EXTEND_TIMEOUT]</seller_actions>
<seller_login_email>3240879000@qq.com</seller_login_email>
<seller_type>CORPORATE_ACCOUNT</seller_type>
<seller_user_id>2088021162000000</seller_user_id>
<service_fee>0.00</service_fee>
<service_fee_ratio>0.0</service_fee_ratio>
<stop_timeout>F</stop_timeout>
<total_fee>0.01</total_fee>
<trade_from>INST_PARTNER</trade_from>
<trade_no>2015121100001000730067000000</trade_no>
<trade_status>WAIT_BUYER_CONFIRM_GOODS</trade_status>
<trade_type>S</trade_type>
</tradeBase>
</response>

<sign>856e3d46f4b5e93d7afa3f70b8f0000</sign>
<sign_type>MD5</sign_type>
</alipay>
";
$xml = simplexml_load_string($xml_str);//把字符串转为xml对象





/**
* 加载Xml文件
*/
//$xml=simplexml_load_file("2.xml") ;//加载xml文件为xml对象

echo "var_dump(xml)"."<br>";
echo "<pre>";
var_dump($xml);
echo "</pre>";

echo "<br><br><br><br><br><br>";

echo $xml->is_success . "<br>";echo "<hr>";
echo $xml->request->param[0] . "<br>";
echo $xml->request->param[1] . "<br>";
echo $xml->request->param[2] . "<br>";
echo $xml->request->param[3] . "<br>";
echo $xml->request->param[4] . "<br>";
echo $xml->request->param[5] . "<br>";
echo $xml->request->param[6] . "<br>";
echo "<h1>response" . "</h1>";
echo "<b>buyer_account:</b>";
echo $xml->response->tradeBase->buyer_account . "</br>";
echo "<b>buyer_actions:</b>";
echo $xml->response->tradeBase->buyer_actions . "<br>";
echo "<b>buyer_login_email:</b>";
echo $xml->response->tradeBase->buyer_login_email . "<br>";
echo "<b>buyer_type:</b>";
echo $xml->response->tradeBase->buyer_type . "<br>";
echo "<b>buyer_user_id:</b>";
echo $xml->response->tradeBase->buyer_user_id . "<br>";
echo "<b>channel:</b>";
echo $xml->response->tradeBase->channel . "<br>";
echo "<b>create_time:</b>";
echo $xml->response->tradeBase->create_time . "<br>";
echo "<b>currency:</b>";
echo $xml->response->tradeBase->currency . "<br>";
echo "<b>gathering_type:</b>";
echo $xml->response->tradeBase->gathering_type . "<br>";
echo "<b>last_modified_time:</b>";
echo $xml->response->tradeBase->last_modified_time . "<br>";
echo "<b>operator_role:</b>";
echo $xml->response->tradeBase->operator_role . "<br>";
echo "<b>out_trade_no:</b>";
echo $xml->response->tradeBase->out_trade_no . "<br>";
echo "<b>partner_id:</b>";
echo $xml->response->tradeBase->partner_id . "<br>";
echo "<b>seller_account:</b>";
echo $xml->response->tradeBase->seller_account . "<br>";
echo "<b>seller_actions:</b>";
echo $xml->response->tradeBase->seller_actions . "<br>";
echo "<b>seller_login_email:</b>";
echo $xml->response->tradeBase->seller_login_email . "<br>";
echo "<b>seller_type:</b>";
echo $xml->response->tradeBase->seller_type . "<br>";
echo "<b>seller_user_id:</b>";
echo $xml->response->tradeBase->seller_user_id . "<br>";
echo "<b>service_fee:</b>";
echo $xml->response->tradeBase->service_fee . "<br>";
echo "<b>service_fee_ratio:</b>";
echo $xml->response->tradeBase->service_fee_ratio . "<br>";
echo "<b>stop_timeout:</b>";
echo $xml->response->tradeBase->stop_timeout . "<br>";
echo "<b>total_fee:</b>";
echo $xml->response->tradeBase->total_fee . "<br>";
echo "<b>trade_from:</b>";
echo $xml->response->tradeBase->trade_from . "<br>";
echo "<b>trade_no:</b>";
echo $xml->response->tradeBase->trade_no . "<br>";
echo "<b>trade_status:</b>";
echo $xml->response->tradeBase->trade_status . "<br>";
echo "<b>trade_type:</b>";
echo $xml->response->tradeBase->trade_type . "</b>";



echo "<br><br><br><br><br>";















exit;





echo "<hr>";
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br>";
}

?>


上面代码有两种情况,一种是字符串转成xml 对象,一种是加载xml文件为xml对象,我只是把xml文件中的内容复制出来,然后存在一个变量里,进行了一下转换,仅这一点区别而已。


以下是我的一点理解,对与不对不确定:

根元素是alipay
根元素下的直接子元素,如果没有再下级子元素,直接转换成string变量,如is_success。
根元素下的直接子元素,如果也有下级子元素,则直接子元素转换成对象。
某一层的子元素,如果名称相同,则转换成数组。如request下的param
某一层的子元素,如果名称各不相同,都转为string变量,如tradeBase下的子元素。

附上xml结构说明教程:
http://www.w3school.com.cn/xml/xml_tree.asp

XML 文档形成一种树结构
父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。

这些都是数据结构中的基本概念,就不多记了。
  评论这张
 
阅读(279)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017