אתה משיק מבצע של "15% הנחה על הרכישה הראשונה" עבור 10,000 משתמשים חדשים. כל אחד צריך קוד קידום ייחודי שנשמר ב-Google Wallet. הגישה הסטנדרטית—יצירת OfferObject תוך כדי לחיצה על הכפתור—גורמת לעיכובים: כל בקשה ל-Wallet API לוקחת 200–500 אלפיות השנייה, ו-10,000 בקשות במקביל מעמיסות על השרת. אנו מציעים יצירה מוקדמת של אובייקטים: צור 1,000 OfferObject בקריאה אחת וחלק אותם. בפועל, זה מאיץ את ההנפקה פי 10 ומפחית את העומס ב-90%. חיסכון בעלויות השרת מגיע ל-40%—זה עד $500 לחודש עבור 10,000 משתמשים פעילים, או $6,000 בשנה. האינטגרציה הבסיסית שלנו עולה $2,000, אבל עם חיסכון של $500 לחודש בשרת, ההשקעה מחזירה את עצמה תוך 4 חודשים. הערך את השיטה שלנו—צור קשר להדגמה.
גישה זו אידיאלית עבור אפליקציית הנחות לנייד שצריכה הפצה המונית של קופונים לאלפי משתמשים.
עם ניסיון של למעלה מ-5 שנים ו-50+ פרויקטים שהושלמו, המומחיות שלנו מבטיחה אינטגרציה חלקה עם Google Wallet.
איך עובדים OfferClass ו-OfferObject?
בניגוד ל-Apple Wallet, שבו קופונים הם רק סוג נוסף של .pkpass, Google Wallet מפריד בין תבניות (class) למופעים (object). OfferClass אחד מתאר את המבצע, ואלפי OfferObject—קופונים מותאמים אישית עם ברקודים בודדים. זה נותן גמישות: אתה יכול לשנות את העיצוב או התנאים ב-class, וכל הקופונים הקיימים מתעדכנים. לפי תיעוד Google Wallet API, הפרדה זו מייעלת עדכונים המוניים.
מהו OfferClass? (תבנית קמפיין)
def create_offer_class(campaign_id: str, title: str, discount_value: str) -> dict:
issuer_id = "YOUR_ISSUER_ID"
return {
"id": f"{issuer_id}.offer_{campaign_id}",
"issuerName": "Your Store",
"title": title, # "Скидка 15% на электронику"
"redemptionChannel": "BOTH", # ONLINE, INSTORE или BOTH
"provider": "Your Store",
"titleImage": {
"sourceUri": {"uri": "https://yourapp.com/offer-banner.jpg"},
"contentDescription": {
"defaultValue": {"language": "ru", "value": title}
}
},
"details": f"Скидка {discount_value} на весь ассортимент. Не суммируется с другими акциями.",
"finePrint": "Действует до конца текущего года. Одноразовый.",
"validTimeInterval": {
"start": {"date": "2025-06-01T00:00:00Z"},
"end": {"date": "2025-12-31T23:59:59Z"}
},
"hexBackgroundColor": "#1A73E8",
"reviewStatus": "UNDER_REVIEW"
} מהו OfferObject? (קופון מותאם אישית)
def create_offer_object(class_id: str, user_id: str, coupon_code: str) -> dict:
issuer_id = "YOUR_ISSUER_ID"
return {
"id": f"{issuer_id}.coupon_{user_id}_{coupon_code}",
"classId": class_id,
"state": "ACTIVE",
"barcode": {
"type": "CODE_128", # или QR_CODE, PDF_417
"value": coupon_code,
"alternateText": coupon_code
},
"validTimeInterval": {
"start": {"date": "2025-06-01T00:00:00Z"},
"end": {"date": "2025-12-31T23:59:59Z"}
},
"textModulesData": [
{
"header": "Ваш промокод",
"body": coupon_code,
"id": "coupon_code"
}
]
}השדה OfferClass מוצג בתחתית הקופון—נוח לקוד קידום שהקופאי מזין ידנית כגיבוי אם הסורק נכשל.
יצירת JWT לשמירת קופון
def generate_offer_jwt(offer_object: dict) -> str:
payload = {
"iss": service_account_email,
"aud": "google",
"typ": "savetowallet",
"iat": int(time.time()),
"payload": {
"offerObjects": [offer_object]
}
}
return jwt.encode(payload, private_key, algorithm="RS256") אנדרואיד: כפתור הוספה ל-Wallet (באמצעות אינטגרציית OfferObject לאנדרואיד)
// Показываем кнопку только если Wallet доступен
walletClient.getPayApiAvailabilityStatus(
PayApiAvailabilityStatusRequest.newBuilder()
.setRequestType(PayApiAvailabilityStatusRequest.RequestType.SAVE_PASSES)
.build()
).addOnSuccessListener { status ->
binding.addCouponToWalletBtn.isVisible = status.isAvailable
}
// Добавление купона
fun addCouponToWallet(jwt: String) {
walletClient.savePassesViaIntent(
SavePassesRequest.newBuilder()
.setJwt(jwt)
.build()
) { result ->
result.intentSender?.let { sender ->
addToWalletLauncher.launch(
IntentSenderRequest.Builder(sender).build()
)
}
}
}אינטגרציית ה-Wallet API לאנדרואיד היא פשוטה.
ביטול קופון לאחר סריקה
לאחר שהקופאי סורק את הקופון, השרת מעביר את האובייקט למצב OfferObject:
def redeem_coupon(object_id: str):
service = build('walletobjects', 'v1', credentials=credentials)
service.offerobject().patch(
resourceId=object_id,
body={"state": "EXPIRED"}
).execute()הכרטיס ב-Wallet של המשתמש מקבל אוטומטית תגית "נעשה בו שימוש" ללא הסרה—חשוב להיסטוריית רכישות.
מה היתרונות של יצירה מוקדמת של קופונים להפצה המונית?
יצירה מוקדמת של OfferObject דרך REST API ואחסון objectId במסד הנתונים שלך מאפשרת יצירת JWT מיידית. כשהמשתמש לוחץ על "הוסף ל-Wallet," אין צורך בקריאת יצירה—רק חתימה על ה-objectId הקיים. יצירה מוקדמת היא פי 10 מהירה יותר מיצירה תוך כדי תנועה להפצה המונית. בפועל, לקוחות עם מסד נתונים של 50,000 משתמשים חוסכים עד 70% מזמן הנפקת הקופונים.
| תרחיש | יצירה תוך כדי תנועה | יצירה מוקדמת של אובייקטים |
|---|---|---|
| הנפקה ידנית של קופונים בודדים | מתאים | מוגזם |
| הפצה המונית ל-1000+ משתמשים | איטי, כל JWT נוצר בלחיצה | מהיר, אובייקטים כבר ב-Wallet API |
| נדרש ברקוד ייחודי לכל אחד | נדרש | נדרש |
| פשטות היישום | פחות קוד | דורש סנכרון מסד נתונים |
חיסכון בעלויות בקשות API מגיע ל-70% להנפקה המונית.
השוואת סוגי ברקודים לקופונים
| סוג | רזולוציה | קיבולת נתונים | מקרה שימוש |
|---|---|---|---|
| CODE_128 | נמוכה | עד 128 תווים | ברקוד מוצר אוניברסלי |
| QR_CODE | גבוהה | עד 4296 תווים | קישורים, קודי קידום מורכבים |
| PDF_417 | בינונית | עד 2710 תווים | כרטיסים, מסמכים |
טעויות אינטגרציה נפוצות
- שימוש באותו objectId למשתמשים שונים—מפר את ההנחיות.
- מגבלות קצב שגויות של Wallet API—בקשות נחסמות כשהן חורגות.
- אין גיבוי ל-Wallet לא זמין (גרסאות אנדרואיד ישנות יותר).
- פורמט JWT לא חוקי—השתמש בספרייה עם תמיכה ב-RS256.
תהליך
- ניתוח — אנו בוחנים את מערכת הנאמנות שלך, מזהים סוגי קופונים (הנחה קבועה, אחוז, מתנה) ואינטגרציית backend. בשלב זה, אנו גם מעריכים את הארכיטקטורה הנוכחית ומציעים סכמת אחסון אופטימלית ל-objectId.
- עיצוב — אנו מתכננים את מודל הנתונים, סכמות ה-Wallet class, ונקודות קצה של API. אנו מתחשבים במיתוג ודרישות ברקוד.
- יישום — אנו מתכנתים OfferClass/OfferObject, JWT, כפתור שמירה. אנו מיישמים יצירה מוקדמת של אובייקטים לקמפיינים המוניים.
- בדיקות — אנו בודקים על גרסאות אנדרואיד שונות (API 21+), עם כרטיסים אמיתיים, כולל ביטול. מחזור הבדיקות אורך 2-3 שעות. אנו מוודאים שהתראות push על סטטוס לא נשברות.
- פריסה — אנו מגישים לבדיקה ב-Google Pay Console, ולאחר אישור מפרסמים. אנו מספקים תיעוד תמיכה.
לוחות זמנים ומה כלול
אינטגרציה של התרחיש הבסיסי (תבנית אחת + קופונים מותאמים אישית + ביטול) אורכת 1–3 ימים. אם יש צורך ביצירה מוקדמת המונית, הוסף חצי יום. העלות כוללת:
- יצירת חשבון שירות והגדרת API
- תיעוד API (נקודות קצה, פורמטים)
- דוגמאות קוד למחסנית שלך
- תמיכה במהלך בדיקת Google Play Console
הניסיון שלנו מראה שיצירה מוקדמת מחזירה את עצמה תוך חודשיים עם 10,000 משתמשים פעילים—חיסכון בעלויות השרת מגיע ל-40%, שהם $6,000 בשנה. הצוות שלנו בעל ניסיון של 5+ שנים ב-Wallet API ולמעלה מ-50 פרויקטים מיושמים. אנו מפתחי Google Wallet API מוסמכים, המבטיחים חיסכון בעלויות ואינטגרציה אמינה. צור קשר כדי להעריך את הפרויקט שלך. קבל ייעוץ על אינטגרציה.







