php 常用方法

/**
	 * 返回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;
	}

你可能感兴趣的:(php 常用方法)