123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <?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;
- }
- }
- ?>
|