php在线支付系统,Thinkphp各大支付平台在线支付集成源码

支付配置ThinkPay\Application\Common\Conf\config.php

array(

/* 支付设置 */

'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.php

function 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.php

protected $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.php

public function notify() {

$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");

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值