• 技术文章 >后端开发 >php教程

    php处理微信支付回调改变订单支付状态的代码

    不言不言2018-08-04 14:12:05原创5385
    本篇文章给大家带来的内容是关于php服务端APP微信支付回调验证签名改变订单支付状态,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    <?php
    
           //处理微信支付回调
        	
        	$time = time();
    
            $testxml  = file_get_contents("php://input");  //接收微信发送的支付成功信息
    
            //file_put_contents('D:\webroot\xianyijie\JK\weixin.txt',$testxml);
    
           	$result = XMLDataParse($testxml);
    
           	file_put_contents("D:\webroot\xianyijie\JK\weixin.txt", json_encode($result)."\r\n", FILE_APPEND); //将信息写入txt文件做支付备份
    
            $sign_return = $result['sign'];
    
        		//如果成功返回了
        		
                if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS'){
    
                		$key = "商户密钥key";
    
                		unset($result['sign']);
    
                		$sign = appgetSign($result,$key);
    
    				
    
    				   if($sign == $sign_return)    //验证签名
    				   {
     					  
     					  //这里是验签成功后的sql操作
                        
    				   
                            //如果操作成功
    						return "<xml><return_code><![CDATA[SUCCESS]]></return_code>
    				                      <return_msg><![CDATA[OK]]></return_msg>
    				                 </xml>";
                    
    						//如果操作失败
                            return "fail";	
    
    				   }
    				
                }
    
    
    /*
     * 格式化参数格式化成url参数  生成签名sign
    */
     function appgetSign($Obj,$appwxpay_key)
    
      {
    
        foreach ($Obj as $k => $v)
    
        {
    
          $Parameters[$k] = $v;
    
        }
    
        //签名步骤一:按字典序排序参数
    
        ksort($Parameters);
    
        $String = formatBizQueryParaMap($Parameters, false);
    
        //echo '【string1】'.$String.'</br>';
    
        //签名步骤二:在string后加入KEY
            if($appwxpay_key){
                $String = $String."&key=".$appwxpay_key;
            }
            
        //echo "【string2】".$String."</br>";
    
        //签名步骤三:MD5加密
    
        $String = md5($String);
    
        //echo "【string3】 ".$String."</br>";
    
        //签名步骤四:所有字符转为大写
    
        $result_ = strtoupper($String);
    
        //echo "【result】 ".$result_."</br>";
    
        return $result_;
    
      }
    
    
    
    //xml格式数据解析函数
     function XMLDataParse($data){
      $xml = simplexml_load_string($data,NULL,LIBXML_NOCDATA);
      $array=json_decode(json_encode($xml),true);
      return $array;
     }
    
    
    ?>

    相关文章推荐:

    php的curl中post方式和get方式的请求代码

    关于PHP中间键的内容解析

    以上就是php处理微信支付回调改变订单支付状态的代码的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php处理微信
    上一篇:Thinkphp批量下载图片和文件件的代码实例 下一篇:php如何利用经度和纬度来计算两点之间的距离(纯代码)
    千万级数据并发解决方案

    相关文章推荐

    • 100道常见PHP面试题(附解析),增强你的知识储备!• [视频教程]LAMP兄弟连视PHP函数-printf• 专家预言:PHP将比Java更受开发人员欢迎• php 数据采集-php如何连结数据库,怎么写代码• mysql-在Windows32进行自定义环境搭建测试PHP连接MySQL时总是提示Fatal error: Call to undefined function
    1/1

    PHP中文网