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
- Initialize configuration and submit class
- Build authorization parameters
- 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
- Add columns to member table: alipay_id (VARCHAR), alipay_info (TEXT)
- 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.