提供一个自动注册的接口。
接收的参数:openid,nickname
返回格式:
{'flag':'true'/'false','code':'','msg':'','attachparams':{'param1':'','param2':''}}
1、新建一个表
customers_auto
create table customers_auto(
id int primary key auto_increment,
out_id_name varchar(255),
out_id_value varchar(255),
out_type varchar(255),
auto_email varchar(255),
customers_id int
);
out_id_name:外部id的key名称,如'openid'
out_id_value:外表id的值,如'zilshkksd9f0ak'
out_type:外部账号类型
auto_email:系统自动产生的邮箱,用于填充到zencart本身的customers表的customers_email_address字段
customers_id:是zencart的customers的表的主键
2、改造pages/create_account/下的header_php.php文件:
$openid = $_POST['openid'];
if (!isset($openid)) {
require(DIR_WS_MODULES . zen_get_module_directory('require_languages.php'));
include(DIR_WS_MODULES . zen_get_module_directory(FILENAME_CREATE_ACCOUNT));
$breadcrumb->add(NAVBAR_TITLE);
// This should be last line of the script:
$zco_notifier->notify('NOTIFY_HEADER_END_CREATE_ACCOUNT');
} else {
include(DIR_WS_MODULES . zen_get_module_directory("create_account_auto"));
exit;
}
如果有openid就引入另一个文件来处理,否则就走平常的。
2、检查传递的参数,
验证传递的openid是否已经存在,如果是,则返回失败,msg为账号已存在;
3、自动生成一个email,
格式为openid+"@zencart.com"
5、插入到zencart的customers表
需要的信息用程序自动生成。
获取到其customers_id供下一步使用。
搞定。写一个页面测试一下:
testcreateacc.php
<form action="create_account_auto.php" method="post">
<input type="text" name="openid" value="randomid" />
<input type="text" name="nickname" value="little" />
<input type="submit" value="提交" />
</form>
create_account_auto.php
<?php
$url="http://localhost/zencart/index.php?main_page=create_account";
$post_data=array('openid'=>$_REQUEST['openid'],
'nickname'=>$_REQUEST['nickname']);
// var_dump($post_data);
//$post_data=implode("&",$post_data);
$ch=curl_init();
curl_setOpt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setOpt($ch,CURLOPT_POST,1);
curl_setOpt($ch,CURLOPT_POSTFIELDS,$post_data);
$content=curl_exec($ch);
curl_close($ch);
echo $content;
?>
测试返回:
{'flag':'true','msg':'success'}
重复提交:
{'flag':'false','code':'account_exist','msg':'账号已经存在!'}