고객 전용 로그인 토큰을 발급해요. 발급된 토큰을 결제 위젯에 전달하면 고객이 자동 로그인된 상태로 쇼핑몰을 이용할 수 있어요.
API 엔드포인트
POST
https://api.bootapi.com/v1/users/login/tokenBasic Auth요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
user_id |
String | 필수 | 고객 고유 ID |
corporate_type |
String | 선택 | 고객 유형 (individual / corporate), 기본: individual |
membership_type |
String | 선택 | 회원 유형 (guest / member), 기본: member |
코드 예제
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.loginToken({
user_id: '67e4b4425ec892162491d0ec',
corporate_type: 'individual',
membership_type: 'member'
})
console.log('token:', response.token)javascriptfrom bootpay_backend import BootpayCommerce
commerce = BootpayCommerce(
client_key='your-commerce-client-key',
secret_key='your-commerce-secret-key',
mode='production'
)
response = commerce.user.login_token(
user_id='67e4b4425ec892162491d0ec',
corporate_type='individual',
membership_type='member'
)
print('token:', response['token'])pythonuse Bootpay\ServerPhp\BootpayCommerceApi;
$commerce = new BootpayCommerceApi("your-commerce-client-key", "your-commerce-secret-key");
$response = $commerce->userLoginToken([
'user_id' => '67e4b4425ec892162491d0ec',
'corporate_type' => 'individual',
'membership_type' => 'member'
]);
print_r($response);phpimport kr.co.bootpay.store.BootpayStore;
import kr.co.bootpay.store.model.request.TokenPayload;
import java.util.HashMap;
TokenPayload tp = new TokenPayload("your-commerce-client-key", "your-commerce-secret-key");
BootpayStore commerce = new BootpayStore(tp);
HashMap<String, Object> params = new HashMap<>();
params.put("user_id", "67e4b4425ec892162491d0ec");
params.put("corporate_type", "individual");
params.put("membership_type", "member");
HashMap<String, Object> response = commerce.userLoginToken(params);
System.out.println(response);javacommerce = BootpayStore::Api.new('your-commerce-client-key', 'your-commerce-secret-key')
response = commerce.user_login_token(
user_id: '67e4b4425ec892162491d0ec',
corporate_type: 'individual',
membership_type: 'member'
)
puts responserubycommerce := bootpay.NewCommerceApi("your-commerce-client-key", "your-commerce-secret-key")
response, err := commerce.UserLoginToken(map[string]interface{}{
"user_id": "67e4b4425ec892162491d0ec",
"corporate_type": "individual",
"membership_type": "member",
})
fmt.Println(response)gousing Bootpay.Commerce;
var commerce = new BootpayCommerceApi("your-commerce-client-key", "your-commerce-secret-key");
var response = await commerce.UserLoginToken(new {
user_id = "67e4b4425ec892162491d0ec",
corporate_type = "individual",
membership_type = "member"
});
Console.WriteLine(response);csharp응답
성공 응답
{
"token": "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiNjdlNGI0NDI1ZWM4OTIxNjI0OTFkMGVjIn0.xxxxx",
"expired_at": "2025-07-11T11:00:00Z"
}json에러 응답
{
"status": 400,
"code": 2300,
"message": "로그인 아이디가 없습니다.",
"data": null
}json위젯에서 토큰 사용
발급받은 토큰을 결제 위젯의 onReady 콜백에서 전달해요:
window.BootpayCommerce.render('#bootpay-shop', {
client_key: '[Commerce Client KEY]',
hooks: {
onReady: () => {
// 서버에서 발급받은 로그인 토큰 전달
const token = "[server-issued-token]"
window.BootpayCommerce.sendEvent('updateUserSession', token)
}
}
})javascript에러 코드
공통 에러
인증·권한 관련 에러는 에러 코드표를 참고해요.
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
USER_NOT_FOUND |
회원정보가 없어요. 다시 확인해요. | user_id를 확인해요 |
USER_LOGIN_FAILED |
가입되지 않은 계정이거나 비밀번호가 틀렸어요. 다시 확인해요 | login_id와 password를 확인해요 |
USER_LOGIN_PASSWORD_NOT_MATCH |
로그인 비밀번호가 잘못됐어요. 다시 확인해요 | password를 확인해요 |
USER_NO_LOGIN_ID |
로그인 아이디가 없는 계정이에요. | 고객에게 login_id를 먼저 등록해요 |
로그인 토큰은 발급 후 일정 시간이 지나면 만료돼요. 페이지 로딩 시마다 새로 발급하는 것을 권장해요.