/**
* 返回token参数
* 参数 result 需要先urldecode
*/
function getToken($result) {
$result = urldecode ( $result ); // URL转码
$Arr = explode ( '&', $result ); // 根据 & 符号拆分
$temp = array (); // 临时存放拆分的数组
$myArray = array (); // 待签名的数组
// 循环构造key、value数组
for($i = 0; $i < count ( $Arr ); $i ++) {
$temp = explode ( '=', $Arr [$i], 2 );
$myArray [$temp [0]] = $temp [1];
}
$sign = $myArray ['sign']; // 支付宝返回签名
$myArray = para_filter ( $myArray ); // 拆分完毕后的数组
$sort_array = arg_sort ( $myArray ); // 排序数组
$this->mysign = build_mysign ( $sort_array, $this->_key, $this->sign_type ); // 构造本地参数签名,用于对比支付宝请求的签名
if ($this->mysign == $sign) // 判断签名是否正确
{
return getDataForXML ( $myArray ['res_data'], '/direct_trade_create_res/request_token' ); // 返回token
} else {
echo ('签名不正确'); // 当判断出签名不正确,请不要验签通过
return '签名不正确';
}
}
/**
* PHP Crul库 模拟Post提交至支付宝网关
* 如果使用Crul 你需要改一改你的php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
* 返回 $data
*/
function post($gateway_url) {
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $gateway_url ); // 配置网关地址
curl_setopt ( $ch, CURLOPT_HEADER, 0 ); // 过滤HTTP头
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POST, 1 ); // 设置post提交
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $this->req_data ); // post传输数据
$data = curl_exec ( $ch );
curl_close ( $ch );
return $data;
}