php之支付宝登陆
来源:互联网 发布:淘宝网店拍摄照片 编辑:程序博客网 时间:2024/06/10 06:02
先到支付宝开放平台下载快捷登陆开发包 快捷登录开发包,
解压后里面有个demo文件夹,找到php那个,复制到你的网站里,里面的文件iamge可以不要,cacert.pem,index.php,log.txt,readme.txt 这些也可以不要,alipayapi.php这个文件看自己的需求,然后在你需要登陆的地方放好支付宝登陆图标,如ecshop的user_passport.dwt中加入<a class="zfbtn" href="oaulogin.php?type=zflogin"></a>,oaulogin.php看自己怎么取名,由于我qq,微博登陆都在这个文件里,所以我也把他放到这个文件里,然后把alipayapi.php里面的php代码复制到oaulogin.php,在alipay.config.php里面配置好key和id,修改拷贝过来的代码
elseif($type == "zflogin")
{
require(dirname(__FILE__) . "/alipaylogin/alipay.config.php");
require(dirname(__FILE__) . "/alipaylogin/lib/alipay_submit.class.php");
$alipaySubmit = new AlipaySubmit($alipay_config);
//目标服务地址
$target_service = "user.auth.quick.login";
//必填
//必填,页面跳转同步通知页面路径
$return_url = "http://www.xxx.com/alipaylogin/return_url.php";这里配置回调地址,return_url.php放置的地址
//需http://格式的完整路径,不允许加?id=123这类自定义参数
//防钓鱼时间戳
$anti_phishing_key = $alipaySubmit->query_timestamp();
//若要使用请调用类文件submit中的query_timestamp函数
//客户端的IP地址
$exter_invoke_ip = real_ip();//这个是ecshop的获取ip地址函数
//非局域网的外网IP地址,如:221.0.0.1
//构造要请求的参数数组,无需改动
$parameter = array(
"service" => "alipay.auth.authorize",
"partner" => trim($alipay_config['partner']),
"target_service"=> $target_service,
"return_url" => $return_url,
"anti_phishing_key"=> $anti_phishing_key,
"exter_invoke_ip"=> $exter_invoke_ip,
"_input_charset"=> trim(strtolower($alipay_config['input_charset']))
);
//建立请求
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "页面跳转中....");
echo $html_text;
}
然后在回调页面return_url.php中修改代码,ecshop的代码修改如下,其他的按照自己的需求修改
去掉所有的html标签
define('IN_ECS', true);
require('../includes/init.php');
require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {//验证成功
$user_id = $_GET['user_id'];
//授权令牌
$token = $_GET['token'];
$user_name = $_GET['real_name'];
//$email = $_GET['email'];因为支付宝的email可能是电话号码,所以可能需要自己从新设置email
//echo "验证成功<br />";
$email = "youremail@type.com";
$sex = 0;
$password=md5("xxx".gmtime());
$reg_time = gmtime();
$last_ip = real_ip();
$have_openid = $db->getRow("SELECT user_id, email, user_name FROM ". $ecs->table('users') ." WHERE openid='".$user_id."'");
if(!empty($have_openid))
{
$_SESSION['user_id'] = $have_openid['user_id'];
$_SESSION['user_name'] = $have_openid['user_name'];
update_user_info();
}else
{
$nameArr = $GLOBALS['db']->getALL("SELECT user_name FROM ".$GLOBALS['ecs']->table('users'));
foreach($nameArr as $key=>$val)
{
if($val['user_name'] == $user_name)
{
$user_name = $user_name.Date("YmdH");//重名处理
}
}
$sql = "INSERT INTO ".$GLOBALS['ecs']->table('users')."(email, user_name, password, sex, reg_time, last_login, last_ip, visit_count, openid)".
"VALUES ('".$email."', '".$user_name."', '".$password."', ".$sex.", ".$reg_time.", ".$reg_time.", '".$last_ip."', 1, '".$user_id."')";
$_SESSION['user_id'] = $GLOBALS['db']->query($sql);
$last_id = $GLOBALS['db']->insert_id();
$_SESSION['user_id'] = $last_id;
$_SESSION['user_name'] = $user_name;
$_SESSION['email'] = $email;
}
ecs_header("Location: ".ROOT_PATH."user.php\n");
exit;
}
else {
echo "验证失败<br />";
ecs_header("Location: ".ROOT_PATH."index.php\n");
exit;
}
- php之支付宝登陆
- php支付宝开发之pc网站支付接入
- php 网上支付之易宝支付
- php之sina登陆
- php之qq登陆
- PHP之登陆
- PHP接入支付宝支付
- php之微信登陆
- Android支付之支付宝支付(一)
- 移动支付之支付宝支付
- 第三方支付之支付宝支付
- 第三方支付之支付宝支付
- 移动支付之支付宝
- android支付之支付宝
- 支付宝登陆央视展示全功能形象
- 支付宝登陆,加密还是编码?
- 支付宝和第三方登陆分享
- 一个PHP文件搞定支付宝系列之电脑网站支付
- perl连接mysql 报错 MySQL server has gone away
- listview 行高设置
- Codeforces Round #288 (Div. 二) Anton and currency you all know
- AXIS WebServices开发
- 用GDB调试程序(二)
- php之支付宝登陆
- 设置socket缓冲器的大小以及Linux常用的I/O模型
- 文件系统中的逻辑块、物理块和扇区之间的关系
- 社説 20150210 衆参選挙制度 1票の格差是正が待ったなし
- LVS的NAT模式配置记要
- LVS NAT 配置步骤
- 用GDB调试程序(三)
- PYQT4 + Python2.7 + eric4-4.2.2a的安装全过程
- iOS 横屏与竖屏