tp中5分钟集成支付宝接口(附源码)

支付宝的商户注册方式

您好,为了更好的帮您解决问题,请您联系商户客服咨询即可。点击链接http://help.alipay.com/support/index_sh.htm联系商户的在线客服(工作时间:周一至周日9:00-22:00)咨询或拨打商户服务热线0571-88158090(工作时间:周一至周五9:00-18:00,节假日除外)温馨提示:如果您要联系商户在线客服,请您先关闭现在的对话框,再找到商家在线客服,点击“点此咨询”即可进入商家在线客服咨询。


pangdan118 发表于 2011-12-18 19:30:31

大概思路就是

1.把支付宝官方示例代码中的lib文件夹下的所有文件改名,比如:service.class.php改成Service.php,把里面加载文件的那句去掉,

2,在tp的Vendor目录下新建一个Alipay文件夹(不用新建一个目录页可以),把第一步修改好的文件放进去。

3新建一个OrderAction.class.php,

public function _initialize() {
<?php
class OrderAction extends Action {
        public function _initialize() {
                Vendor('Alipay.Corefunction');
                Vendor('Alipay.Notify');
                Vendor('Alipay.Service');
                Vendor('Alipay.Submit');
                Vendor('Alipay.Alipayconfig');

        }

        function alipayto() {
C('TOKEN_ON',false);
                $aliapy_config = alicofings();
                $out_trade_no = 'gds' . date('Ymdhis', time()) . round(0, 100);

                $subject = $_POST['subject'];

                $body = $_POST['body'];

                $total_fee = $_POST['total_fee'];

                $paymethod = '';

                $defaultbank = '';

                $anti_phishing_key = '';

                $exter_invoke_ip = '';

                $show_url = 'http://www.uvmonopoly.com';

                $extra_common_param = '';

                $royalty_type = "";
                $royalty_parameters = "";

                $parameter = array (
                        "service" => "create_direct_pay_by_user",
                        "payment_type" => "1",

                        "partner" => trim($aliapy_config['partner']
                ), "_input_charset" => trim(strtolower($aliapy_config['input_charset'])), "seller_email" => trim($aliapy_config['seller_email']), "return_url" => trim($aliapy_config['return_url']), "notify_url" => trim($aliapy_config['notify_url']), "out_trade_no" => $out_trade_no, "subject" => $subject, "body" => $body, "total_fee" => $total_fee, "paymethod" => $paymethod, "defaultbank" => $defaultbank, "anti_phishing_key" => $anti_phishing_key, "exter_invoke_ip" => $exter_invoke_ip, "show_url" => $show_url, "extra_common_param" => $extra_common_param, "royalty_type" => $royalty_type, "royalty_parameters" => $royalty_parameters);
                $d = D('Order');
                $d->create();
                $d->user_id = Cookie :: get('user_id');
                $d->total_fee = $total_fee;
                $d->order_id = $out_trade_no;
                $d->creat_time=time();
                $d->trde_status = 0;
                if (false !== $d->add()) {

                        $alipayService = new AlipayService($aliapy_config);
                        $html_text = $alipayService->create_direct_pay_by_user($parameter);
                        $this->assign('alipay', $html_text);
                        $this->assign('total_fee', $total_fee);
                        $this->display();

                } else {
                        $this->error('系统错误暂时不能充值,请联系在线客服!');

                }

        }
        public function returnurl() {
                $aliapy_config = alicofings();
                $alipayNotify = new AlipayNotify($aliapy_config);
                $verify_result = $alipayNotify->verifyReturn();
                if ($verify_result) { //验证成功

                        $out_trade_no = $_GET['out_trade_no']; //获取订单号
                        $trade_no = $_GET['trade_no']; //获取支付宝交易号
                        $total_fee = $_GET['total_fee']; //获取总价格
                        $d = D('Order');
                        $result = $d->where("order_id='.$trade_no.'")->select();
                        $status = $result[0]['trde_statuse'];

                        if ($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {

                                if ($status == 0) {
                                        $d->create();
                                        $d->trde_status = 1;
                                        $d->alipay_trade_no;
                                        $d->total->fee = $total_fee;

                                }

                        } else {
                                //echo "trade_status=" . $_GET['trade_status'];
                                $this->assign('msg','充值失败!');
                        }

                        echo "验证成功<br />";
                        echo "trade_no=" . $trade_no;

                } else {


                        $this->assign('msg','验证失败');
                }

                $this->display();

        }
        public function notifyurl() {
                $aliapy_config = alicofings();
                $alipayNotify = new AlipayNotify($aliapy_config);
                $verify_result = $alipayNotify->verifyNotify();

                if ($verify_result) { //验证成功

                        $out_trade_no = $_POST['out_trade_no']; //获取订单号
                        $trade_no = $_POST['trade_no']; //获取支付宝交易号
                        $total_fee = $_POST['total_fee']; //获取总价格

                        if ($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') { //交易成功结束

                                echo "success"; //请不要修改或删除

                                //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
                        } else {
                                echo "success"; //其他状态判断。普通即时到帐中,其他状态不用判断,直接打印success。

                                //调试用,写文本函数记录程序运行情况是否正常
                                //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
                        }

                        //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                        /
                } else {
                        //验证失败
                        echo "fail";

                        //调试用,写文本函数记录程序运行情况是否正常
                        //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
                }

        }
}
?>

支付接口配置文件写法:

<?php
function alicofings(){
$aliapy_config['partner']      = '2088302763';

//安全检验码,以数字和字母组成的32位字符
$aliapy_config['key']          = 'm8ve6f5x1d90hjl5e95';

//签约支付宝账号或卖家支付宝帐户
$aliapy_config['seller_email'] = 'qiyunnetwork@vip.163.com';

//页面跳转同步通知页面路径,要用 http://格式的完整路径,不允许加?id=123这类自定义参数
//return_url的域名不能写成http://localhost/create_direct_pay_by_user_php_utf8/return_url.php ,否则会导致return_url执行无效
$aliapy_config['return_url']   = 'http://www.x.com/order/returnurl.html';

//服务器异步通知页面路径,要用 http://格式的完整路径,不允许加?id=123这类自定义参数
$aliapy_config['notify_url']   = 'http://www.gudashi.com/order/notifyurl.html';

//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑


//签名方式 不需修改
$aliapy_config['sign_type']    = 'MD5';

//字符编码格式 目前支持 gbk 或 utf-8
$aliapy_config['input_charset']= 'utf-8';

//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
$aliapy_config['transport']    = 'http';
return $aliapy_config;
}
?>

就写这么多把,懒得打字,我发源码,相信一看就能明吧,这样做的好处就是可以快速集成,5分钟绝对可以搞定支付接口
要是你5分钟搞不定,那还是回家带孩子去吧!!^^^^^开个小玩笑...

支付宝接口.zip

9.26 KB, 下载次数: 576


目的支付宝的demo很搓项目需要接入很多支付,磋上加搓,不是特别好管理本类库的目标完成跟支付宝手机网关支付对接的功能便于后面扩展(利用各种Handler),可测试如何使用本类库?1. 预先加载配置目前提供文件的方式加载配置use HuNanZai\Component\Pay\Package\Alipay_wap\Api as AlipayApi; use HuNanZai\Component\Pay\Package\Alipay_wap\Handler\PhpFileConfigHandler as ConfigHandler; $config_handler = new ConfigHandler(__DIR__.'/config.php'); $alipay_api = new AlipayApi($config_handler->getConfig());config.php<?php return array(     'partner'   => 'xxxxxxxxxxxxxxxx',     'seller_id' => 'xxxxxxxxxxxxxxxx',     'private_key_path'  => __DIR__.'/resource/rsa_private_key.pem',     'public_key_path'   => __DIR__.'/resource/rsa_public_key.pem',     'cacert'            => __DIR__.'resource/cacert.pem', );调用对应的api即可支付use HuNanZai\Component\Pay\Package\Alipay_wap\Handler\ArrayPayParamHandler as PayParamHandler; $pay_param_handler  = new PayParamHandler(array(     'out_trade_no'  => date('YmdHis),     'subject'       => '',     'total_fee'     => '0.01',     //可空     'notify_url'    => '',     'return_url'    => '', )); $alipay_api->pay($pay_param_handler->getParam());支付同步返回验证...略过上面的类似步骤 $callback_param_handler   = new CallbackParamHander($_GET); $res = $alipay_api->verifyCallback($callback_param_handler->getParam());支付异步通知验证$notify_param_handler   = new NotifyParamHandler($_POST); $res    = $alipay_api->verifyNotify($notify_param_handler->getParam());查询订单$param_handler = new SearchRequestParamHandler(array(     'trade_no'     => '',     'out_trade_no' => '', )); $result = $alipay_api->search($param_handler->getParam());退款$refund_param_handler   = new RefundParamHandler(array(     'refund_date'   => date('Y-m-d H:i:s'),     'batch_no'      => date('YmdHis'),     'batch_num'     => 1,     'detail_data'   => 'xxxx^0.01^测试退款', )); $result = $alipay_api->refund($refund_param_handler->getParam()); 标签:alipay
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值