>  기사  >  백엔드 개발  >  주문 결제 상태를 변경하기 위해 WeChat 결제 콜백을 처리하기 위한 PHP 코드

주문 결제 상태를 변경하기 위해 WeChat 결제 콜백을 처리하기 위한 PHP 코드

不言
不言원래의
2018-08-04 14:12:056934검색

이 글의 내용은 주문 결제 상태를 변경하기 위한 PHP 서버 APP WeChat 결제 콜백 확인 서명에 관한 내용입니다. 필요한 참고 사항이 있는 경우 참고하시기 바랍니다.

<?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 컬의 post 메소드 및 get 메소드에 대한 요청 코드

PHP 중간 핵심 내용 분석에 대하여

위 내용은 주문 결제 상태를 변경하기 위해 WeChat 결제 콜백을 처리하기 위한 PHP 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.