zoukankan      html  css  js  c++  java
  • 3种日志类型,微信付款反馈-->写入txt日志

    --> 接收  $GLOBALS["HTTP_RAW_POST_DATA"]

    ---->xml 反系列化$qr = XML_unserialize( $rowpost );

    -->写入日志 转json   file_put_contents( 'xxxx.txt' , ' '.json_encode_ex() , file_append)

    'BIZ_LOGFILE' => '/home/tripweb/logs/tripb.biz.log', # 业务日志
    'ERR_LOGFILE' => '/home/tripweb/logs/error', # 错误业务日志的目录
    'LOGPATH_ORDER_NITIFY' => '/home/tripweb/logs/third', # 运营环境配置. 用于记录第三方接口返回的通知消息,这里都进行一个日志记录
    'TRIPB_HTTP_HOST' => 'mantis.test.xxx.cn',

    /home/tripweb/logs/third

    cat 51book_createorder_201606230010_result.txt | grep { | json_pp | more 

    //格式化查看json数据

    cat 51book_createorder_201606230010_result.txt | grep { | json_pp | more >text.txt

     //写入txt文件

    {
    "return" : {
        "returnCode" : "S",
        "order" : {
        "flightInfoList" : {
        "planeModel" : "",
        "seatDiscount" : 0.5,
        "arrTime" : "0055",
        "arrCode" : "WUH",
        "depCode" : "PEK",
        "depTime" : "2235",
        "flightNo" : "MU2454",
        "depDate" : "2016-08-23",
        "seatClass" : "R"
    },
        "param1" : "0.0",
        "createdAt" : "2016-06-23 20:24:53",
        "pnrNo" : "------",
        "increaseSystemCharge" : "0",
        "policyId" : "111329315",
        "status" : "NEW_ORDER",
        "passengerList" : {
        "fuelTax" : 0,

    =============微信付款后,接收微信反馈--->写入txt文件中

    public function on_wxpay_complete( )
    {
    // $info = $_REQUEST;

    if( APP_DEBUG ) ThinkLog::write('WxNotify: RAW_POST: '.$GLOBALS["HTTP_RAW_POST_DATA"], 'DEBUG' );

    $rowpost = $GLOBALS["HTTP_RAW_POST_DATA"];

    vendor('XmlParser.XML','','.class.php');

    $qr = XML_unserialize( $rowpost );

    //记录日志,将所有的第三方通知消息都记录日志
    $curtime = date('Ymd H:i:s');
    $ordernumber = $qr['xml']['out_trade_no'];
    $ordernumber = substr( $qr['xml']['out_trade_no'], 0, 12 );
    file_put_contents( C('LOGPATH_ORDER_NITIFY')."/Wxpay_{$ordernumber}.txt", " $curtime ".json_encode_ex($qr),FILE_APPEND );

    写入文件----当前时间--(转成json后)写入内容---追加方式写入

    ============微信返回XML文件-->xml反系列化-->成数组

    verdor/XmlParser/XML.class.php

    <?php


    ###################################################################################
    #
    # XML Library, by Keith Devens, version 1.2b
    # <a href="http://keithdevens.com/software/phpxml" target="_blank">http://keithdevens.com/software/phpxml</a>
    #
    # This code is Open Source, released under terms similar to the Artistic License.
    # Read the license at <a href="http://keithdevens.com/software/license" target="_blank">http://keithdevens.com/software/license</a>
    #
    ###################################################################################

    ###################################################################################
    # XML_unserialize: takes raw XML as a parameter (a string)
    # and returns an equivalent PHP data structure
    ###################################################################################
    function & XML_unserialize(&$xml){
    $xml_parser = &new XML();
    $data = &$xml_parser->parse($xml);
    $xml_parser->destruct();
    return $data;
    }
    ###################################################################################
    # XML_serialize: serializes any PHP data structure into XML
    # Takes one parameter: the data to serialize. Must be an array.
    ###################################################################################
    function & XML_serialize(&$data, $level = 0, $prior_key = NULL){
    if($level == 0){ ob_start(); echo '<?xml version="1.0" ?>'," "; }
    while(list($key, $value) = each($data))
    if(!strpos($key, ' attr')) #if it's not an attribute
    #we don't treat attributes by themselves, so for an emptyempty element
    # that has attributes you still need to set the element to NULL

    if(is_array($value) and array_key_exists(0, $value)){
    XML_serialize($value, $level, $key);
    }else{
    $tag = $prior_key ? $prior_key : $key;
    echo str_repeat(" ", $level),'<',$tag;
    if(array_key_exists("$key attr", $data)){ #if there's an attribute for this element
    while(list($attr_name, $attr_value) = each($data["$key attr"]))
    echo ' ',$attr_name,'="',htmlspecialchars($attr_value),'"';
    reset($data["$key attr"]);
    }

    if(is_null($value)) echo " /> ";
    elseif(!is_array($value)) echo '>',htmlspecialchars($value),"</$tag> ";
    else echo "> ",XML_serialize($value, $level+1),str_repeat(" ", $level),"</$tag> ";
    }
    reset($data);
    if($level == 0){ $str = &ob_get_contents(); ob_end_clean(); return $str; }
    }


    class XML
    {
    ###################################################################################
    # XML class: utility class to be used with PHP's XML handling functions
    ###################################################################################
    var $parser; #a reference to the XML parser
    var $document; #the entire XML structure built up so far
    var $parent; #a pointer to the current parent - the parent will be an array
    var $stack; #a stack of the most recent parent at each nesting level
    var $last_opened_tag; #keeps track of the last tag opened.

    function XML(){
    $this->parser = &xml_parser_create();
    xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
    xml_set_object($this->parser, $this);
    xml_set_element_handler($this->parser, 'open','close');
    xml_set_character_data_handler($this->parser, 'data');
    }
    function destruct(){ xml_parser_free($this->parser); }
    function & parse(&$data){
    $this->document = array();
    $this->stack = array();
    $this->parent = &$this->document;
    return xml_parse($this->parser, $data, true) ? $this->document : NULL;
    }
    function open(&$parser, $tag, $attributes){
    $this->data = ''; #stores temporary cdata
    $this->last_opened_tag = $tag;
    if(is_array($this->parent) and array_key_exists($tag,$this->parent)){ #if you've seen this tag before
    if(is_array($this->parent[$tag]) and array_key_exists(0,$this->parent[$tag])){ #if the keys are numeric
    #this is the third or later instance of $tag we've come across
    $key = count_numeric_items($this->parent[$tag]);
    }else{
    #this is the second instance of $tag that we've seen. shift around
    if(array_key_exists("$tag attr",$this->parent)){
    $arr = array('0 attr'=>&$this->parent["$tag attr"], &$this->parent[$tag]);
    unset($this->parent["$tag attr"]);
    }else{
    $arr = array(&$this->parent[$tag]);
    }
    $this->parent[$tag] = &$arr;
    $key = 1;
    }
    $this->parent = &$this->parent[$tag];
    }else{
    $key = $tag;
    }
    if($attributes) $this->parent["$key attr"] = $attributes;
    $this->parent = &$this->parent[$key];
    $this->stack[] = &$this->parent;
    }
    function data(&$parser, $data){
    if($this->last_opened_tag != NULL) #you don't need to store whitespace in between tags
    $this->data .= $data;
    }
    function close(&$parser, $tag){
    if($this->last_opened_tag == $tag){
    $this->parent = $this->data;
    $this->last_opened_tag = NULL;
    }
    array_pop($this->stack);
    if($this->stack) $this->parent = &$this->stack[count($this->stack)-1];
    }
    }

    function count_numeric_items(&$array){
    return is_array($array) ? count(array_filter(array_keys($array), 'is_numeric')) : 0;

  • 相关阅读:
    MySQL数据库的常用命令
    函数返回 局部变量问题
    几种网络I/O模型
    socket的select模型【摘】
    Linux Bash Shell入门教程【转载】
    Shell学习【转】
    unicode 2 utf8 [转]
    linux下多线程的创建与等待详解 【转载】
    运算(93&-8)的结果
    一道腾讯的面试题,关于a和&a
  • 原文地址:https://www.cnblogs.com/bj-tony/p/5669668.html
Copyright © 2011-2022 走看看