Files
stemcell/app/code/Stemcell/Commerce/README.md
T
2026-09-15 10:26:34 +08:00

4.9 KiB

Stemcell_Commerce 模块说明

概述

Stemcell_Commerce 模块为Magento 2系统提供微信小程序集成功能,实现了微信小程序用户的创建、登录和信息管理等核心功能。

功能特性

  1. 微信小程序用户创建:通过微信小程序的 getPhoneNumber 接口获取用户手机号,并自动在Magento系统中创建用户
  2. 用户信息修改:支持修改用户的姓名、邮箱、手机号和公司单位信息
  3. 微信一键登录:用户通过微信openid一键登录,并返回访问令牌(access token)
  4. 添加用户公司属性:为Magento用户实体添加"公司/单位"自定义属性

安装配置

1. 启用模块

bin/magento module:enable Stemcell_Commerce
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:clean

2. 配置微信小程序参数

在Magento后台进入:Stores > Configuration > Stemcell > 微信小程序配置,设置以下参数:

  • AppID:微信小程序的AppID
  • AppSecret:微信小程序的AppSecret
  • 微信API地址:默认值为 https://api.weixin.qq.com

API接口说明

1. 创建微信小程序用户

URL: /V1/stemcell-commerce/customer/create-by-wechat Method: POST 权限: 匿名访问

参数:

{
  "encryptedData": "微信小程序加密的手机号数据",
  "iv": "加密算法的初始向量",
  "code": "微信登录临时凭证"
}

返回值:

{
  "id": 123,
  "firstname": "微信用户",
  "lastname": "",
  "email": "wx_13800138000_abcdef@stemcell.com",
  "custom_attributes": [
    {
      "attribute_code": "mobile",
      "value": "13800138000"
    }
  ],
  // 其他用户信息...
}

2. 更新用户信息

URL: /V1/stemcell-commerce/customer/update-info Method: POST 权限: 需要用户认证

参数:

{
  "customerId": 123,
  "name": "张三",
  "email": "zhangsan@example.com",
  "mobile": "13800138000",
  "company": "示例公司"
}

返回值:

{
  "id": 123,
  "firstname": "张三",
  "lastname": "",
  "email": "zhangsan@example.com",
  "custom_attributes": [
    {
      "attribute_code": "mobile",
      "value": "13800138000"
    },
    {
      "attribute_code": "company",
      "value": "示例公司"
    }
  ],
  // 其他用户信息...
}

3. 微信一键登录

URL: /V1/stemcell-commerce/customer/wechat-login Method: POST 权限: 匿名访问

参数:

{
  "code": "微信登录临时凭证"
}

返回值 (已绑定手机的用户):

{
  "access_token": "用户访问令牌",
  "token_type": "Bearer",
  "expires_in": 86400,
  "customer": {
    "id": 123,
    "firstname": "张三",
    "lastname": "",
    "email": "zhangsan@example.com",
    // 其他用户信息...
  }
}

返回值 (新用户,需要绑定手机):

{
  "need_bind_phone": true,
  "openid": "微信用户的openid"
}

使用示例

微信小程序端调用示例

// 微信小程序登录
wx.login({
  success: res => {
    if (res.code) {
      // 调用微信一键登录API
      wx.request({
        url: 'https://your-magento-site.com/rest/V1/stemcell-commerce/customer/wechat-login',
        method: 'POST',
        data: { code: res.code },
        success: response => {
          if (response.data.need_bind_phone) {
            // 需要绑定手机号
            // 调用getPhoneNumber接口获取用户手机号
            wx.getUserProfile({
              desc: '用于完善用户资料',
              success: userProfile => {
                // 调用获取手机号接口
                wx.request({
                  url: 'https://your-magento-site.com/rest/V1/stemcell-commerce/customer/create-by-wechat',
                  method: 'POST',
                  data: {
                    encryptedData: encryptedData,
                    iv: iv,
                    code: res.code
                  },
                  success: createRes => {
                    console.log('用户创建成功', createRes.data);
                  }
                });
              }
            });
          } else {
            // 登录成功,保存token
            wx.setStorageSync('token', response.data.access_token);
            console.log('登录成功', response.data);
          }
        }
      });
    }
  }
});

授权访问其他API

登录成功后,所有需要用户认证的API都需要在请求头中添加以下授权信息:

Authorization: Bearer {access_token}

注意事项

  1. 确保已在微信小程序管理后台正确配置了域名白名单
  2. 模块会自动为用户创建临时邮箱,格式为:wx_{手机号}_{随机字符串}@stemcell.com
  3. 如需自定义临时邮箱后缀,可以修改 CustomerManagement 类中的 generateTempEmail 方法
  4. 数据补丁会自动为用户实体添加"company"属性