最新赞助活动温馨提示:自愿赞助服务器费用,学生和没有工作的整站资源免费下载!
头像

Thinkphp各大支付平台在线支付

来源:http://www.erdangjiade.com/ 沐浴春风 2015-11-16 09:09浏览(11915)

给客户开发网站的时候需要用到各大平台付款功能,下面就分享给大家,此类是个成熟类,经过测试了(可以直接拿来使用,附带使用方法,有需要的朋友请拿走。

0、请不要问“在不在”之类的问题,有问题直接问!1、学生或暂时没有工作的童鞋,整站资源免费下载!2、¥9.9充值终身VIP会员,加我微信,826096331 拉你进VIP群学习!3、程序员加油,技术改变世界。 在线 充值

Thinkphp各大支付平台在线支付
分类:PHP > Thinkphp 难易:中级
查看演示 下载资源:

加我微信,拉你进VIP群学习:

下载资源 下载积分: 200 积分

目前包含了支付宝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' => '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");
    }
}
声明:本文为原创文章,如需转载,请注明来源erdangjiade.com并保留原文链接:https://www.erdangjiade.com/php/524.html
评论30
头像

友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群

  • 头像 29楼
    05-04 15:13
    hongyuzy
    积分不够,有谁下载过,来说说能不能用呀?
  • 头像 28楼
    03-21 14:21
    nsorder
    源码太好了
  • 头像 27楼
    08-18 16:33
    昊天之殇1
    想看看这个能不能用,但是没有积分,醉醉哒。。s
  • 头像 26楼
    08-17 09:44
    蒲公英玛的
    下了 永不了啊
    1
    蒲公英玛的

    不是不能用 是我自己没配好 感谢大佬指导

  • 头像 25楼
    04-29 08:42
    ngu137
    不错的源码,可以借鉴学习下啦。。。
  • 头像 24楼
    02-28 15:35
    allize
    希望这个我可用
  • 头像 23楼
    02-28 15:34
    allize
    想看看这个能不能用,但是没有积分,醉醉哒。。
  • 头像 22楼
    02-08 16:43
    yysyut
    怎麽沒有微信支付,加一個吧,謝謝
  • 头像 21楼
    12-29 20:25
    pjwzg
    很是不错。
  • 头像 20楼
    12-29 20:24
    pjwzg
    看起来很是牛B啊
1 2