Documentation Index
Fetch the complete documentation index at: https://api-docs.vpms.io/llms.txt
Use this file to discover all available pages before exploring further.
Booking 서비스의 구매 도메인은 공개 구매 요청 생성, 조회, 결제 처리 기능을 제공합니다. MainPay 결제 게이트웨이와의 연동을 통한 온라인 결제를 지원합니다.
Types
PublicPurchase
공개 구매 요청 객체
type PublicPurchase {
id: ID!
status: String!
datePricesToken: String!
accommodationId: ID!
roomTypeId: ID!
useStartAt: Date!
useExpireAt: Date!
data: String!
}
MainPayPurchaseSignature
MainPay 결제 서명 정보
type MainPayPurchaseSignature {
signature: String!
timestamp: String!
mbrRefNo: String!
mbrNo: String!
aid: String!
pcUrl: String!
mobileUrl: String!
}
Queries
getAccommodationPublicPurchases
숙박시설의 공개 구매 요청 목록을 페이지네이션하여 조회합니다.
GraphQL Signature
query GetAccommodationPublicPurchases(
$accommodationId: ID!
$first: Int
$after: String
$last: Int
$before: String
) {
getAccommodationPublicPurchases(
accommodationId: $accommodationId
first: $first
after: $after
last: $last
before: $before
) {
edges {
cursor
node {
id
status
accommodationId
roomTypeId
useStartAt
useExpireAt
}
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
파라미터
앞에서부터 가져올 항목 수 (forward pagination)
뒤에서부터 가져올 항목 수 (backward pagination)
query {
getAccommodationPublicPurchases(
accommodationId: "01HQKS9V8X2N3P4Q5R"
first: 10
) {
edges {
node {
id
status
useStartAt
useExpireAt
}
}
totalCount
}
}
getSinglePublicPurchase
단일 공개 구매 요청을 ID로 조회합니다.
GraphQL Signature
query GetSinglePublicPurchase($id: ID!) {
getSinglePublicPurchase(id: $id) {
id
status
datePricesToken
accommodationId
roomTypeId
useStartAt
useExpireAt
data
}
}
파라미터
getAccommodationPgConfig
숙박시설의 PG(결제 게이트웨이) 설정을 조회합니다.
GraphQL Signature
query GetAccommodationPgConfig($accommodationId: ID!) {
getAccommodationPgConfig(accommodationId: $accommodationId) {
accommodationId
data
}
}
파라미터
Mutations
createPublicPurchaseRequest
새로운 공개 구매 요청을 생성합니다.
GraphQL Signature
mutation CreatePublicPurchaseRequest($input: CreatePublicPurchaseRequestInput!) {
createPublicPurchaseRequest(input: $input) {
id
status
accommodationId
roomTypeId
useStartAt
useExpireAt
}
}
입력 파라미터
input CreatePublicPurchaseRequestInput {
datePricesToken: String!
accommodationId: ID!
roomTypeId: ID!
useStartAt: Date!
useExpireAt: Date!
person: Int!
overSleeps: Int!
request: String
guestName: String!
phone: String!
roomTypeName: String!
couponUsageHash: String
claimedDiscountAmount: Int
}
mutation {
createPublicPurchaseRequest(input: {
datePricesToken: "token_12345"
accommodationId: "01HQKS9V8X2N3P4Q5R"
roomTypeId: "01HQKS9V8X2N3P4Q5S"
useStartAt: "2025-01-15"
useExpireAt: "2025-01-16"
person: 2
overSleeps: 0
guestName: "홍길동"
phone: "01012345678"
roomTypeName: "디럭스 더블"
request: "조용한 방 부탁드립니다"
}) {
id
status
}
}
requestMainpayPurchaseReady
MainPay 결제를 준비하고 결제 서명을 발급합니다.
GraphQL Signature
mutation RequestMainpayPurchaseReady($input: MainPayPurchaseRequest!) {
requestMainpayPurchaseReady(input: $input) {
signature
timestamp
mbrRefNo
mbrNo
aid
pcUrl
mobileUrl
}
}
입력 파라미터
input MainPayPurchaseRequest {
publicPurchaseId: ID!
accommodationId: ID!
amount: Int!
goodsName: String!
name: String!
phone: String!
email: String
redirectionHost: String!
accommodationName: String!
}
결제 페이지로 이동하기 위한 서명 정보를 반환합니다.
resolveMainpayPurchase
MainPay 결제 결과를 확인하고 처리합니다.
GraphQL Signature
mutation ResolveMainpayPurchase($input: MainPayPurchaseResolve!) {
resolveMainpayPurchase(input: $input) {
complete
resultCode
resultMessage
}
}
입력 파라미터
waitPublicPurchaseResolved
구매 요청이 완료될 때까지 대기하고 예약 객체를 반환합니다.
GraphQL Signature
mutation WaitPublicPurchaseResolved($id: ID!) {
waitPublicPurchaseResolved(id: $id) {
id
# Reservation 필드들
}
}
이 mutation은 결제 완료 후 예약이 생성될 때까지 대기하는 폴링 방식으로 동작합니다.
결제 흐름
- 구매 요청 생성:
createPublicPurchaseRequest
- 결제 준비:
requestMainpayPurchaseReady로 결제 URL 획득
- 결제 진행: 반환된 URL로 사용자를 리다이렉션하여 MainPay 결제 진행
- 결제 완료:
resolveMainpayPurchase로 결제 결과 확인
- 예약 확인:
waitPublicPurchaseResolved로 생성된 예약 조회
관련 API