支付配置ThinkPay\Application\Common\Conf\config.phparray(/*支付设置*/
‘payment‘ => array(‘tenpay‘ => array(//加密key,开通财付通账户后给予
‘key‘ => ‘e82573dc7e6136ba414f2e2affbe39fa‘,
//合作者ID,财付通有该配置,开通财付通账户后给予
‘partner‘ => ‘1900000113‘),
‘alipay‘ => array(//收款账号邮箱
‘email‘ => ‘chenf003@yahoo.cn‘,
//加密key,开通支付宝账户后给予
‘key‘ => ‘aaa‘,
//合作者ID,支付宝有该配置,开通易宝账户后给予
‘partner‘ => ‘2088101000137799‘),
‘aliwappay‘ => array(//收款账号邮箱
‘email‘ => ‘chenf003@yahoo.cn‘,
//加密key,开通支付宝账户后给予
‘key‘ => ‘aaa‘,
//合作者ID,支付宝有该配置,开通易宝账户后给予
‘partner‘ => ‘2088101000137799‘),
‘palpay‘ => array(‘business‘ => ‘zyj@qq.com‘),
‘yeepay‘ => array(‘key‘ => ‘69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl‘,
‘partner‘ => ‘10001126856‘),
‘kuaiqian‘ => array(‘key‘ => ‘1234567897654321‘,
‘partner‘ => ‘1000300079901‘),
‘unionpay‘ => array(‘key‘ => ‘88888888‘,
‘partner‘ => ‘105550149170027‘)
)
);
支付生成订单 ThinkPay\ThinkPHP\Library\Think\Pay.class.phpfunction buildRequestForm(Pay\PayVo $vo) {$this->payer->check();//生成本地记录数据
$check = M("Pay")->add(array(‘out_trade_no‘ => $vo->getOrderNo(),
‘money‘ => $vo->getFee(),
‘status‘ => 0,
‘callback‘ => $vo->getCallback(),
‘url‘ => $vo->getUrl(),
‘param‘ => serialize($vo->getParam()),
‘create_time‘ => time(),
‘update_time‘ => time()
));if ($check !== false) {return $this->payer->buildRequestForm($vo);
}else{
E(M("Pay")->getDbError());
}
}
支付订单表/**
数据库
CREATE TABLE `think_pay` (
`out_trade_no` varchar(100) NOT NULL,
`money` decimal(10,2) NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT ‘0‘,
`callback` varchar(255) NOT NULL,
`url` varchar(255) NOT NULL,
`param` text NOT NULL,
`create_time` int(11) NOT NULL,
`update_time` int(11) NOT NULL,
PRIMARY KEY (`out_trade_no`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;*/alipay配置ThinkPay\ThinkPHP\Library\Think\Pay\Driver\Alipay.class.phpprotected $gateway = ‘https://mapi.alipay.com/gateway.do‘;protected $verify_url = ‘http://notify.alipay.com/trade/notify_query.do‘;protected $config = array(‘email‘ => ‘‘,
‘key‘ => ‘‘,
‘partner‘ => ‘‘);
md5加密public function buildRequestForm(\Think\Pay\PayVo $vo) {$param = array(‘service‘ => ‘create_direct_pay_by_user‘,
‘payment_type‘ => ‘1‘,
‘_input_charset‘ => ‘utf-8‘,
‘seller_email‘ => $this->config[‘email‘],
‘partner‘ => $this->config[‘partner‘],
‘notify_url‘ => $this->config[‘notify_url‘],
‘return_url‘ => $this->config[‘return_url‘],
‘out_trade_no‘ => $vo->getOrderNo(),
‘subject‘ => $vo->gettitle(),
‘body‘ => $vo->getBody(),
‘total_fee‘ => $vo->getFee()
);ksort($param);reset($param);$arg = ‘‘;foreach ($param as $key => $value) {if ($value) {$arg .= "$key=$value&";
}
}$param[‘sign‘] = md5(substr($arg, 0, -1) . $this->config[‘key‘]);$param[‘sign_type‘] = ‘MD5‘;$sHtml = $this->_buildForm($param, $this->gateway, ‘get‘);return $sHtml;
}
支付成功后回调地址ThinkPay\Application\Home\Controller\PublicController.class.phppublic functionnotify() {$apitype = I(‘get.apitype‘);$pay = new \Think\Pay($apitype, C(‘payment.‘ . $apitype));if (IS_POST && !empty($_POST)) {$notify = $_POST;
}elseif (IS_GET && !empty($_GET)) {$notify = $_GET;unset($notify[‘method‘]);unset($notify[‘apitype‘]);
}else{exit(‘Access Denied‘);
}//验证
if ($pay->verifyNotify($notify)) {//获取订单信息
$info = $pay->getInfo();if ($info[‘status‘]) {$payinfo = M("Pay")->field(true)->where(array(‘out_trade_no‘ => $info[‘out_trade_no‘]))->find();if ($payinfo[‘status‘] == 0 && $payinfo[‘callback‘]) {
session("pay_verify", true);$check = R($payinfo[‘callback‘], array(‘money‘ => $payinfo[‘money‘], ‘param‘ => unserialize($payinfo[‘param‘])));if ($check !== false) {
M("Pay")->where(array(‘out_trade_no‘ => $info[‘out_trade_no‘]))->setField(array(‘update_time‘ => time(), ‘status‘ => 1));
}
}if (I(‘get.method‘) == "return") {
redirect($payinfo[‘url‘]);
}else{$pay->notifySuccess();
}
}else{$this->error("支付失败!");
}
}else{
E("Access Denied");
}
}