콘텐츠로 건너뛰기

Google Wallet API

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

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

기본 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 Console 발급자 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편집을 위한 전체 패스 객체입니다.