$_var_10) { if ($_var_7) { $_var_10 = urlencode($_var_10); } $_var_8 .= $_var_9 . '=' . $_var_10 . '&'; } $_var_11; if (strlen($_var_8) > 0) { $_var_11 = substr($_var_8, 0, strlen($_var_8) - 1); } return $_var_11; } public function getSign($_var_12) { foreach ($_var_12 as $_var_9 => $_var_10) { $_var_13[$_var_9] = $_var_10; } ksort($_var_13); $_var_14 = $this->formatBizQueryParaMap($_var_13, false); $_var_14 = $_var_14 . '&key=' . WxPayConfig::$KEY; $_var_14 = md5($_var_14); $_var_15 = strtoupper($_var_14); return $_var_15; } function arrayToXml($_var_16) { $_var_17 = ''; foreach ($_var_16 as $_var_18 => $_var_19) { if (is_numeric($_var_19)) { $_var_17 .= '<' . $_var_18 . '>' . $_var_19 . ''; } else { $_var_17 .= '<' . $_var_18 . '>'; } } $_var_17 .= ''; return $_var_17; } public function xmlToArray($_var_17) { $_var_20 = json_decode(json_encode(simplexml_load_string($_var_17, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $_var_20; } public function postXmlCurl($_var_17, $_var_21, $_var_22 = 30) { $_var_23 = curl_init(); curl_setopt($_var_23, CURLOPT_TIMEOUT, $_var_22); curl_setopt($_var_23, CURLOPT_URL, $_var_21); curl_setopt($_var_23, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($_var_23, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($_var_23, CURLOPT_HEADER, FALSE); curl_setopt($_var_23, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($_var_23, CURLOPT_POST, TRUE); curl_setopt($_var_23, CURLOPT_POSTFIELDS, $_var_17); $_var_24 = curl_exec($_var_23); curl_close($_var_23); if ($_var_24) { return $_var_24; } else { $_var_25 = curl_errno($_var_23); echo "curl出错,错误码:{$_var_25}" . '
'; echo '错误原因查询
'; curl_close($_var_23); return false; } } function postXmlSSLCurl($_var_17, $_var_21, $_var_22 = 30) { $_var_23 = curl_init(); curl_setopt($_var_23, CURLOPT_TIMEOUT, $_var_22); curl_setopt($_var_23, CURLOPT_URL, $_var_21); curl_setopt($_var_23, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($_var_23, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($_var_23, CURLOPT_HEADER, FALSE); curl_setopt($_var_23, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($_var_23, CURLOPT_SSLCERTTYPE, 'PEM'); curl_setopt($_var_23, CURLOPT_SSLCERT, WxPayConfig::SSLCERT_PATH); curl_setopt($_var_23, CURLOPT_SSLKEYTYPE, 'PEM'); curl_setopt($_var_23, CURLOPT_SSLKEY, WxPayConfig::SSLKEY_PATH); curl_setopt($_var_23, CURLOPT_POST, true); curl_setopt($_var_23, CURLOPT_POSTFIELDS, $_var_17); $_var_24 = curl_exec($_var_23); if ($_var_24) { return $_var_24; } else { $_var_25 = curl_errno($_var_23); echo "curl出错,错误码:{$_var_25}" . '
'; echo '错误原因查询
'; curl_close($_var_23); return false; } } function printErr($_var_26 = '', $_var_27 = '') { print_r('
');
		echo $_var_26 . '
'; var_dump($_var_27); print_r('
'); } } class Wxpay_client_pub extends Common_util_pub { var $parameters; public $response; public $result; var $url; var $curl_timeout; function setParameter($_var_28, $_var_29) { $this->parameters[$this->trimString($_var_28)] = $this->trimString($_var_29); } function createXml() { $this->parameters['appid'] = WxPayConfig::$APPID; $this->parameters['mch_id'] = WxPayConfig::$MCHID; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters); return $this->arrayToXml($this->parameters); } function postXml() { $_var_17 = $this->createXml(); $this->response = $this->postXmlCurl($_var_17, $this->url, $this->curl_timeout); return $this->response; } function postXmlSSL() { $_var_17 = $this->createXml(); $this->response = $this->postXmlSSLCurl($_var_17, $this->url, $this->curl_timeout); return $this->response; } function getResult() { $this->postXml(); $this->result = $this->xmlToArray($this->response); return $this->result; } } class UnifiedOrder_pub extends Wxpay_client_pub { function __construct() { $this->url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; $this->curl_timeout = WxPayConfig::$CURL_TIMEOUT; } function createXml() { try { if ($this->parameters['out_trade_no'] == null) { throw new WxPayException('缺少统一支付接口必填参数out_trade_no!' . '
'); } elseif ($this->parameters['body'] == null) { throw new WxPayException('缺少统一支付接口必填参数body!' . '
'); } elseif ($this->parameters['total_fee'] == null) { throw new WxPayException('缺少统一支付接口必填参数total_fee!' . '
'); } elseif ($this->parameters['notify_url'] == null) { throw new WxPayException('缺少统一支付接口必填参数notify_url!' . '
'); } elseif ($this->parameters['trade_type'] == null) { throw new WxPayException('缺少统一支付接口必填参数trade_type!' . '
'); } elseif ($this->parameters['trade_type'] == 'JSAPI' && $this->parameters['openid'] == NULL) { throw new WxPayException('统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!' . '
'); } $this->parameters['appid'] = WxPayConfig::$APPID; $this->parameters['mch_id'] = WxPayConfig::$MCHID; $this->parameters['spbill_create_ip'] = $_SERVER['REMOTE_ADDR']; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters); return $this->arrayToXml($this->parameters); } catch (WxPayException $_var_30) { die($_var_30->errorMessage()); } } function getPrepayId() { $this->postXml(); $this->result = $this->xmlToArray($this->response); $_var_31 = $this->result['prepay_id']; return $_var_31; } } class OrderQuery_pub extends Wxpay_client_pub { function __construct() { $this->url = 'https://api.mch.weixin.qq.com/pay/orderquery'; $this->curl_timeout = WxPayConfig::$CURL_TIMEOUT; } function createXml() { try { if ($this->parameters['out_trade_no'] == null && $this->parameters['transaction_id'] == null) { throw new WxPayException('订单查询接口中,out_trade_no、transaction_id至少填一个!' . '
'); } $this->parameters['appid'] = WxPayConfig::$APPID; $this->parameters['mch_id'] = WxPayConfig::$MCHID; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters); return $this->arrayToXml($this->parameters); } catch (WxPayException $_var_30) { die($_var_30->errorMessage()); } } } class Refund_pub extends Wxpay_client_pub { function __construct() { $this->url = 'https://api.mch.weixin.qq.com/secapi/pay/refund'; $this->curl_timeout = WxPayConfig::$CURL_TIMEOUT; } function createXml() { try { if ($this->parameters['out_trade_no'] == null && $this->parameters['transaction_id'] == null) { throw new WxPayException('退款申请接口中,out_trade_no、transaction_id至少填一个!' . '
'); } elseif ($this->parameters['out_refund_no'] == null) { throw new WxPayException('退款申请接口中,缺少必填参数out_refund_no!' . '
'); } elseif ($this->parameters['total_fee'] == null) { throw new WxPayException('退款申请接口中,缺少必填参数total_fee!' . '
'); } elseif ($this->parameters['refund_fee'] == null) { throw new WxPayException('退款申请接口中,缺少必填参数refund_fee!' . '
'); } elseif ($this->parameters['op_user_id'] == null) { throw new WxPayException('退款申请接口中,缺少必填参数op_user_id!' . '
'); } $this->parameters['appid'] = WxPayConfig::$APPID; $this->parameters['mch_id'] = WxPayConfig::$MCHID; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters); return $this->arrayToXml($this->parameters); } catch (WxPayException $_var_30) { die($_var_30->errorMessage()); } } function getResult() { $this->postXmlSSL(); $this->result = $this->xmlToArray($this->response); return $this->result; } } class RefundQuery_pub extends Wxpay_client_pub { function __construct() { $this->url = 'https://api.mch.weixin.qq.com/pay/refundquery'; $this->curl_timeout = WxPayConfig::$CURL_TIMEOUT; } function createXml() { try { if ($this->parameters['out_refund_no'] == null && $this->parameters['out_trade_no'] == null && $this->parameters['transaction_id'] == null && $this->parameters['refund_id '] == null) { throw new WxPayException('退款查询接口中,out_refund_no、out_trade_no、transaction_id、refund_id四个参数必填一个!' . '
'); } $this->parameters['appid'] = WxPayConfig::$APPID; $this->parameters['mch_id'] = WxPayConfig::$MCHID; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters); return $this->arrayToXml($this->parameters); } catch (WxPayException $_var_30) { die($_var_30->errorMessage()); } } function getResult() { $this->postXmlSSL(); $this->result = $this->xmlToArray($this->response); return $this->result; } } class DownloadBill_pub extends Wxpay_client_pub { function __construct() { $this->url = 'https://api.mch.weixin.qq.com/pay/downloadbill'; $this->curl_timeout = WxPayConfig::$CURL_TIMEOUT; } function createXml() { try { if ($this->parameters['bill_date'] == null) { throw new WxPayException('对账单接口中,缺少必填参数bill_date!' . '
'); } $this->parameters['appid'] = WxPayConfig::$APPID; $this->parameters['mch_id'] = WxPayConfig::$MCHID; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters); return $this->arrayToXml($this->parameters); } catch (WxPayException $_var_30) { die($_var_30->errorMessage()); } } function getResult() { $this->postXml(); $this->result = $this->xmlToArray($this->result_xml); return $this->result; } } class ShortUrl_pub extends Wxpay_client_pub { function __construct() { $this->url = 'https://api.mch.weixin.qq.com/tools/shorturl'; $this->curl_timeout = WxPayConfig::$CURL_TIMEOUT; } function createXml() { try { if ($this->parameters['long_url'] == null) { throw new WxPayException('短链接转换接口中,缺少必填参数long_url!' . '
'); } $this->parameters['appid'] = WxPayConfig::$APPID; $this->parameters['mch_id'] = WxPayConfig::$MCHID; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters); return $this->arrayToXml($this->parameters); } catch (WxPayException $_var_30) { die($_var_30->errorMessage()); } } function getShortUrl() { $this->postXml(); $_var_31 = $this->result['short_url']; return $_var_31; } } class Wxpay_server_pub extends Common_util_pub { public $data; var $returnParameters; function saveData($_var_17) { $this->data = $this->xmlToArray($_var_17); } function checkSign() { $_var_32 = $this->data; unset($_var_32['sign']); $_var_33 = $this->getSign($_var_32); if ($this->data['sign'] == $_var_33) { return TRUE; } return FALSE; } function getData() { return $this->data; } function setReturnParameter($_var_28, $_var_29) { $this->returnParameters[$this->trimString($_var_28)] = $this->trimString($_var_29); } function createXml() { return $this->arrayToXml($this->returnParameters); } function returnXml() { $_var_34 = $this->createXml(); return $_var_34; } } class Notify_pub extends Wxpay_server_pub { } class NativeCall_pub extends Wxpay_server_pub { function createXml() { if ($this->returnParameters['return_code'] == 'SUCCESS') { $this->returnParameters['appid'] = WxPayConfig::$APPID; $this->returnParameters['mch_id'] = WxPayConfig::$MCHID; $this->returnParameters['nonce_str'] = $this->createNoncestr(); $this->returnParameters['sign'] = $this->getSign($this->returnParameters); } return $this->arrayToXml($this->returnParameters); } function getProductId() { $_var_35 = $this->data['product_id']; return $_var_35; } } class NativeLink_pub extends Common_util_pub { var $parameters; var $url; function __construct() { } function setParameter($_var_28, $_var_29) { $this->parameters[$this->trimString($_var_28)] = $this->trimString($_var_29); } function createLink() { try { if ($this->parameters['product_id'] == null) { throw new WxPayException('缺少Native支付二维码链接必填参数product_id!' . '
'); } $this->parameters['appid'] = WxPayConfig::$APPID; $this->parameters['mch_id'] = WxPayConfig::$MCHID; $_var_36 = time(); $this->parameters['time_stamp'] = "{$_var_36}"; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters); $_var_37 = $this->formatBizQueryParaMap($this->parameters, false); $this->url = 'weixin://wxpay/bizpayurl?' . $_var_37; } catch (WxPayException $_var_30) { die($_var_30->errorMessage()); } } function getUrl() { $this->createLink(); return $this->url; } } class JsApi_pub extends Common_util_pub { var $code; var $openid; var $parameters; var $prepay_id; var $curl_timeout; function __construct() { $this->curl_timeout = WxPayConfig::$CURL_TIMEOUT; } function createOauthUrlForCode($_var_38) { $_var_39['appid'] = WxPayConfig::$APPID; $_var_39['redirect_uri'] = "{$_var_38}"; $_var_39['response_type'] = 'code'; $_var_39['scope'] = 'snsapi_base'; $_var_39['state'] = 'STATE' . '#wechat_redirect'; $_var_37 = $this->formatBizQueryParaMap($_var_39, false); return 'https://open.weixin.qq.com/connect/oauth2/authorize?' . $_var_37; } function createOauthUrlForOpenid() { $_var_39['appid'] = WxPayConfig::$APPID; $_var_39['secret'] = WxPayConfig::$APPSECRET; $_var_39['code'] = $this->code; $_var_39['grant_type'] = 'authorization_code'; $_var_37 = $this->formatBizQueryParaMap($_var_39, false); return 'https://api.weixin.qq.com/sns/oauth2/access_token?' . $_var_37; } function getOpenid() { $_var_21 = $this->createOauthUrlForOpenid(); $_var_23 = curl_init(); curl_setopt($_var_23, CURLOP_TIMEOUT, $this->curl_timeout); curl_setopt($_var_23, CURLOPT_URL, $_var_21); curl_setopt($_var_23, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($_var_23, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($_var_23, CURLOPT_HEADER, FALSE); curl_setopt($_var_23, CURLOPT_RETURNTRANSFER, TRUE); $_var_40 = curl_exec($_var_23); curl_close($_var_23); $_var_24 = json_decode($_var_40, true); $this->openid = $_var_24['openid']; return $this->openid; } function setPrepayId($_var_41) { $this->prepay_id = $_var_41; } function setCode($_var_42) { $this->code = $_var_42; } public function getParameters() { $_var_43['appId'] = WxPayConfig::$APPID; $_var_44 = time(); $_var_43['timeStamp'] = "{$_var_44}"; $_var_43['nonceStr'] = $this->createNoncestr(); $_var_43['package'] = "prepay_id={$this->prepay_id}"; $_var_43['signType'] = 'MD5'; $_var_43['paySign'] = $this->getSign($_var_43); $this->parameters = json_encode($_var_43); return $this->parameters; } }