首页 >后端开发 >php教程 >php处理微信支付回调改变订单支付状态的代码

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

不言
不言原创
2018-08-04 14:12:056973浏览

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

<?php

       //处理微信支付回调
    	
    	$time = time();

        $testxml  = file_get_contents("php://input");  //接收微信发送的支付成功信息

        //file_put_contents(&#39;D:\webroot\xianyijie\JK\weixin.txt&#39;,$testxml);

       	$result = XMLDataParse($testxml);

       	file_put_contents("D:\webroot\xianyijie\JK\weixin.txt", json_encode($result)."\r\n", FILE_APPEND); //将信息写入txt文件做支付备份

        $sign_return = $result[&#39;sign&#39;];

    		//如果成功返回了
    		
            if($result[&#39;return_code&#39;] == &#39;SUCCESS&#39; && $result[&#39;result_code&#39;] == &#39;SUCCESS&#39;){

            		$key = "商户密钥key";

            		unset($result[&#39;sign&#39;]);

            		$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 &#39;【string1】&#39;.$String.&#39;</br>&#39;;

    //签名步骤二:在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