ข้ามไปยังเนื้อหา

Google Wallet API

Google Wallet API ช่วยให้คุณสามารถสร้าง อัปเดต แสดงรายการ และจัดการ พาสของ Google Wallet ผ่านโปรแกรมได้ รองรับการดำเนินการเช่นเดียวกับที่ pass builder ใน Control Panel ทำ

ใช้ API นี้เพื่อออกบัตรสะสมคะแนน ข้อเสนอ บัตรของขวัญ ตั๋วงานอีเวนต์ บอร์ดดิ้งพาสสำหรับเที่ยวบิน ตั๋วเดินทาง และพาสทั่วไป และเพื่อพุชการอัปเดตแบบสดไปยังพาสที่บันทึกไว้ในอุปกรณ์ของผู้ใช้ของคุณแล้ว

https://apple-passkit.svc-nue.pushwoosh.com

Endpoints ทั้งหมดให้บริการผ่าน HTTPS คำขอและการตอบกลับใช้ application/json เว้นแต่จะระบุไว้เป็นอย่างอื่น

การยืนยันตัวตน

Anchor link to

ทุกคำขอต้องมีเฮดเดอร์ Authorization พร้อมด้วย Pushwoosh API access token ของคุณ:

Authorization: Token <api-token>

บัญชีที่เป็นเจ้าของโทเค็นจะต้องเป็นเจ้าของแอปพลิเคชันที่อ้างอิงโดย applicationCode คำขอสำหรับแอปพลิเคชันที่เป็นของบัญชีอื่นจะส่งคืน 403 Forbidden

ข้อตกลงทั่วไป

Anchor link to
  • การตั้งชื่อฟิลด์: ฟิลด์ JSON ใช้ lowerCamelCase (ตัวอย่างเช่น serialNumber, hexBackgroundColor, logoUrl)
  • ฟิลด์ที่ไม่ได้กรอกข้อมูล: การตอบกลับจะรวมฟิลด์ทั้งหมด แม้ว่าจะว่างเปล่าหรือมีค่าเป็นศูนย์
  • ข้อมูลระบุตัวตน: serialNumber จะถูกกำหนดโดยเซิร์ฟเวอร์เสมอเมื่อมีการสร้างพาส ค่าใดๆ ที่คุณส่งเมื่อสร้างจะถูกละเว้น object id ของ Google Wallet แบบเต็มคือ {issuerId}.{serialNumber}
  • รูปภาพ: logoUrl และ heroImageUrl เป็น URL HTTPS สาธารณะของรูปภาพที่ Google จะดึงข้อมูลมา ไม่ใช่ไฟล์ที่อัปโหลด
  • รูปแบบพาส: ต้องตั้งค่าอ็อบเจ็กต์รูปแบบ (generic, offer, loyalty, eventTicket, giftCard, flight, หรือ transit) เพียงหนึ่งรูปแบบเท่านั้นบนพาส รูปแบบไม่สามารถเปลี่ยนแปลงได้หลังจากการสร้าง

การตอบกลับข้อผิดพลาด

Anchor link to
สถานะ HTTPความหมาย
400 Bad Requestอาร์กิวเมนต์ไม่ถูกต้อง—ฟิลด์ที่จำเป็นขาดหายไปหรือมีรูปแบบไม่ถูกต้อง
401 Unauthorizedเฮดเดอร์ Authorization ขาดหายไปหรือไม่ถูกต้อง
403 Forbiddenแอปพลิเคชันไม่ได้เป็นของบัญชีของผู้เรียก
404 Not Foundไม่พบพาส เทมเพลต หรือแอปพลิเคชัน
503 Service Unavailableบริการมีความจุเต็มหรือใช้งานไม่ได้ชั่วคราว
เมธอดพาธคำอธิบาย
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รับลิงก์สำหรับบันทึก “Add to 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 จากนั้นส่งคืนหมายเลขซีเรียลที่เซิร์ฟเวอร์กำหนด, object id แบบเต็ม และลิงก์สำหรับบันทึก “Add to Google Wallet”

POST /api/google/pass/create

เนื้อหาคำขอ

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
passobjectใช่อ็อบเจ็กต์พาส ที่อธิบายพาส ต้องตั้งค่ารูปแบบเพียงหนึ่งรูปแบบเท่านั้น
userIdstringใช่Pushwoosh User ID ที่พาสถูกออกให้
applicationCodestringใช่รหัสแอปพลิเคชัน Pushwoosh
ตัวอย่างคำขอ
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"
}
}
}

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
serialNumberstringข้อมูลระบุตัวตนเฉพาะของพาสที่สร้างขึ้นซึ่งกำหนดโดยเซิร์ฟเวอร์
objectIdstringobject id ของ Google Wallet แบบเต็ม: {issuerId}.{serialNumber}
saveLinkstringลิงก์ “Add to 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 โดยไม่ต้องสร้างพาส มีประโยชน์ก่อนที่จะเรียกใช้ create

POST /api/google/pass/validate

เนื้อหาคำขอ

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
passobjectใช่อ็อบเจ็กต์พาส ที่จะตรวจสอบ

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
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ใช่อ็อบเจ็กต์พาส พร้อมเนื้อหาใหม่ รูปแบบไม่สามารถเปลี่ยนแปลงได้
applicationCodestringใช่รหัสแอปพลิเคชัน Pushwoosh
notifyMessagestringไม่เมื่อไม่ว่างเปล่า ให้พุชการแจ้งเตือน Android พร้อมข้อความนี้ไปยังทุกคนที่บันทึกพาสไว้ ค่าว่างหมายถึงการอัปเดตแบบเงียบ
notifyOnUpdatebooleanไม่ขอการแจ้งเตือนการอัปเดตฟิลด์ เฉพาะพาส loyalty, eventTicket และ flight เท่านั้นที่จะแจ้งเตือนจริง รูปแบบอื่นยอมรับแฟล็กแต่ไม่เคยส่งการแจ้งเตือน การแจ้งเตือนจะทำงานเฉพาะภายใน 3 ชั่วโมงของเวลาเริ่มต้นที่เกี่ยวข้อง และ Google จำกัดไว้ที่ 3 การแจ้งเตือนต่อพาสต่อ 24 ชั่วโมง

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
successbooleanการอัปเดตสำเร็จหรือไม่
messagestringข้อความผลลัพธ์

รับลิงก์สำหรับบันทึก

Anchor link to

ส่งคืนลิงก์สำหรับบันทึก “Add to Google Wallet” สำหรับพาสที่สร้างไว้แล้ว อ็อบเจ็กต์พาสต้องมีอยู่แล้ว (สร้างผ่าน สร้างพาส)

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

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
saveLinkstringhttps://pay.google.com/gp/v/save/{jwt}

รับพาส

Anchor link to

ส่งคืนพาสที่จัดเก็บไว้เพียงรายการเดียว รวมถึงอ็อบเจ็กต์พาสแบบเต็ม

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

การตอบกลับ

Anchor link to

ส่งคืน { "pass": { ... } } ซึ่งเป็น ระเบียนพาส เดียว

แสดงรายการพาส

Anchor link to

ส่งคืนรายการพาสที่จัดเก็บไว้สำหรับแอปพลิเคชันแบบแบ่งหน้าและจัดเรียง

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

พารามิเตอร์ของคิวรี

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
applicationCodestringใช่รหัสแอปพลิเคชัน Pushwoosh
orderBystringไม่ฟิลด์สำหรับจัดเรียง: UPDATED (ค่าเริ่มต้น) หรือ CREATED
orderDirectionstringไม่ทิศทางการจัดเรียง: DESC (ค่าเริ่มต้น, ใหม่สุดก่อน) หรือ ASC
pageintegerไม่ดัชนีหน้าแบบศูนย์ เริ่มต้นที่ 0
perPageintegerไม่ขนาดหน้า 0 หรือละไว้จะใช้ค่าเริ่มต้นของเซิร์ฟเวอร์

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
passesarray of objectsหน้าปัจจุบันของ ระเบียนพาส
pageintegerดัชนีหน้าที่ส่งคืน
perPageintegerขนาดหน้าที่ใช้สำหรับการตอบกลับนี้
totalintegerจำนวนพาสทั้งหมดสำหรับแอปพลิเคชันในทุกหน้า

ตั้งค่าสถานะพาส

Anchor link to

เปิดใช้งานหรือทำให้พาสไม่ถูกต้อง พาสที่ไม่ถูกต้อง (inactive) จะถูกย้ายไปยังส่วน Expired passes ของผู้ใช้ใน Google Wallet ระเบียนจะถูกเก็บไว้เพื่อให้สามารถเปิดใช้งานใหม่ได้

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

เนื้อหาคำขอ

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
activebooleanใช่true ตั้งค่าพาสเป็น ACTIVE; false ทำให้ไม่ถูกต้อง (INACTIVE)

การตอบกลับ

Anchor link to

ส่งคืนอ็อบเจ็กต์ว่าง {} เมื่อสำเร็จ

ลบพาส

Anchor link to

ทำให้พาสใน Google ไม่ถูกต้องและลบระเบียนที่จัดเก็บไว้ใน Pushwoosh

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

การตอบกลับ

Anchor link to

ส่งคืนอ็อบเจ็กต์ว่าง {} เมื่อสำเร็จ

รับการกำหนดค่า

Anchor link to

ส่งคืนสถานะการกำหนดค่า Google Wallet สำหรับแอปพลิเคชัน

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

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
hasServiceAccountbooleanมีการกำหนดค่า service account key หรือไม่
issuerIdstringGoogle Pay & Wallet Console Issuer ID ที่กำหนดค่าไว้
serviceAccountEmailstringclient_email ของ service account ที่กำหนดค่าไว้

เทมเพลต

Anchor link to

แสดงรายการเทมเพลตพาสตัวอย่างที่มีอยู่ หรือดึงข้อมูลเทมเพลตเป็น อ็อบเจ็กต์พาส ที่คุณสามารถใช้เป็นจุดเริ่มต้นได้

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
logoUrlstringURL HTTPS สาธารณะของรูปภาพโลโก้ จำเป็นสำหรับ loyalty และ transit
heroImageUrlstringURL HTTPS สาธารณะของรูปภาพแบนเนอร์แบบกว้าง
barcodeobjectอ็อบเจ็กต์บาร์โค้ด ที่แสดงบนพาส
textModulesarrayโมดูลข้อความ ที่แสดงในมุมมองรายละเอียด
linksarrayโมดูลลิงก์ ที่แสดงในมุมมองรายละเอียด
expirationTimestringเวลาตามมาตรฐาน ISO 8601 ที่ Google จะทำให้พาสหมดอายุโดยอัตโนมัติ ค่าว่างหมายถึงไม่มีวันหมดอายุ
appLinkobjectลิงก์แอป: ปุ่ม CTA ที่ด้านหน้าของพาส
locationsarrayตำแหน่ง ที่จะทริกเกอร์การแจ้งเตือนตามตำแหน่งทางภูมิศาสตร์ (สูงสุด 10)
holdersPolicystringใครสามารถบันทึกพาสได้: ONE_USER_ALL_DEVICES (ค่าเริ่มต้น), ONE_USER_ONE_DEVICE, หรือ MULTIPLE_HOLDERS

อ็อบเจ็กต์ Generic

Anchor link to
ฟิลด์ประเภทคำอธิบาย
cardTitlestringจำเป็น ชื่อผู้ออก/โปรแกรมที่ด้านบนของบัตร
headerstringจำเป็น ชื่อหลักของบัตร
subheaderstringชื่อรอง
cardFieldsarrayโมดูลข้อความ สูงสุด 6 โมดูลที่ปักหมุดไว้ด้านหน้า (สูงสุด 3 แถว แถวละ 2)

อ็อบเจ็กต์ Offer

Anchor link to
ฟิลด์ประเภทคำอธิบาย
titlestringจำเป็น ตัวอย่างเช่น ลด 20% ทุกอย่าง
providerstringจำเป็น ชื่อร้านค้า
detailsstringรายละเอียดข้อเสนอ
finePrintstringข้อกำหนดและเงื่อนไข
redemptionChannelstringONLINE, INSTORE, BOTH (ค่าเริ่มต้น), หรือ TEMPORARY_PRICE_REDUCTION
issuerNamestringแสดงบนพื้นที่ “ออกโดย” ของ Google ค่าเริ่มต้นคือ provider

อ็อบเจ็กต์ Loyalty

Anchor link to
ฟิลด์ประเภทคำอธิบาย
programNamestringจำเป็น ต้องมี logoUrl บนพาส
accountNamestringชื่อสมาชิกที่แสดงบนบัตร
accountIdstringID สมาชิกที่แสดงบนบัตร
pointsLabelstringตัวอย่างเช่น คะแนน แสดงเฉพาะเมื่อมียอดคงเหลือ
pointsBalancestringยอดคะแนนคงเหลือ
rewardsTierstringตัวอย่างเช่น Gold
rewardsTierLabelstringป้ายกำกับถัดจากระดับ ค่าเริ่มต้นคือ Tier
issuerNamestringค่าเริ่มต้นคือ programName

อ็อบเจ็กต์ Event ticket

Anchor link to
ฟิลด์ประเภทคำอธิบาย
eventNamestringจำเป็น
venueName / venueAddressstringรายละเอียดสถานที่จัดงาน
startDateTime / endDateTimestringISO 8601 พร้อม offset (ตัวอย่างเช่น 2026-07-01T19:30:00+02:00)
ticketHolderName / ticketNumber / ticketTypestringรายละเอียดผู้ถือตั๋วและตั๋ว
section / row / seat / gatestringรายละเอียดที่นั่ง
issuerNamestringค่าเริ่มต้นคือ eventName

อ็อบเจ็กต์ Gift card

Anchor link to
ฟิลด์ประเภทคำอธิบาย
merchantNamestringจำเป็น
cardNumberstringจำเป็น
pinstringPIN ของบัตร
balancestringจำนวนเงินทศนิยม ตัวอย่างเช่น 25.00 ต้องมี balanceCurrency
balanceCurrencystringรหัสสกุลเงิน ISO 4217 ตัวอย่างเช่น USD
issuerNamestringค่าเริ่มต้นคือ merchantName

อ็อบเจ็กต์ Flight

Anchor link to
ฟิลด์ประเภทคำอธิบาย
carrierIataCodestringจำเป็น รหัส IATA 2 ตัวอักษร ตัวอย่างเช่น LX
airlineNamestringชื่อที่แสดงของสายการบิน
flightNumberstringจำเป็น เฉพาะตัวเลข ตัวอย่างเช่น 113
originAirportCode / destinationAirportCodestringจำเป็น รหัส IATA 3 ตัวอักษร
originTerminal / originGate / destinationTerminalstringรายละเอียดเทอร์มินัลและประตู
departureDateTimestringจำเป็น เวลา ท้องถิ่น ของสนามบินต้นทาง, ISO 8601 ไม่มี offset (ตัวอย่างเช่น 2026-09-01T06:30:00)
boardingTime / arrivalDateTimestringรูปแบบเวลาท้องถิ่นเดียวกัน arrivalDateTime คือเวลาท้องถิ่นของปลายทาง
passengerNamestringจำเป็น
confirmationCode / seatNumber / seatClass / boardingGroupstringรายละเอียดผู้โดยสาร
issuerNamestringค่าเริ่มต้นคือ airlineName จากนั้นเป็นรหัสสายการบิน

อ็อบเจ็กต์ Transit

Anchor link to
ฟิลด์ประเภทคำอธิบาย
transitTypestringจำเป็น BUS, RAIL, TRAM, FERRY, หรือ OTHER
transitOperatorNamestringจำเป็น ต้องมี logoUrl บนพาส
passengerNamestringจำเป็น
ticketNumberstringหมายเลขตั๋ว
tripTypestringONE_WAY (ค่าเริ่มต้น) หรือ ROUND_TRIP
legsarrayช่วงการเดินทาง หนึ่งช่วงหรือมากกว่าตามลำดับการเดินทาง
issuerNamestringค่าเริ่มต้นคือ transitOperatorName

อ็อบเจ็กต์ Transit leg

Anchor link to
ฟิลด์ประเภทคำอธิบาย
originName / destinationNamestringจำเป็น
departureDateTime / arrivalDateTimestringISO 8601; offset เป็นทางเลือก (เวลาท้องถิ่นเมื่อละไว้)
platform / coach / seatstringรายละเอียดการขึ้นยานพาหนะ
fareNamestringตัวอย่างเช่น Anytime Single

อ็อบเจ็กต์ Barcode

Anchor link to
ฟิลด์ประเภทคำอธิบาย
formatstringQR_CODE, PDF_417, AZTEC, CODE_128, EAN_13, และประเภทบาร์โค้ดอื่นๆ ของ Google Wallet
valuestringข้อมูลที่เข้ารหัสในบาร์โค้ด
altTextstringข้อความที่แสดงใต้บาร์โค้ด

อ็อบเจ็กต์ Text module

Anchor link to
ฟิลด์ประเภทคำอธิบาย
idstringตัวระบุของโมดูล
headerstringหัวข้อของโมดูล
bodystringข้อความของโมดูล
Anchor link to
ฟิลด์ประเภทคำอธิบาย
uristringURL ลิงก์ภายนอก
descriptionstringป้ายกำกับลิงก์ที่แสดงในมุมมองรายละเอียด
Anchor link to
ฟิลด์ประเภทคำอธิบาย
uristringURL เว็บหรือ URI เป้าหมายของ deep-link
androidPackageNamestringไม่จำเป็น เมื่อตั้งค่า จะเปิดแอป Android
descriptionstringคำอธิบายภายในของ URI เป้าหมาย (ไม่ใช่ป้ายกำกับปุ่มที่มองเห็นได้) ค่าเริ่มต้นคือ URI

อ็อบเจ็กต์ Location

Anchor link to
ฟิลด์ประเภทคำอธิบาย
latitudenumber-90.0 ถึง +90.0
longitudenumber-180.0 ถึง +180.0

อ็อบเจ็กต์ Pass record

Anchor link to

ส่งคืนโดย endpoints list/get

ฟิลด์ประเภทคำอธิบาย
serialNumberstringหมายเลขซีเรียลของพาส
objectIdstringobject id ของ Google Wallet แบบเต็ม {issuerId}.{serialNumber}
cardTitlestringชื่อ/หัวข้อที่แสดงสำหรับพาส
headerstringชื่อที่แสดงรอง
userIdstringPushwoosh User ID ที่พาสถูกออกให้
createdAt / updatedAtstringการประทับเวลาการสร้างและการอัปเดตล่าสุด
statestringACTIVE หรือ INACTIVE
stylestringgeneric, offer, loyalty, eventTicket, giftCard, flight, หรือ transit
passobjectอ็อบเจ็กต์พาส แบบเต็ม สำหรับการแก้ไข