v1 API 상세: 회원
쇼핑몰 고객(회원) 정보를 Bootpay에 등록해요.
고객 정보를 등록하는 API예요. 이전 시스템의 고객 데이터 이전, 오프라인/제휴 고객 등록에 사용해요.
API 엔드포인트
필요 권한: user:user_create
고객 유형 (membership_type)
| 키 | 값 | 설명 |
|---|---|---|
member |
1 |
회원 — 쇼핑몰에 직접 가입하여 로그인 계정을 보유한 고객 |
guest |
2 |
비회원 — 판매자가 주문 링크 발송을 위해 등록한 고객 |
고객 상태 (status)
| 키 | 값 | 설명 |
|---|---|---|
active |
1 |
활성 |
inactive |
0 |
비활성 |
deleted |
-1 |
삭제됨 |
그룹 유형 (corporate_type)
| 키 | 값 | 설명 |
|---|---|---|
individual |
1 |
개인 그룹 — 회원 가입 시 자동 생성되는 개인 전용 그룹 |
business |
2 |
기업 그룹 — 동일 기업 소속 사용자를 통합 관리 |
department |
3 |
부서 그룹 |
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
name |
String | 필수 | 고객 이름 |
login_pw |
String | 선택 | 로그인 비밀번호 (8자 이상). 비밀번호 없이 이관할 때는 extra.skip_password: true 를 보내고 생략할 수 있어요 |
login_id |
String | 선택 | 로그인 아이디 (영문/숫자, 5~30자). 쇼핑몰이 아이디로 가입받으면 필수예요 |
login_email |
String | 선택 | 로그인용 이메일 (미지정 시 email 사용). 쇼핑몰이 이메일로 가입받으면 필수예요 |
is_group_admin |
Boolean | 선택 | 기업 그룹 관리자 여부. JSON Boolean 으로 보내요 — 문자열 "false" 도 관리자로 처리돼요 |
join_at |
String | 선택 | 가입일 (이전 시스템 데이터 이관용) |
email |
String | 선택 | 이메일 주소 (설정에 따라 필수) |
phone |
String | 선택 | 휴대폰 번호 |
external_uid |
String | 선택 | 외부 고유 ID (가맹점 식별자) |
tel |
String | 선택 | 유선 전화번호 |
birth |
String | 선택 | 생년월일 6자리 |
gender |
Integer | 선택 | 성별 (0: 비공개, 1: 남성, 2: 여성) |
nickname |
String | 선택 | 별명 |
comment |
String | 선택 | 추가 정보/메모 |
user_group_id |
String | 선택 | 기업 그룹 ID (기업 회원인 경우). 없는 ID 면 오류 없이 무시돼요 |
individual_extension |
Object | 선택 | 가맹점이 정하는 고객 확장 정보 |
extra |
Object | 선택 | 추가 옵션. skip_password: true 면 비밀번호 검사를 건너뛰어요 |
코드 예제
const { BootpayCommerce } = require('@bootpay/backend-js')
const commerce = new BootpayCommerce({
client_key: 'your-commerce-client-key',
secret_key: 'your-commerce-secret-key',
mode: 'production'
})
const response = await commerce.user.create({
login_id: 'user001',
login_pw: 'securePassword123',
name: '홍길동',
email: 'user@example.com',
phone: '01012345678',
external_uid: 'EXT_USER_001'
})
console.log('user_id:', response.user_id)javascriptfrom bootpay_backend import BootpayCommerce
commerce = BootpayCommerce(
client_key='your-commerce-client-key',
secret_key='your-commerce-secret-key',
mode='production'
)
response = commerce.user.create(
login_id='user001',
login_pw='securePassword123',
name='홍길동',
email='user@example.com',
phone='01012345678',
external_uid='EXT_USER_001'
)
print('user_id:', response['user_id'])pythonuse Bootpay\ServerPhp\BootpayCommerceApi;
$commerce = new BootpayCommerceApi("your-commerce-client-key", "your-commerce-secret-key");
$response = $commerce->userCreate([
'login_id' => 'user001',
'login_pw' => 'securePassword123',
'name' => '홍길동',
'email' => 'user@example.com',
'phone' => '01012345678',
'external_uid' => 'EXT_USER_001'
]);
print_r($response);phpimport kr.co.bootpay.store.BootpayStore;
import kr.co.bootpay.store.model.request.TokenPayload;
import kr.co.bootpay.store.model.response.BootpayStoreResponse;
import kr.co.bootpay.store.model.pojo.SUser;
TokenPayload tp = new TokenPayload("your-commerce-client-key", "your-commerce-secret-key");
BootpayStore commerce = new BootpayStore(tp).withToken();
SUser user = new SUser();
user.loginId = "user001";
user.loginPw = "securePassword123";
user.name = "홍길동";
user.email = "user@example.com";
user.phone = "01012345678";
user.externalUid = "EXT_USER_001";
BootpayStoreResponse response = commerce.user.join(user);
System.out.println(response);javarequire 'bootpay'
commerce = BootpayStore::RestClient.new(client_key: 'your-commerce-client-key', secret_key: 'your-commerce-secret-key')
response = commerce.external_user_sign_in(
login_id: 'user001',
login_email: 'user@example.com',
login_pw: 'securePassword123',
name: '홍길동',
email: 'user@example.com',
phone: '01012345678',
uid: 'EXT_USER_001'
)
puts responserubycommerce := bootpay.NewCommerceApi("your-commerce-client-key", "your-commerce-secret-key")
response, err := commerce.UserCreate(map[string]interface{}{
"login_id": "user001",
"login_pw": "securePassword123",
"name": "홍길동",
"email": "user@example.com",
"phone": "01012345678",
"external_uid": "EXT_USER_001",
})
fmt.Println(response)gousing Bootpay.Commerce;
var commerce = new BootpayCommerceApi("your-commerce-client-key", "your-commerce-secret-key");
var response = await commerce.UserCreate(new {
login_id = "user001",
login_pw = "securePassword123",
name = "홍길동",
email = "user@example.com",
phone = "01012345678",
external_uid = "EXT_USER_001"
});
Console.WriteLine(response);csharp응답
성공 응답
{
"user_id": "67e4b4425ec892162491d0ec",
"external_uid": "EXT_USER_001",
"login_id": "user001",
"membership_type": 1,
"status": 1
}json실제 응답은 회원 상세과 같은 전체 회원 객체예요. 위에는 주요 필드만 적었어요.
에러 응답
HTTP/1.1 400 Bad Request
Content-Type: application/json{
"error_code": "USER_ID_EXIST",
"message": "이미 사용중인 아이디 입니다"
}json에러 코드
공통 에러
인증·권한 관련 에러는 에러 코드표를 참고해요.
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
API_PARAM_INVALID |
필수 파라미터를 입력해요. | name을 입력해요 |
USER_PASSWORD_FORMAT_INVALID |
비밀번호를 입력하지 않았거나 8자리 이하의 비밀번호는 사용할 수 없어요 | 8자 이상 login_pw를 넣거나 extra.skip_password 를 보내요 |
USER_EXTERNAL_UID_EXIST |
중복된 회원 UNIQ ID예요. | 다른 external_uid를 사용해요 |
USER_ID_EXIST |
이미 사용중인 아이디예요 | 다른 login_id를 사용해요 |
USER_EMAIL_EXIST |
이미 사용중인 이메일이에요 | 다른 이메일을 사용해요 |
USER_ID_BLANK |
로그인 할 아이디를 입력해요 | login_id를 입력해요 |
USER_EMAIL_BLANK |
이메일을 입력해요 | login_email 또는 email을 입력해요 |
USER_ID_INVALID |
로그인 할 아이디는 영문 + 숫자로만 사용이 가능하고 5자 이상 30자 이내로 입력해요 | 형식에 맞는 login_id를 입력해요 |
USER_EMAIL_INVALID |
이메일이 입력되지 않았거나 이메일 형식에 맞지 않는다 다시 입력해요 | 올바른 이메일 형식으로 입력해요 |
user_id 또는 external_uid로 주문서 생성 시 고객을 지정할 수 있어요. 로그인 토큰은 user_id(또는 로그인 아이디·이메일)로 발급받아요 — external_uid 로는 발급되지 않아요.
