| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- <?php
- /**
- * 请求类
- * ============================================================================
- * api说明:
- * init(),初始化函数,默认给一些参数赋值,如cmdno,date等。
- * getGateURL()/setGateURL(),获取/设置入口地址,不包含参数值
- * getKey()/setKey(),获取/设置密钥
- * getParameter()/setParameter(),获取/设置参数值
- * getAllParameters(),获取所有参数
- * getRequestURL(),获取带参数的请求URL
- * getDebugInfo(),获取debug信息
- *
- * ============================================================================
- *
- */
- class RequestHandler {
-
- /** 网关url地址 */
- var $gateUrl;
-
- /** 密钥 */
- var $key;
-
- /** 请求的参数 */
- var $parameters;
-
- /** debug信息 */
- var $debugInfo;
-
- function __construct() {
- $this->RequestHandler();
- }
-
- function RequestHandler() {
- $this->gateUrl = "'https://pay.swiftpass.cn/pay/gateway";
- $this->key = "";
- $this->parameters = array();
- $this->debugInfo = "";
- }
-
- /**
- *初始化函数。
- */
- function init() {
- //nothing to do
- }
-
- /**
- *获取入口地址,不包含参数值
- */
- function getGateURL() {
- return $this->gateUrl;
- }
-
- /**
- *设置入口地址,不包含参数值
- */
- function setGateURL($gateUrl) {
- $this->gateUrl = $gateUrl;
- }
-
- /**
- *获取密钥
- */
- function getKey() {
- return $this->key;
- }
-
- /**
- *设置密钥
- */
- function setKey($key) {
- $this->key = $key;
- }
-
- /**
- *获取参数值
- */
- function getParameter($parameter) {
- return isset($this->parameters[$parameter])?$this->parameters[$parameter]:'';
- }
-
- /**
- *设置参数值
- */
- function setParameter($parameter, $parameterValue) {
- $this->parameters[$parameter] = $parameterValue;
- }
- /**
- * 一次性设置参数
- */
- function setReqParams($post,$filterField=null){
- if($filterField !== null){
- forEach($filterField as $k=>$v){
- unset($post[$v]);
- }
- }
-
- //判断是否存在空值,空值不提交
- forEach($post as $k=>$v){
- if(empty($v)){
- unset($post[$k]);
- }
- }
- $this->parameters = $post;
- }
-
- /**
- *获取所有请求的参数
- *@return array
- */
- function getAllParameters() {
- return $this->parameters;
- }
-
- /**
- *获取带参数的请求URL
- */
- function getRequestURL() {
-
- $this->createSign();
-
- $reqPar = "";
- ksort($this->parameters);
- foreach($this->parameters as $k => $v) {
- $reqPar .= $k . "=" . urlencode($v) . "&";
- }
-
- //去掉最后一个&
- $reqPar = substr($reqPar, 0, strlen($reqPar)-1);
-
- $requestURL = $this->getGateURL() . "?" . $reqPar;
-
- return $requestURL;
-
- }
-
- /**
- *获取debug信息
- */
- function getDebugInfo() {
- return $this->debugInfo;
- }
-
- /**
- *创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。
- */
- function createSign() {
- $signPars = "";
- ksort($this->parameters);
- foreach($this->parameters as $k => $v) {
- if("" != $v && "sign" != $k) {
- $signPars .= $k . "=" . $v . "&";
- }
- }
- $signPars .= "key=" . $this->getKey();
- $sign = strtoupper(md5($signPars));
- $this->setParameter("sign", $sign);
-
- //debug信息
- $this->_setDebugInfo($signPars . " => sign:" . $sign);
-
- }
-
- /**
- *设置debug信息
- */
- function _setDebugInfo($debugInfo) {
- $this->debugInfo = $debugInfo;
- }
- }
- ?>
|