콘텐츠로 건너뛰기

Google Wallet API

Google Wallet API를 사용하면 프로그래밍 방식으로 Google Wallet 패스를 생성, 업데이트, 나열 및 관리할 수 있습니다. 제어판의 패스 빌더가 수행하는 것과 동일한 작업을 지원합니다.

이 API를 사용하여 멤버십 카드, 쿠폰, 기프트 카드, 이벤트 티켓, 항공 탑승권, 대중교통 티켓 및 일반 패스를 발급하고, 사용자의 기기에 이미 저장된 패스에 실시간 업데이트를 푸시할 수 있습니다.

기본 URL

Anchor link to
https://apple-passkit.svc-nue.pushwoosh.com

모든 엔드포인트는 HTTPS를 통해 제공됩니다. 별도의 언급이 없는 한 요청과 응답은 application/json을 사용합니다.

모든 요청에는 Pushwoosh API 액세스 토큰이 포함된 Authorization 헤더가 있어야 합니다:

Authorization: Token <api-token>

토큰을 소유한 계정은 applicationCode로 참조되는 애플리케이션을 소유해야 합니다. 다른 계정에 속한 애플리케이션에 대한 요청은 403 Forbidden을 반환합니다.

  • 필드 이름 지정: JSON 필드는 lowerCamelCase를 사용합니다 (예: serialNumber, hexBackgroundColor, logoUrl).
  • 채워지지 않은 필드: 응답에는 비어 있거나 값이 0인 경우에도 모든 필드가 포함됩니다.
  • ID: serialNumber는 패스가 생성될 때 항상 서버에서 할당됩니다. 생성 시 보내는 모든 값은 무시됩니다. 전체 Google Wallet 객체 ID는 {issuerId}.{serialNumber}입니다.
  • 이미지: logoUrlheroImageUrl은 Google이 가져오는 이미지에 대한 공개 HTTPS URL이며, 업로드된 파일이 아닙니다.
  • 패스 스타일: 패스에는 generic, offer, loyalty, eventTicket, giftCard, flight 또는 transit 중 정확히 하나의 스타일 객체가 설정되어야 합니다. 스타일은 생성 후 변경할 수 없습니다.

오류 응답

Anchor link to
HTTP 상태의미
400 Bad Request잘못된 인수—필수 필드가 누락되었거나 형식이 잘못되었습니다.
401 UnauthorizedAuthorization 헤더가 누락되었거나 유효하지 않습니다.
403 Forbidden애플리케이션이 호출자의 계정에 속하지 않습니다.
404 Not Found패스, 템플릿 또는 애플리케이션을 찾을 수 없습니다.
503 Service Unavailable서비스 용량이 초과되었거나 일시적으로 사용할 수 없습니다.

엔드포인트

Anchor link to
메서드경로설명
POST/api/google/pass/validate패스 구성 유효성 검사
POST/api/google/pass/create새 패스 객체를 생성하고 저장 링크 받기
POST/api/google/pass/update/{serialNumber}기존 패스 업데이트; Google이 변경 사항 전달
GET/api/google/pass/{applicationCode}/{serialNumber}/save-link”Google Wallet에 추가” 저장 링크 받기
GET/api/google/pass/{applicationCode}/{serialNumber}단일 패스 받기
GET/api/google/passes애플리케이션의 모든 패스 나열
POST/api/google/pass/{applicationCode}/{serialNumber}/state패스 활성화 또는 비활성화
DELETE/api/google/pass/{applicationCode}/{serialNumber}패스 삭제
GET/api/google/config애플리케이션의 Google Wallet 구성 받기
GET/api/google/templates사용 가능한 패스 템플릿 나열
GET/api/google/templates/{filename}단일 템플릿 받기

패스 생성

Anchor link to

Google Wallet에서 패스 클래스와 객체를 생성한 다음, 서버에서 할당한 일련번호, 전체 객체 ID 및 “Google Wallet에 추가” 저장 링크를 반환합니다.

POST /api/google/pass/create

요청 본문

Anchor link to
매개변수유형필수설명
passobject패스를 설명하는 패스 객체. 정확히 하나의 스타일이 설정되어야 합니다.
userIdstring패스가 발급되는 Pushwoosh User ID.
applicationCodestringPushwoosh 애플리케이션 코드.
요청 예시
Anchor link to
{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"hexBackgroundColor": "#3c414c",
"logoUrl": "https://cdn.acme.com/logo.png",
"loyalty": {
"programName": "Acme Rewards",
"accountName": "Jane Doe",
"accountId": "1234567890",
"pointsLabel": "Points",
"pointsBalance": "1200",
"rewardsTier": "Gold"
},
"barcode": {
"format": "QR_CODE",
"value": "1234567890"
}
}
}
필드유형설명
serialNumberstring생성된 패스의 서버 할당 고유 ID.
objectIdstring전체 Google Wallet 객체 ID: {issuerId}.{serialNumber}.
saveLinkstring”Google Wallet에 추가” 링크: https://pay.google.com/gp/v/save/{jwt}.
messagestring결과 메시지.
응답 예시
Anchor link to
{
"serialNumber": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"objectId": "XXXXXXXXXXXXXXX.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"saveLink": "https://pay.google.com/gp/v/save/{jwt}",
"message": "Pass created successfully"
}

패스 유효성 검사

Anchor link to

패스를 생성하지 않고 Google의 요구 사항에 대해 패스 구성을 확인합니다. 생성 호출 전에 유용합니다.

POST /api/google/pass/validate

요청 본문

Anchor link to
매개변수유형필수설명
passobject유효성을 검사할 패스 객체.
필드유형설명
validboolean패스가 유효성 검사를 통과했는지 여부.
errorsarray of strings수정해야 하는 차단 문제.
warningsarray of strings차단되지 않는 권고 사항.

패스 업데이트

Anchor link to

새로운 내용으로 패스 객체를 패치합니다. 그러면 Google은 패스를 저장한 모든 기기에 업데이트된 버전을 전달합니다. 선택적으로 업데이트와 함께 Android 알림을 보냅니다.

POST /api/google/pass/update/{serialNumber}

경로 매개변수

Anchor link to
매개변수유형설명
serialNumberstring패스가 생성될 때 반환된 일련번호.

요청 본문

Anchor link to
매개변수유형필수설명
updatesobject새로운 내용이 포함된 패스 객체. 스타일은 변경할 수 없습니다.
applicationCodestringPushwoosh 애플리케이션 코드.
notifyMessagestring아니요비어 있지 않은 경우, 패스를 저장한 모든 사람에게 이 텍스트가 포함된 Android 알림을 푸시합니다. 비어 있으면 자동 업데이트를 의미합니다.
notifyOnUpdateboolean아니요필드 업데이트 알림을 요청합니다. loyalty, eventTicket, flight 패스만 실제로 알림을 보내고, 다른 스타일은 플래그를 수락하지만 알림을 보내지 않습니다. 알림은 관련 시작 시간 3시간 이내에만 발생하며, Google은 24시간당 패스당 3개의 알림으로 제한합니다.
필드유형설명
successboolean업데이트 성공 여부.
messagestring결과 메시지.

저장 링크 받기

Anchor link to

이미 생성된 패스에 대한 “Google Wallet에 추가” 저장 링크를 반환합니다. 패스 객체는 이미 존재해야 합니다(패스 생성을 통해 생성됨).

GET /api/google/pass/{applicationCode}/{serialNumber}/save-link

필드유형설명
saveLinkstringhttps://pay.google.com/gp/v/save/{jwt}.

패스 받기

Anchor link to

전체 패스 객체를 포함하여 저장된 단일 패스를 반환합니다.

GET /api/google/pass/{applicationCode}/{serialNumber}

단일 패스 레코드 객체{ "pass": { ... } }를 반환합니다.

패스 목록

Anchor link to

애플리케이션에 대해 저장된 패스의 페이지네이션되고 정렬된 목록을 반환합니다.

GET /api/google/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20

쿼리 매개변수

Anchor link to
매개변수유형필수설명
applicationCodestringPushwoosh 애플리케이션 코드.
orderBystring아니요정렬 필드: UPDATED(기본값) 또는 CREATED.
orderDirectionstring아니요정렬 방향: DESC(기본값, 최신순) 또는 ASC.
pageinteger아니요0부터 시작하는 페이지 인덱스. 기본값은 0입니다.
perPageinteger아니요페이지 크기. 0이거나 생략하면 서버 기본값을 사용합니다.
필드유형설명
passesarray of objects현재 페이지의 패스 레코드.
pageinteger반환된 페이지 인덱스.
perPageinteger이 응답에 사용된 페이지 크기.
totalinteger모든 페이지에 걸쳐 애플리케이션의 총 패스 수.

패스 상태 설정

Anchor link to

패스를 활성화하거나 비활성화합니다. 비활성화된(비활성) 패스는 사용자의 Google Wallet의 만료된 패스 섹션으로 이동합니다. 레코드는 다시 활성화할 수 있도록 유지됩니다.

POST /api/google/pass/{applicationCode}/{serialNumber}/state

요청 본문

Anchor link to
매개변수유형필수설명
activebooleantrue는 패스를 ACTIVE로 설정하고, false는 비활성화합니다(INACTIVE).

성공 시 빈 객체 {}를 반환합니다.

패스 삭제

Anchor link to

Google에서 패스를 비활성화하고 Pushwoosh에 저장된 레코드를 제거합니다.

DELETE /api/google/pass/{applicationCode}/{serialNumber}

성공 시 빈 객체 {}를 반환합니다.

구성 받기

Anchor link to

애플리케이션의 Google Wallet 구성 상태를 반환합니다.

GET /api/google/config?applicationCode=XXXXX-XXXXX

필드유형설명
hasServiceAccountboolean서비스 계정 키가 구성되었는지 여부.
issuerIdstring구성된 Google Pay 및 Wallet 콘솔 발급자 ID.
serviceAccountEmailstring구성된 서비스 계정client_email.

사용 가능한 예제 패스 템플릿을 나열하거나, 시작점으로 사용할 수 있는 패스 객체로 하나를 가져옵니다.

GET /api/google/templates{ "templates": [ { "filename", "name", "description", "style" } ] }를 반환합니다.

GET /api/google/templates/{filename}{ "template": { ...pass object... } }를 반환합니다.

객체 참조

Anchor link to

패스 객체

Anchor link to
필드유형설명
serialNumberstring생성 시 서버에서 할당되며, 패스를 식별합니다.
generic / offer / loyalty / eventTicket / giftCard / flight / transitobject패스 스타일. 정확히 하나만 설정해야 합니다. 아래의 스타일 객체를 참조하세요.
hexBackgroundColorstring카드 배경색, #rrggbb.
logoUrlstring로고 이미지의 공개 HTTPS URL. 멤버십 및 대중교통에 필요합니다.
heroImageUrlstring넓은 배너 이미지의 공개 HTTPS URL.
barcodeobject패스에 표시되는 바코드.
textModulesarray상세 보기에 표시되는 텍스트 모듈.
linksarray상세 보기에 표시되는 링크 모듈.
expirationTimestringGoogle이 패스를 자동으로 만료시키는 ISO 8601 시간. 비어 있으면 만료되지 않음.
appLinkobject앱 링크: 패스 전면의 CTA 버튼.
locationsarray지오펜스 알림을 트리거하는 위치 (최대 10개).
holdersPolicystring패스를 저장할 수 있는 사람: ONE_USER_ALL_DEVICES(기본값), ONE_USER_ONE_DEVICE 또는 MULTIPLE_HOLDERS.

일반 객체

Anchor link to
필드유형설명
cardTitlestring필수. 카드 상단의 발급자/프로그램 이름.
headerstring필수. 카드의 주 제목.
subheaderstring보조 제목.
cardFieldsarray전면에 고정된 최대 6개의 텍스트 모듈 (최대 3행 2열).

쿠폰 객체

Anchor link to
필드유형설명
titlestring필수. 예: 모든 상품 20% 할인.
providerstring필수. 판매자 이름.
detailsstring쿠폰 상세 정보.
finePrintstring이용 약관.
redemptionChannelstringONLINE, INSTORE, BOTH(기본값) 또는 TEMPORARY_PRICE_REDUCTION.
issuerNamestringGoogle의 “발급자” 표면에 표시되며, 기본값은 provider입니다.

멤버십 객체

Anchor link to
필드유형설명
programNamestring필수. 패스에 logoUrl이 필요합니다.
accountNamestring카드에 표시되는 회원 이름.
accountIdstring카드에 표시되는 회원 ID.
pointsLabelstring예: 포인트. 잔액과 함께만 표시됩니다.
pointsBalancestring포인트 잔액.
rewardsTierstring예: 골드.
rewardsTierLabelstring등급 옆의 라벨. 기본값은 등급입니다.
issuerNamestring기본값은 programName입니다.

이벤트 티켓 객체

Anchor link to
필드유형설명
eventNamestring필수.
venueName / venueAddressstring장소 상세 정보.
startDateTime / endDateTimestring오프셋이 있는 ISO 8601 (예: 2026-07-01T19:30:00+02:00).
ticketHolderName / ticketNumber / ticketTypestring소지자 및 티켓 상세 정보.
section / row / seat / gatestring좌석 상세 정보.
issuerNamestring기본값은 eventName입니다.

기프트 카드 객체

Anchor link to
필드유형설명
merchantNamestring필수.
cardNumberstring필수.
pinstring카드 PIN.
balancestring십진수 금액, 예: 25.00. balanceCurrency가 필요합니다.
balanceCurrencystringISO 4217 통화 코드, 예: USD.
issuerNamestring기본값은 merchantName입니다.

항공편 객체

Anchor link to
필드유형설명
carrierIataCodestring필수. 2자리 IATA 코드, 예: LX.
airlineNamestring항공사 표시 이름.
flightNumberstring필수. 숫자만, 예: 113.
originAirportCode / destinationAirportCodestring필수. 3자리 IATA 코드.
originTerminal / originGate / destinationTerminalstring터미널 및 게이트 상세 정보.
departureDateTimestring필수. 출발 공항 현지 시간, 오프셋 없는 ISO 8601 (예: 2026-09-01T06:30:00).
boardingTime / arrivalDateTimestring동일한 현지 형식. arrivalDateTime은 도착지 현지 시간입니다.
passengerNamestring필수.
confirmationCode / seatNumber / seatClass / boardingGroupstring승객 상세 정보.
issuerNamestring기본값은 airlineName, 그 다음은 항공사 코드입니다.

대중교통 객체

Anchor link to
필드유형설명
transitTypestring필수. BUS, RAIL, TRAM, FERRY 또는 OTHER.
transitOperatorNamestring필수. 패스에 logoUrl이 필요합니다.
passengerNamestring필수.
ticketNumberstring티켓 번호.
tripTypestringONE_WAY(기본값) 또는 ROUND_TRIP.
legsarray여행 순서대로 하나 이상의 대중교통 구간.
issuerNamestring기본값은 transitOperatorName입니다.

대중교통 구간 객체

Anchor link to
필드유형설명
originName / destinationNamestring필수.
departureDateTime / arrivalDateTimestringISO 8601; 오프셋은 선택 사항(생략 시 현지 시간).
platform / coach / seatstring탑승 상세 정보.
fareNamestring예: Anytime Single.

바코드 객체

Anchor link to
필드유형설명
formatstringQR_CODE, PDF_417, AZTEC, CODE_128, EAN_13 및 기타 Google Wallet 바코드 유형.
valuestring바코드에 인코딩된 데이터.
altTextstring바코드 아래에 표시되는 텍스트.

텍스트 모듈 객체

Anchor link to
필드유형설명
idstring모듈의 식별자.
headerstring모듈 제목.
bodystring모듈 텍스트.

링크 모듈 객체

Anchor link to
필드유형설명
uristring외부 링크 URL.
descriptionstring상세 보기에 표시되는 링크 라벨.

앱 링크 객체

Anchor link to
필드유형설명
uristring웹 URL 또는 딥링크 대상 URI.
androidPackageNamestring선택 사항. 설정 시 Android 앱을 엽니다.
descriptionstring대상 URI의 내부 설명(보이는 버튼 라벨 아님). 기본값은 URI입니다.

위치 객체

Anchor link to
필드유형설명
latitudenumber-90.0에서 +90.0까지.
longitudenumber-180.0에서 +180.0까지.

패스 레코드 객체

Anchor link to

list/get 엔드포인트에서 반환됩니다.

필드유형설명
serialNumberstring패스 일련번호.
objectIdstring전체 Google Wallet 객체 ID {issuerId}.{serialNumber}.
cardTitlestring패스의 표시 제목/헤더.
headerstring보조 표시 제목.
userIdstring패스가 발급된 Pushwoosh User ID.
createdAt / updatedAtstring생성 및 마지막 업데이트 타임스탬프.
statestringACTIVE 또는 INACTIVE.
stylestringgeneric, offer, loyalty, eventTicket, giftCard, flight 또는 transit.
passobject편집을 위한 전체 패스 객체.