新的PHP微信支付DEMO是你们腾讯新来的小学生写的么?
[代码]<?php[代码][代码]/**[代码][代码]*[代码][代码]* example目录下为简单的支付样例,仅能用于搭建快速体验微信支付使用[代码][代码]* 样例的作用仅限于指导如何使用sdk,在安全上面仅做了简单处理, 复制使用样例代码时请慎重[代码][代码]* 请勿直接直接使用样例对外提供服务[代码][代码]*[代码][代码]**/[代码] [代码]require_once[代码] [代码]"../lib/WxPay.Api.php"[代码][代码];[代码][代码]require_once[代码] [代码]'../lib/WxPay.Notify.php'[代码][代码];[代码][代码]require_once[代码] [代码]"WxPay.Config.php"[代码][代码];[代码][代码]require_once[代码] [代码]'log.php'[代码][代码];[代码] [代码]//初始化日志[代码][代码]$logHandler[代码][代码]= [代码][代码]new[代码] [代码]CLogFileHandler([代码][代码]"../logs/"[代码][代码].[代码][代码]date[代码][代码]([代码][代码]'Y-m-d'[代码][代码]).[代码][代码]'.log'[代码][代码]);[代码][代码]$log[代码] [代码]= Log::Init([代码][代码]$logHandler[代码][代码], 15);[代码] [代码]class[代码] [代码]PayNotifyCallBack [代码][代码]extends[代码] [代码]WxPayNotify[代码][代码]{[代码][代码] [代码][代码]//查询订单[代码][代码] [代码][代码]public[代码] [代码]function[代码] [代码]Queryorder([代码][代码]$transaction_id[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]$input[代码] [代码]= [代码][代码]new[代码] [代码]WxPayOrderQuery();[代码][代码] [代码][代码]$input[代码][代码]->SetTransaction_id([代码][代码]$transaction_id[代码][代码]);[代码] [代码] [代码][代码]$config[代码] [代码]= [代码][代码]new[代码] [代码]WxPayConfig();[代码][代码] [代码][代码]$result[代码] [代码]= WxPayApi::orderQuery([代码][代码]$config[代码][代码], [代码][代码]$input[代码][代码]);[代码][代码] [代码][代码]Log::DEBUG([代码][代码]"query:"[代码] [代码]. json_encode([代码][代码]$result[代码][代码]));[代码][代码] [代码][代码]if[代码][代码]([代码][代码]array_key_exists[代码][代码]([代码][代码]"return_code"[代码][代码], [代码][代码]$result[代码][代码])[代码][代码] [代码][代码]&& [代码][代码]array_key_exists[代码][代码]([代码][代码]"result_code"[代码][代码], [代码][代码]$result[代码][代码])[代码][代码] [代码][代码]&& [代码][代码]$result[代码][代码][[代码][代码]"return_code"[代码][代码]] == [代码][代码]"SUCCESS"[代码][代码] [代码][代码]&& [代码][代码]$result[代码][代码][[代码][代码]"result_code"[代码][代码]] == [代码][代码]"SUCCESS"[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]return[代码] [代码]true;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]*[代码][代码] [代码][代码]* 回包前的回调方法[代码][代码] [代码][代码]* 业务可以继承该方法,打印日志方便定位[代码][代码] [代码][代码]* @param string $xmlData 返回的xml参数[代码][代码] [代码][代码]*[代码][代码] [代码][代码]**/[代码][代码] [代码][代码]public[代码] [代码]function[代码] [代码]LogAfterProcess([代码][代码]$xmlData[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]Log::DEBUG([代码][代码]"call back, return xml:"[代码] [代码]. [代码][代码]$xmlData[代码][代码]);[代码][代码] [代码][代码]return[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码] [代码] [代码][代码]//重写回调处理函数[代码][代码] [代码][代码]/**[代码][代码] [代码][代码]* @param WxPayNotifyResults $data 回调解释出的参数[代码][代码] [代码][代码]* @param WxPayConfigInterface $config[代码][代码] [代码][代码]* @param string $msg 如果回调处理失败,可以将错误信息输出到该方法[代码][代码] [代码][代码]* @return true回调出来完成不需要继续回调,false回调处理未完成需要继续回调[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]public[代码] [代码]function[代码] [代码]NotifyProcess([代码][代码]$objData[代码][代码], [代码][代码]$config[代码][代码], &[代码][代码]$msg[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]$data[代码] [代码]= [代码][代码]$objData[代码][代码]->GetValues();[代码][代码] [代码][代码]//TODO 1、进行参数校验[代码][代码] [代码][代码]if[代码][代码](![代码][代码]array_key_exists[代码][代码]([代码][代码]"return_code"[代码][代码], [代码][代码]$data[代码][代码])[代码][代码] [代码][代码]||([代码][代码]array_key_exists[代码][代码]([代码][代码]"return_code"[代码][代码], [代码][代码]$data[代码][代码]) && [代码][代码]$data[代码][代码][[代码][代码]'return_code'[代码][代码]] != [代码][代码]"SUCCESS"[代码][代码])) {[代码][代码] [代码][代码]//TODO失败,不是支付成功的通知[代码][代码] [代码][代码]//如果有需要可以做失败时候的一些清理处理,并且做一些监控[代码][代码] [代码][代码]$msg[代码] [代码]= [代码][代码]"异常异常"[代码][代码];[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]if[代码][代码](![代码][代码]array_key_exists[代码][代码]([代码][代码]"transaction_id"[代码][代码], [代码][代码]$data[代码][代码])){[代码][代码] [代码][代码]$msg[代码] [代码]= [代码][代码]"输入参数不正确"[代码][代码];[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]//TODO 2、进行签名验证[代码][代码] [代码][代码]try[代码] [代码]{[代码][代码] [代码][代码]$checkResult[代码] [代码]= [代码][代码]$objData[代码][代码]->CheckSign([代码][代码]$config[代码][代码]);[代码][代码] [代码][代码]if[代码][代码]([代码][代码]$checkResult[代码] [代码]== false){[代码][代码] [代码][代码]//签名错误[代码][代码] [代码][代码]Log::ERROR([代码][代码]"签名错误..."[代码][代码]);[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]} [代码][代码]catch[代码][代码](Exception [代码][代码]$e[代码][代码]) {[代码][代码] [代码][代码]Log::ERROR(json_encode([代码][代码]$e[代码][代码]));[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]//TODO 3、处理业务逻辑[代码][代码] [代码][代码]Log::DEBUG([代码][代码]"call back:"[代码] [代码]. json_encode([代码][代码]$data[代码][代码]));[代码][代码] [代码][代码]$notfiyOutput[代码] [代码]= [代码][代码]array[代码][代码]();[代码][代码] [代码] [代码] [代码] [代码] [代码][代码]//查询订单,判断订单真实性[代码][代码] [代码][代码]if[代码][代码](![代码][代码]$this[代码][代码]->Queryorder([代码][代码]$data[代码][代码][[代码][代码]"transaction_id"[代码][代码]])){[代码][代码] [代码][代码]$msg[代码] [代码]= [代码][代码]"订单查询失败"[代码][代码];[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]true;[代码][代码] [代码][代码]}[代码][代码]}[代码] [代码]$config[代码] [代码]= [代码][代码]new[代码] [代码]WxPayConfig();[代码][代码]Log::DEBUG([代码][代码]"begin notify"[代码][代码]);[代码][代码]$notify[代码] [代码]= [代码][代码]new[代码] [代码]PayNotifyCallBack();[代码][代码]$notify[代码][代码]->Handle([代码][代码]$config[代码][代码], false);[代码]作为一个 notify.php 用于接收支付结果返回的程序,竟然连基本验证签名,并回应微信,的能力都没有,你们是写出这玩意出来搞笑的么。