You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.8 KiB
PHP
92 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Think\Pay\Driver;
|
|
|
|
class Kuaiqian extends \Think\Pay\Pay {
|
|
|
|
protected $gateway = 'https://www.99bill.com/gateway/recvMerchantInfoAction.htm';
|
|
protected $config = array(
|
|
'key' => '',
|
|
'partner' => ''
|
|
);
|
|
|
|
public function check() {
|
|
if (!$this->config['key'] || !$this->config['partner']) {
|
|
E("快钱设置有误!");
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function buildRequestForm(\Think\Pay\PayVo $vo) {
|
|
$param = array(
|
|
'inputCharset' => '1',
|
|
'pageUrl' => $this->config['return_url'],
|
|
'bgUrl' => $this->config['notify_url'],
|
|
'version' => 'v2.0',
|
|
'language' => 1,
|
|
'signType' => 1,
|
|
'merchantAcctId' => $vo->config['partner'],
|
|
'orderId' => $vo->getOrderNo(),
|
|
'orderAmount' => $vo->getFee() * 100,
|
|
'orderTime' => date("Ymdhis"),
|
|
'productName' => $vo->getTitle(),
|
|
'productDesc' => $vo->getBody(),
|
|
'payType' => '00'
|
|
);
|
|
|
|
$param['signMsg'] = $this->createSign($param);
|
|
|
|
$sHtml = $this->_buildForm($param, $this->gateway);
|
|
|
|
return $sHtml;
|
|
}
|
|
|
|
protected function createSign($params) {
|
|
$arg = '';
|
|
foreach ($params as $key => $value) {
|
|
if ($value != "") {
|
|
$arg .= "{$key}={$value}&";
|
|
}
|
|
}
|
|
return strtoupper(md5($arg . 'key=' . $this->config['key']));
|
|
}
|
|
|
|
public function verifyNotify($notify) {
|
|
$param = array(
|
|
'merchantAcctId' => $notify['merchantAcctId'],
|
|
'version' => $notify['version'],
|
|
'language' => $notify['language'],
|
|
'signType' => $notify['signType'],
|
|
'payType' => $notify['payType'],
|
|
'bankId' => $notify['bankId'],
|
|
'orderId' => $notify['orderId'],
|
|
'orderTime' => $notify['orderTime'],
|
|
'orderAmount' => $notify['orderAmount'],
|
|
'dealId' => $notify['dealId'],
|
|
'bankDealId' => $notify['bankDealId'],
|
|
'dealTime' => $notify['dealTime'],
|
|
'payAmount' => $notify['payAmount'],
|
|
'fee' => $notify['fee'],
|
|
'payResult' => $notify['payResult'],
|
|
'errCode' => $notify['errCode']
|
|
);
|
|
|
|
if ($notify['signMsg'] == $this->createSign($param)) {
|
|
$info = array();
|
|
//支付状态
|
|
$info['status'] = $notify['payResult'] == '10' ? true : false;
|
|
$info['money'] = $notify['orderAmount'];
|
|
$info['out_trade_no'] = $notify['orderId'];
|
|
$this->info = $info;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function notifySuccess() {
|
|
echo "<result>1</result><redirecturl>{$this->config['return_url']}</redirecturl>";
|
|
}
|
|
|
|
}
|