v1 API 상세: 회원
고객 전용 로그인 토큰을 발급해요. 발급된 토큰을 결제 위젯에 전달하면 고객이 자동 로그인된 상태로 쇼핑몰을 이용할 수 있어요.
API 엔드포인트
필요 권한: user:user_login_token
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
user_id |
String | 필수 | 고객 식별값. 회원은 회원 ID 또는 로그인 아이디(이메일 가입 몰은 로그인 이메일)예요. external_uid 로는 찾지 않아요. 비회원(guest)은 가맹점이 정한 비회원 식별값이며, 해당 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 kr.co.bootpay.store.model.response.BootpayStoreResponse;
TokenPayload tp = new TokenPayload("your-commerce-client-key", "your-commerce-secret-key");
BootpayStore commerce = new BootpayStore(tp).withToken();
BootpayStoreResponse response = commerce.user.token(
"67e4b4425ec892162491d0ec", // user_id
"individual", // corporate_type
"member" // membership_type
);
System.out.println(response);javarequire 'bootpay'
commerce = BootpayStore::RestClient.new(client_key: 'your-commerce-client-key', secret_key: 'your-commerce-secret-key')
response = commerce.login_by_user_id(
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": "eyJhbGciOiJSUzI1NiJ9.xxxxx.xxxxx"
}json에러 응답
HTTP/1.1 400 Bad Request
Content-Type: application/json{
"error_code": "INVOICE_TARGET_NOT_FOUND",
"message": "링크페이에 등록된 사용자 정보가 없습니다."
}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에러 코드
공통 에러
인증·권한 관련 에러는 에러 코드표를 참고해요.
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
REQUIRED_PARAMETER_IS_MISSING |
user_id가 없어요. (HTTP 400) |
user_id를 넣어요 |
INVOICE_TARGET_NOT_FOUND |
링크페이에 등록된 사용자 정보가 없어요. | 활성 회원의 user_id·로그인 아이디·로그인 이메일인지 확인해요 |
USER_CORPORATE_TYPE_INVALID |
회원 타입이 유효하지 않아요. | corporate_type 을 individual·corporate 중 하나로 보내요 |
MALL_CORPORATE_TYPE_NOT_ALLOWED |
사업자 회원이 허용된 쇼핑몰이 아니에요. | corporate_type 을 individual 로 보내거나 쇼핑몰 설정을 확인해요 |
USER_GROUP_NOT_FOUND |
회원 그룹 정보를 찾지 못했어요. | 해당 유형의 그룹에 속한 회원인지 확인해요 |
로그인 세션은 발급 후 1일 동안 유지돼요. 페이지 로딩 시마다 새로 발급하는 것을 권장해요.
