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

Google Wallet API

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

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

URL พื้นฐาน

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

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

การรับรองความถูกต้อง

Anchor link to

ทุกคำขอต้องมี header Authorization พร้อมด้วย โทเค็นการเข้าถึง Pushwoosh API ของคุณ:

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 ดึงข้อมูลมา ไม่ใช่ไฟล์ที่อัปโหลด
  • สไตล์บัตร: ต้องตั้งค่า object สไตล์เพียงหนึ่งอย่าง (generic, offer, loyalty, eventTicket, giftCard, flight หรือ transit) บนบัตร ไม่สามารถเปลี่ยนสไตล์ได้หลังจากการสร้าง

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

Anchor link to
HTTP statusMeaning
400 Bad Requestอาร์กิวเมนต์ไม่ถูกต้อง—ฟิลด์ที่จำเป็นขาดหายไปหรือมีรูปแบบไม่ถูกต้อง
401 Unauthorizedheader Authorization ขาดหายไปหรือไม่ถูกต้อง
403 Forbiddenแอปพลิเคชันไม่ได้เป็นของบัญชีของผู้เรียก
404 Not Foundไม่พบบัตร เทมเพลต หรือแอปพลิเคชัน
503 Service Unavailableบริการเต็มความจุหรือใช้งานไม่ได้ชั่วคราว
MethodPathDescription
POST/api/google/pass/validateตรวจสอบการกำหนดค่าบัตร
POST/api/google/pass/createสร้าง object บัตรใหม่และรับลิงก์บันทึก
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

สร้างคลาสและ object ของบัตรใน Google Wallet จากนั้นส่งคืนหมายเลขซีเรียลที่เซิร์ฟเวอร์กำหนด object id แบบเต็ม และลิงก์บันทึก “Add to Google Wallet”

POST /api/google/pass/create

เนื้อหาคำขอ

Anchor link to
ParameterTypeRequiredDescription
passobjectYesobject บัตร ที่อธิบายบัตร ต้องตั้งค่าสไตล์เพียงหนึ่งอย่างเท่านั้น
userIdstringYesPushwoosh User ID ที่บัตรถูกออกให้
applicationCodestringYesรหัสแอปพลิเคชัน 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
FieldTypeDescription
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
ParameterTypeRequiredDescription
passobjectYesobject บัตร ที่จะตรวจสอบ

การตอบกลับ

Anchor link to
FieldTypeDescription
validbooleanบัตรผ่านการตรวจสอบหรือไม่
errorsarray of stringsปัญหาที่ขัดขวางซึ่งต้องได้รับการแก้ไข
warningsarray of stringsคำแนะนำที่ไม่ขัดขวาง

อัปเดตบัตร

Anchor link to

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

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

พารามิเตอร์ของ Path

Anchor link to
ParameterTypeDescription
serialNumberstringหมายเลขซีเรียลที่ส่งคืนเมื่อบัตรถูกสร้างขึ้น

เนื้อหาคำขอ

Anchor link to
ParameterTypeRequiredDescription
updatesobjectYesobject บัตร พร้อมเนื้อหาใหม่ ไม่สามารถเปลี่ยนสไตล์ได้
applicationCodestringYesรหัสแอปพลิเคชัน Pushwoosh
notifyMessagestringNoเมื่อไม่ว่างเปล่า ให้ส่งการแจ้งเตือน Android พร้อมข้อความนี้ไปยังทุกคนที่บันทึกบัตรไว้ ค่าว่างหมายถึงการอัปเดตแบบเงียบ
notifyOnUpdatebooleanNoขอการแจ้งเตือนการอัปเดตฟิลด์ มีเพียงบัตร loyalty, eventTicket และ flight เท่านั้นที่จะแจ้งเตือนจริง สไตล์อื่น ๆ ยอมรับแฟล็กแต่จะไม่ส่งการแจ้งเตือน การแจ้งเตือนจะทำงานภายใน 3 ชั่วโมงของเวลาเริ่มต้นที่เกี่ยวข้องเท่านั้น และ Google จำกัดไว้ที่ 3 การแจ้งเตือนต่อบัตรต่อ 24 ชั่วโมง

การตอบกลับ

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

รับลิงก์บันทึก

Anchor link to

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

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

การตอบกลับ

Anchor link to
FieldTypeDescription
saveLinkstringhttps://pay.google.com/gp/v/save/{jwt}

รับบัตร

Anchor link to

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

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

การตอบกลับ

Anchor link to

ส่งคืน { "pass": { ... } } ซึ่งเป็น บันทึกบัตร เดียว

แสดงรายการบัตร

Anchor link to

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

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

พารามิเตอร์ของ Query

Anchor link to
ParameterTypeRequiredDescription
applicationCodestringYesรหัสแอปพลิเคชัน Pushwoosh
orderBystringNoฟิลด์การจัดเรียง: UPDATED (ค่าเริ่มต้น) หรือ CREATED
orderDirectionstringNoทิศทางการจัดเรียง: DESC (ค่าเริ่มต้น, ใหม่สุดก่อน) หรือ ASC
pageintegerNoดัชนีหน้าแบบเริ่มต้นที่ศูนย์ ค่าเริ่มต้นคือ 0
perPageintegerNoขนาดหน้า 0 หรือการละเว้นจะใช้ค่าเริ่มต้นของเซิร์ฟเวอร์

การตอบกลับ

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

ตั้งค่าสถานะบัตร

Anchor link to

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

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

เนื้อหาคำขอ

Anchor link to
ParameterTypeRequiredDescription
activebooleanYestrue ตั้งค่าบัตรเป็น ACTIVE; false ทำให้บัตรใช้งานไม่ได้ (INACTIVE)

การตอบกลับ

Anchor link to

ส่งคืน object ว่าง {} เมื่อสำเร็จ

ลบบัตร

Anchor link to

ทำให้บัตรใช้งานไม่ได้ใน Google และลบบันทึกที่จัดเก็บไว้ใน Pushwoosh

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

การตอบกลับ

Anchor link to

ส่งคืน object ว่าง {} เมื่อสำเร็จ

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

Anchor link to

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

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

การตอบกลับ

Anchor link to
FieldTypeDescription
hasServiceAccountbooleanมีการกำหนดค่า service account key หรือไม่
issuerIdstringIssuer ID ของ Google Pay & Wallet Console ที่กำหนดค่าไว้
serviceAccountEmailstringclient_email ของ service account ที่กำหนดค่าไว้

เทมเพลต

Anchor link to

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

GET /api/google/templates — ส่งคืน { "templates": [ { "filename", "name", "description", "style" } ] }

GET /api/google/templates/{filename} — ส่งคืน { "template": { ...pass object... } }

การอ้างอิง Object

Anchor link to

Object บัตร

Anchor link to
FieldTypeDescription
serialNumberstringกำหนดโดยเซิร์ฟเวอร์เมื่อสร้าง; ใช้ระบุบัตร
generic / offer / loyalty / eventTicket / giftCard / flight / transitobjectสไตล์บัตร ต้องตั้งค่า เพียงหนึ่งอย่างเท่านั้น ดู object สไตล์ด้านล่าง
hexBackgroundColorstringสีพื้นหลังของบัตร, #rrggbb
logoUrlstringURL HTTPS สาธารณะของรูปภาพโลโก้ จำเป็นสำหรับบัตรสะสมคะแนนและบัตรเดินทาง
heroImageUrlstringURL HTTPS สาธารณะของรูปภาพแบนเนอร์แบบกว้าง
barcodeobjectบาร์โค้ด ที่แสดงบนบัตร
textModulesarrayโมดูลข้อความ ที่แสดงในมุมมองรายละเอียด
linksarrayโมดูลลิงก์ ที่แสดงในมุมมองรายละเอียด
expirationTimestringเวลาตามมาตรฐาน ISO 8601 ที่ Google จะทำให้บัตรหมดอายุโดยอัตโนมัติ ค่าว่างหมายถึงไม่มีวันหมดอายุ
appLinkobjectลิงก์แอป: ปุ่ม CTA ที่ด้านหน้าของบัตร
locationsarrayตำแหน่ง ที่จะกระตุ้นการแจ้งเตือนตามตำแหน่งทางภูมิศาสตร์ (สูงสุด 10)
holdersPolicystringผู้ที่สามารถบันทึกบัตรได้: ONE_USER_ALL_DEVICES (ค่าเริ่มต้น), ONE_USER_ONE_DEVICE หรือ MULTIPLE_HOLDERS

Object ทั่วไป

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

Object ข้อเสนอ

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

Object สะสมคะแนน

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

Object ตั๋วงานอีเวนต์

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

Object บัตรของขวัญ

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

Object เที่ยวบิน

Anchor link to
FieldTypeDescription
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 จากนั้นเป็นรหัสสายการบิน

Object การเดินทาง

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

Object ช่วงการเดินทาง

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

Object บาร์โค้ด

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

Object โมดูลข้อความ

Anchor link to
FieldTypeDescription
idstringตัวระบุของโมดูล
headerstringหัวข้อของโมดูล
bodystringข้อความของโมดูล

Object โมดูลลิงก์

Anchor link to
FieldTypeDescription
uristringURL ลิงก์ภายนอก
descriptionstringป้ายกำกับลิงก์ที่แสดงในมุมมองรายละเอียด

Object ลิงก์แอป

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

Object ตำแหน่ง

Anchor link to
FieldTypeDescription
latitudenumber-90.0 ถึง +90.0
longitudenumber-180.0 ถึง +180.0

Object บันทึกบัตร

Anchor link to

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

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