ThinkPHP3.2.3整合支付宝接口

扩展类名为alipay,从我的下载资源中下载,下载后放置在\ThinkPHP\Library\Vendor文件夹下

下载地址:http://download.csdn.net/download/leejianjun/10025194

有个文件cacert.pem,放置在与入口文件index.php的同一文件夹下

可以在PHP版demo中找找,或者在CSDN中搜一搜,也可以到我的下载资源中寻找。

核心代码如下:

//支付宝充值 支付到支付宝,返回信息,写入member表中
public function alipay(){
    //以下为配置信息
    //合作身份者id,以2088开头的16位纯数字
    $alipay_config['partner']		= '2088************';
    //收款支付宝账号,一般情况下收款账号就是签约账号
    $alipay_config['seller_email']	= '********@**.com';
    //安全检验码,以数字和字母组成的32位字符
    $alipay_config['key']			= '***********';
    //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    //签名方式 不需修改
    $alipay_config['sign_type']    = strtoupper('MD5');
    //字符编码格式 目前支持 gbk 或 utf-8
    $alipay_config['input_charset']= strtolower('utf-8');
    //ca证书路径地址,用于curl中ssl校验
    //请保证cacert.pem文件在当前文件夹目录中
    $alipay_config['cacert']    = getcwd().'\\cacert.pem';
    //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
    $alipay_config['transport']    = 'http';
    //以下开始操作
    vendor('Alipay.Corefunction');
    vendor('Alipay.Md5function');
    vendor('Alipay.Notify');
    vendor('Alipay.Submit');
    //支付类型
    $payment_type = "1";
    //必填,不能修改
    //服务器异步通知页面路径
    $notify_url = SELF_URL."/Buy/step/notify_url";
    //需http://格式的完整路径,不能加?id=123这类自定义参数
    //页面跳转同步通知页面路径
    $return_url = SELF_URL."/Buy/step/return_url";   //当前为同步通知
    //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
    //*****************************提交的商户信息**************************************
    //商户订单号
    $amount=0.01;
    $out_trade_no =date('YmdHis').rand(001,999);
    session($out_trade_no,$amount);
    //商户网站订单系统中唯一订单号,必填
    //订单名称
    $subject = '充值'.$amount.'元到XX网站';
    //必填
    //付款金额
    $total_fee =$amount;
    //必填
    //订单描述
    $body = $subject;
    //商品展示地址
    $show_url =SELF_URL.'/Buy/step/complete';
    //需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html
    //防钓鱼时间戳
    $anti_phishing_key = "";
    //若要使用请调用类文件submit中的query_timestamp函数
    //客户端的IP地址
    $exter_invoke_ip = "";
    //非局域网的外网IP地址,如:221.0.0.1
    //构造要请求的参数数组,无需改动
    $parameter = array(
        "service" => "create_direct_pay_by_user",
        "partner" => trim($alipay_config['partner']),
        "seller_email" => trim($alipay_config['seller_email']),
        "payment_type"	=> $payment_type,
        "notify_url"	=> $notify_url,
        "return_url"	=> $return_url,
        "out_trade_no"	=> $out_trade_no,
        "subject"	=> $subject,
        "total_fee"	=> $total_fee,
        "body"	=> $body,
        "show_url"	=> $show_url,
        "anti_phishing_key"	=> $anti_phishing_key,
        "exter_invoke_ip"	=> $exter_invoke_ip,
        "_input_charset"	=> trim(strtolower($alipay_config['input_charset']))
    );
    //建立请求
    $alipaySubmit = new \AlipaySubmit($alipay_config);
    //$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
    $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "");
    echo $html_text;
}
//
public function notify_url(){
    //以下为配置信息
    //合作身份者id,以2088开头的16位纯数字
    $alipay_config['partner']		= '***********';
    //收款支付宝账号,一般情况下收款账号就是签约账号
    $alipay_config['seller_email']	= '******@***.com';
    //安全检验码,以数字和字母组成的32位字符
    $alipay_config['key']			= '**************';
    //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    //签名方式 不需修改
    $alipay_config['sign_type']    = strtoupper('MD5');
    //字符编码格式 目前支持 gbk 或 utf-8
    $alipay_config['input_charset']= strtolower('utf-8');
    //ca证书路径地址,用于curl中ssl校验
    //请保证cacert.pem文件在当前文件夹目录中
    $alipay_config['cacert']    = getcwd().'\\cacert.pem';
    //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
    $alipay_config['transport']    = 'http';
    vendor('Alipay.Corefunction');
    vendor('Alipay.Md5function');
    vendor('Alipay.Notify');
    vendor('Alipay.Submit');
    //计算得出通知验证结果
    $alipayNotify = new \AlipayNotify($alipay_config);
    $verify_result = $alipayNotify->verifyNotify();
    if($verify_result) {//验证成功
        /
        //请在这里加上商户的业务逻辑程序代
        //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
        //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
        //商户订单号
        $out_trade_no = $_POST['out_trade_no'];
        //支付宝交易号
        $trade_no = $_POST['trade_no'];
        //交易状态
        $trade_status = $_POST['trade_status'];
        if($_POST['trade_status'] == 'TRADE_FINISHED') {
            //判断该笔订单是否在商户网站中已经做过处理
            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
            //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
            //如果有做过处理,不执行商户的业务程序
            //注意:
            //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
            //调试用,写文本函数记录程序运行情况是否正常
            //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
        }
        else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
            //判断该笔订单是否在商户网站中已经做过处理
            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
            //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
            //如果有做过处理,不执行商户的业务程序
            //注意:
            //付款完成后,支付宝系统发送该交易状态通知
            //调试用,写文本函数记录程序运行情况是否正常
            //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
        }
        //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
        echo "success";		//请不要修改或删除
        /
    }
    else {
        //验证失败
        echo "fail";
        //调试用,写文本函数记录程序运行情况是否正常
        //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
    }
}
public function return_url(){
    //以下为配置信息
    //合作身份者id,以2088开头的16位纯数字
    $alipay_config['partner']		= '2088**********';
    //收款支付宝账号,一般情况下收款账号就是签约账号
    $alipay_config['seller_email']	= '********@***.com';
    //安全检验码,以数字和字母组成的32位字符
    $alipay_config['key']			= '*************';
    //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    //签名方式 不需修改
    $alipay_config['sign_type']    = strtoupper('MD5');
    //字符编码格式 目前支持 gbk 或 utf-8
    $alipay_config['input_charset']= strtolower('utf-8');
    //ca证书路径地址,用于curl中ssl校验
    //请保证cacert.pem文件在当前文件夹目录中
    $alipay_config['cacert']    = getcwd().'\\cacert.pem';
    //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
    $alipay_config['transport']    = 'http';
    vendor('Alipay.Corefunction');
    vendor('Alipay.Md5function');
    vendor('Alipay.Notify');
    vendor('Alipay.Submit');
    //计算得出通知验证结果
    $alipayNotify = new \AlipayNotify($alipay_config);
    $verify_result = $alipayNotify->verifyReturn();
    if($verify_result) {//验证成功
        /
        //请在这里加上商户的业务逻辑程序代码
        //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
        //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
        //商户订单号
        $out_trade_no = $_GET['out_trade_no'];
        //支付宝交易号
        $trade_no = $_GET['trade_no'];
        //交易状态
        $trade_status = $_GET['trade_status'];
        if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
            //判断该笔订单是否在商户网站中已经做过处理
            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
            //如果有做过处理,不执行商户的业务程序
        }
        else {
            echo "trade_status=".$_GET['trade_status'];
        }
        //echo "验证成功<br />";
        //***************************************支付成功后的代码**********************************************
        //此处代码修改为事务
        $amount=addslashes($_GET['total_fee']);
        //echo $amount;exit;
        header("location: ".SELF_URL."/Buy/step/complete/amount/".$amount);exit;
        
    }
    else {
        //验证失败
        //如要调试,请看alipay_notify.php页面的verifyReturn函数
        echo "验证失败";
    }
}

大笑有图有真相


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值