Implementing Alipay Quick Login and Permission Verification in ShopNC

ShopNC e-commerce platform supports third-party login integrations. This implementation adds Alipay quick login functionality through the following components:

Configuration Files

alipay_config.php - API credentials
alipayapi.php - Main authentication class
cacert.pem - CA certificate
return_url.php - Callback handler
lib/alipay_core.function.php - Core functions
lib/alipay_md5.function.php - Encryption
lib/alipay_notify.class.php - Server validation
lib/alipay_submit.class.php - Request submission

Authentication Flow

  1. Initialize configuration and submit class
  2. Build authorization parameters
  3. Generate redirect form to Alipay

Login Controller

public function alipayLogin() {
  require 'alipay_config.php';
  require 'alipay_submit.class.php';
  
  $authParams = [
    'service' => 'alipay.auth.authorize',
    'partner' => $config['partner_id'],
    'target_service' => 'user.auth.quick.login',
    'return_url' => 'https://yourdomain.com/callback.php',
    '_input_charset' => 'utf-8'
  ];
  
  $submitHandler = new AlipaySubmit($config);
  $redirectForm = $submitHandler->createAuthForm($authParams, 'GET');
  echo $redirectForm;
}

Form Generation

class AlipaySubmit {
  public function createAuthForm($parameters, $method) {
    $processedParams = $this->prepareParameters($parameters);
    $form = '<form id="alipayAuth" method="'.$method.'">';
    
    foreach($processedParams as $key => $value) {
      $form .= '<input type="hidden" name="'.$key.'" value="'.$value.'">';
    }
    
    $form .= '</form><script>document.getElementById("alipayAuth").submit()</script>';
    return $form;
  }
}

Callback Handling

// return_url.php
$validator = new AlipayNotify($config);
if($validator->verifyResponse()) {
  $alipayUserId = $_GET['user_id'];
  
  $userModel = Model('member');
  $existingUser = $userModel->getUserByAlipayId($alipayUserId);
  
  if($existingUser) {
    $userModel->createSession($existingUser);
    redirect('index.php');
  } else {
    $newUser = [
      'username' => 'alipay_'.time().rand(1000,9999),
      'password' => md5($alipayUserId),
      'email' => 'alipay_'.time().'@domain.com',
      'alipay_id' => $alipayUserId
    ];
    
    if($userModel->register($newUser)) {
      redirect('index.php');
    }
  }
}

Database Modifications

  1. Add columns to member table: alipay_id (VARCHAR), alipay_info (TEXT)
  2. Update member model to handle alipay_id during registration

ShopNC Permission System

ShopNC uses RBAC with menu-based access control. Permissions are defined in configuration files rather than database records.

Menu Configuration

// admin/modules/system/include/menu.php
$_menu['system'] = [
  'name' => 'Platform',
  'child' => [
    [
      'name' => 'Configuration',
      'child' => [
        'settings' => 'System Settings',
        'upload' => 'Upload Settings',
        'admin' => 'Permission Settings'
      ]
    ]
  ]
];

Access is granted at controller level. Adding a new controller entry automatically enables permission checks.

Tags: ShopNC AlipayAPI RBAC PHPeCommerce Authentication

Posted on Wed, 28 Oct 2026 16:17:53 +0000 by herod1