本篇文章給大家帶來的內容是關於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中間鍵的內容解析