支付宝、一淘快捷登陆用户注册到商城用户表和UCENTER用户表同步

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家

一、
修改支付宝,一套登陆返回值处理页面------alipay_return_url.php

代码如下:
  1. define('IN_ECS', true);
  2. session_start();
  3. require(dirname(__FILE__) . '/includes/init.php');
  4. /* 载入语言文件 */
  5. require_once(ROOT_PATH . 'languages/' .$_CFG['lang']. '/user.php');
  6. require_once('includes/lib_transaction.php');
  7. require_once('includes/lib_passport.php');
  8. require_once("alipay.config.php");
  9. require_once("alipay_lib/alipay_notify.class.php");
  10. //计算得出通知验证结果
  11. $alipayNotify = new AlipayNotify($aliapy_config);
  12. $verify_result = $alipayNotify->verifyReturn();
  13. if($verify_result) {//验证成功
  14. $alipay_user_id = $_GET['user_id']; //支付宝用户id
  15. $_SESSION['alipay_token']= $_GET['token']; //授权令牌



  16. $password='000000';//substr($user_id,-6);//默认密码为000000
  17. $back_act = empty($_GET['target_url'])?$_SESSION['login_referer']:$_GET['target_url'];//如果从一淘登陆用户会返回商品详情页,如果不是,不设置
  18. $login_from=empty($_GET['target_url'])?'@alipay.com':'@etao.com';
  19. $email=empty($_GET['email'])?$alipay_user_id.$login_from:trim($_GET['email']);//如果不能返回邮箱构造邮箱地址,如果可以赋值


  20. if(isset($alipay_user_id))
  21. {
  22. $new_real_name = $_GET['real_name']; //获取支付宝用户真实姓名
  23. //$username = 'alipay_'.$alipay_user_id;
  24. if(empty($new_real_name)){ //如果不存在真实姓名
  25. $username = "支付宝会员_".substr($alipay_user_id,-6);
  26. }
  27. else
  28. $username = $new_real_name.'_tb'.substr($alipay_user_id,-6);


  29. /* 检测用户名是否已经存在 */
  30. if (check_user($username)){
  31. //$username=substr($username,0,strpos($username,'_'));
  32. $GLOBALS['user']->set_session($username);/* 设置登录session */
  33. $GLOBALS['user']->set_cookie($username);
  34. $ucdata = isset($GLOBALS['user']->ucdata)? $GLOBALS['user']->ucdata : '';
  35. update_user_info();//更新用户信息
  36. recalculate_price(); // 重新计算购物车中的商品价格
  37. echo "<script>window.location =\"$back_act\";</script>";//跳转到指定页面


  38. }else{
  39. /* $reg_date = time();
  40. $ip = real_ip();*/
  41. $GLOBALS['user']->add_user($username, $password, $email);//在ucenter会员表和ecshop会员表中添加该会员
  42. /* 设置成登录状态 */
  43. $GLOBALS['user']->set_session($username);// 设置登录session
  44. $GLOBALS['user']->set_cookie($username);//设置登录cookie
  45. update_user_info();//更新用户信息
  46. recalculate_price(); // 重新计算购物车中的商品价格
  47. echo "<script>window.location =\"$back_act\";</script>";//跳转到指定页面



  48. }









  49. }else{
  50. echo 'fail(未获得支付宝用户id)';
  51. exit;
  52. }


  53. }else {
  54. //验证失败
  55. //如要调试,请看alipay_notify.php页面的return_verify函数,比对sign和mysign的值是否相等,或者检查$veryfy_result有没有返回true
  56. echo "验证失败";
  57. }



  58. /*检测用户名是否存在*/
  59. function check_user($username){
  60. $sql = "SELECT user_id FROM" . $GLOBALS['ecs']->table('users'). " WHERE user_name='$username'";
  61. $row = $GLOBALS['db']->getRow($sql);

  62. if (!empty($row)){
  63. return true;
  64. }else{
  65. return false;
  66. }
  67. }
复制代码
二、
修改ucenter用户表cdb_uc_members( 前缀因人而异)的字段user_name 为varchar 60 和商城user一致,这样才会增加用户名的长度,不然不能添加新用户,设置新的用户名是为了区别现有用户名和一淘的用户名,以避免出现相同的用户名。

回答:
好东西研究下

不错,支持一下

支持下 试试

请问有人会集成shopex的吗?
联系方式,QQ:791925965

字段user_name 改为varchar 60还是不能注册。因为uc的注册流程判断中也限制了user_name的长度。

必须要支持,给力!

用在什么地方啊

我使用了,不过有些问题需要请教