Thinkphp各大支付平台在线支付集成源码

用Thinkphp给客户开发网站的时候需要用到各大平台付款功能,下面就免费分享给大家,此类是个成熟类,网上down下来的,经过修改测试了(可以直接拿来使用,附带使用方法,有需要的朋友请拿走。),如果有需要安装的演示请登陆“二当家的”查看:http://www.erdangjiade.com/php/524.html
目前包含了支付宝pc版、支付宝wap版、palpay、yeepay、unionpay、kuaiqian、财付通tenpay等,这几个常用的支付平台,支付方式均为即时到账,不包含担保支付。

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

array(
/* 支付设置 */
‘payment‘ => array(
‘tenpay‘ => array(
// 加密key,开通财付通账户后给予
‘key‘ => ‘e82573dc7e6136ba414f2e2affbe39fa‘,
// 合作者ID,财付通有该配置,开通财付通账户后给予
‘partner‘ => ‘1900000113‘
),
‘alipay‘ => array(
// 收款账号邮箱
‘email‘ => ‘[email protected]‘,
// 加密key,开通支付宝账户后给予
‘key‘ => ‘aaa‘,
// 合作者ID,支付宝有该配置,开通易宝账户后给予
‘partner‘ => ‘2088101000137799‘
),
‘aliwappay‘ => array(
// 收款账号邮箱
‘email‘ => ‘[email protected]‘,
// 加密key,开通支付宝账户后给予
‘key‘ => ‘aaa‘,
// 合作者ID,支付宝有该配置,开通易宝账户后给予
‘partner‘ => ‘2088101000137799‘
),
‘palpay‘ => array(
‘business‘ => ‘[email protected]‘
),
‘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");
}
}
时间: 2024-11-05 00:57:09

Thinkphp各大支付平台在线支付集成源码的相关文章

【转载】第三方支付平台相关-支付、对账

参考页面: http://www.cnblogs.com/leefreeman/p/4043959.html 首先交易的流程(商家角度): 1:浏览商品.下单: 2:支付,用户将货款划到支付平台: 3:支付平台通知商家支付成功: 4:卖家收到支付通知,进行发货: 5:用户收到货物,验货完成,通知支付平台: 6:支付平台将货款划到商家账户. 涉及到银行的支付流程(支付平台角度): 1:浏览商品.下单: 2:支付,用户将银行账户信息提交给支付平台,支付平台连接银行支付网关,请求将买家账户的资金划至支

使用第三方支付实现在线支付

使用第三方支付(本文使用易宝支付)实现在线支付: 模拟的支付页面: 点击支付之后经由易宝支付快速跳转到工商银行的网上银行: 付款成功之后返回: 第一步:找一个第三方支付公司开一个账号yeepay 开户以后可以获取以下信息: 1:自己的开户账号 2:支付密码 = 双向加密. 3:给一个示例代码.Java.asp.net p1_MerId=10001126856  - 账号 keyValue=69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y

# 统一支付平台--协议支付测试总结

统一支付平台--协议支付测试总结 1.相关接口 交易中心接口文档地址: https://confluence.sui.work/pages/viewpage.action?pageId=20226667 1./payment-trade-ws/ws/trade/v1/payRequest (代收请求) 2./payment-trade-ws/ws/trade/v1/payResult (代收结果查询) 3./payment-trade-ws/ws/trade/v1/remitRequest (代

在线计算器JS源码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

edwin报警和监控平台开源了(python源码)

简单介绍一下edwin edwin是一个报警和监控平台, 可以使用它监控任意东西, 如有异常(分为警告级和严重级), 可以发出报警. 可以自定义报警的通知方式, 比如邮件/短信/电话. 另外, 它提供一个web UI,  上, 能以dashboard形式展现监控指标的状态. edwin对于监控项目的组织形式, 由小到大是:  check item -> pagelet ->page -> dashboard.  另外,可以为 check item指定一个或多个 team 来负责.  这样

多人在线扑克游戏源码带服务端完整版

多人在线扑克游戏源码带服务端完整版,本项目源码是一套网络版的扑克牌项目源码,带服务器端源码,服务器端也是用java做的,打开游戏以后需要配置IP服务器端的IP和端口,服务端默认监听9999端口,客户端ip填写10.0.2.2,端口信息不用管直接点连接就可以连接到电脑上的服务端.项目源码注释比较丰富,可以研究一下里面的算法之类的.搭建这个服务端环境废了我半天劲,不知道是不是我运行的方法不对,打开前两个游戏客户端没有问题,打开第三个就开始直接强制退出.游戏没玩成所以没有截那部分的图.<ignore_

Jenkins集成源码静态分析工具

1.static code analysis插件说明 Jenkins提供了插件"static code analysis",该插件搜集不同的分析结果,并集合显示出来. 实际上,我们可以认为static code analysi和FindBugs等插件组成了一个静态分析代码的套件.仅仅安装static code analysis是不够的,还需要安装其他插件(如FindBugs),才能正确工作. 2.static code analysis支持哪些插件? 官方文档:https://wiki

九派ecshop,thinkphp,shopnc在线支付接口,支付插件(payment plugin含源码)

最近应一个客户的要求,给他的一个ecshop网站开发九派在线支付接口和代付接口.九派有自己的收银台,集成了各类银行,也是不错. 九派原来采用MD5私钥认证,后来采用RAS认证.首先,对报文中出现签名域( merchantS S ign /serverSign )和证书域( merchantCert /serverCert )之外的所有数据元采用 key=value 的形式按照名称排序 ,然后以&作为连接符拼接成待签名串(value 为空的域,不参与待签名串).再使用九派支付颁发给商户的商户 RS

天下支付ecshop,thinkphp,shopnc在线支付接口,支付插件(payment plugin含源码)

最近应一个客户的要求,给他的一个ecshop网站开发天下支付(www.tfb8.com)在线支付接口和代付接口.天下有自己的收银台,集成了各类银行,也是不错.但是天下支付对接的时候很是麻烦,先要在测试环境下测试,有专门的测试商户号,测试通过需要把测试参数和提交的返回结果发给他们的技术支持,天下支付的技术验证通过的才会正式开通.其他的接口,比如代付API接口也需要发送测试参数才会开通.基本上还是比较正规. $reqHandler->setParameter ( "spid", $s