מדוע היעדר on-ramp מובנה פוגע בהמרה?
תארו לעצמכם: משתמש רוצה לקנות ETH ביורו ישירות בתוך הארנק הנייד שלכם. ללא on-ramp מובנה, הוא עוזב לבורסה חיצונית, וההמרה יורדת ב-40%. Mercuryo הוא ספק אירופאי עם רישיון FCA התומך ביותר מ-100 מדינות. עמלות: 2.95–3.95% לכרטיסים, 1.5% ל-SEPA. אנו משלבים את Mercuryo באפליקציה שלכם: וידג'ט תוך 2–3 ימים או API מותאם אישית. סטטיסטית, on-ramp מובנה מגביר את שימור המשתמשים ב-25% ומגדיל את ההכנסה לרכישה ב-30%.
כיצד לבחור מצב אינטגרציה: וידג'ט או API?
וידג'ט — WebView או דפדפן. אינטגרציה מהירה, Mercuryo מטפל ב-KYC ובדף התשלום. מתאים ל-MVP ולארנקים סטנדרטיים. API — שליטה מלאה בממשק המשתמש, דורש אימות עסקי מול Mercuryo והתאמה טכנית. משמש כאשר יש צורך בטופס תשלום ייחודי. רוב הארנקים בוחרים בוידג'ט — הוא מכסה 90% מהתרחישים.
| קריטריון | וידג'ט | API |
|---|---|---|
| מהירות אינטגרציה | 1–2 ימים | 2–4 שבועות |
| שליטה בממשק המשתמש | מינימלית (צבעים, שפה) | מותאם אישית מלא |
| KYC/AML | מטופל על ידי Mercuryo | ניתן לשלב מערכת עצמאית |
| דרישות שרת | חתימת HMAC + Webhook | חתימה, החלפת טוקן, טיפול בהזמנות |
| המלצה | MVP, ארנקים לשימוש כללי | בורסות, פתרונות white-label |
כיצד ליצור חתימה עבור וידג'ט Mercuryo?
Mercuryo דורש חתימת HMAC-SHA512 מהמחרוזת {walletAddress}{secret}:
// Серверная сторона: подпись адреса
import CryptoKit
let input = "\(walletAddress)\(mercuryoSecret)"
let key = SymmetricKey(data: Data(mercuryoSecret.utf8))
let mac = HMAC<SHA512>.authenticationCode(for: Data(input.utf8), using: key)
let signature = Data(mac).map { String(format: "%02x", $0) }.joined()ללא חתימה נכונה, הווידג'ט נפתח עם שגיאה. החתימה מחושבת בצד השרת ומועברת לאפליקציה כחלק מה-URL.
מה לעשות אם החתימה אינה תקינה?
בדקו: האם הסוד תואם בין השרת שלכם לפאנל של Mercuryo? האם הועבר כתובת הארנק הנכונה? האם המחרוזת מכילה תווים נוספים? שגיאת חתימה היא הבעיה הנפוצה ביותר בהפעלה הראשונה של הווידג'ט.
פתיחת הווידג'ט
// Android — Chrome Custom Tabs с Mercuryo виджетом
val params = buildString {
append("widget_id=${mercuryoWidgetId}")
append("&type=buy")
append("¤cy=ETH")
append("&network=ETHEREUM")
append("&address=${userWalletAddress}")
append("&signature=${serverGeneratedSignature}")
append("&fiat_currency=EUR")
append("&redirect_url=${URLEncoder.encode("myapp://mercuryo-complete", "UTF-8")}")
append("&theme=dark")
append("&lang=ru")
}
val widgetUrl = "https://exchange.mercuryo.io/?$params"
CustomTabsIntent.Builder()
.setColorScheme(CustomTabsIntent.COLOR_SCHEME_DARK)
.build()
.launchUrl(context, Uri.parse(widgetUrl)) הפרמטר // Серверная сторона: подпись адреса import CryptoKit let input = "\(walletAddress)\(mercuryoSecret)" let key = SymmetricKey(data: Data(mercuryoSecret.utf8)) let mac = HMAC<SHA512>.authenticationCode(for: Data(input.utf8), using: key) let signature = Data(mac).map { String(format: "%02x", $0) }.joined() הוא קריטי
Mercuryo מבדיל בין רשת לטוקן בנפרד. // Android — Chrome Custom Tabs с Mercuryo виджетом val params = buildString { append("widget_id=${mercuryoWidgetId}") append("&type=buy") append("¤cy=ETH") append("&network=ETHEREUM") append("&address=${userWalletAddress}") append("&signature=${serverGeneratedSignature}") append("&fiat_currency=EUR") append("&redirect_url=${URLEncoder.encode("myapp://mercuryo-complete", "UTF-8")}") append("&theme=dark") append("&lang=ru") } val widgetUrl = "https://exchange.mercuryo.io/?$params" CustomTabsIntent.Builder() .setColorScheme(CustomTabsIntent.COLOR_SCHEME_DARK) .build() .launchUrl(context, Uri.parse(widgetUrl)) — USDC על Ethereum. network — USDC על Polygon. רשת שגויה — המשתמש מקבל קריפטו בכתובת אחרת (אם הפורמט של הכתובות תואם) או שהעסקה נכשלת. רשימת הזוגות הנתמכים: currency=USDC&network=ETHEREUM — הפניה עדכנית.
טבלת רשתות פופולריות
| טוקן | רשת | Chain ID | סטטוס |
|---|---|---|---|
| ETH | Ethereum | 1 | פעיל |
| USDC | Ethereum | 1 | פעיל |
| USDC | Polygon | 137 | פעיל |
| BNB | BSC | 56 | פעיל |
| AVAX | Avalanche C | 43114 | פעיל |
Callback ואימות
לאחר השלמת הרכישה, Mercuryo מפנה אל currency=USDC&network=POLYGON עם הפרמטרים GET https://api.mercuryo.io/v1.6/public/currencies-buy (redirect_url, status, succeeded) ו-failed. Webhook בקצה האחורי אמין יותר מאשר deeplink. אנו ממליצים להקים נקודת קצה שמקבלת בקשות POST עם גוף JSON המכיל סטטוס וחתימת אימות. יש ליישם ניסיונות חוזרים ו-idempotency כדי להבטיח מסירה.
אבטחה ותאימות
בעת שילוב on-ramp, חשוב לעמוד בהנחיות App Store Review Guidelines. עבור iOS, השתמשו ב-Universal Links עבור redirect_url כדי שמשתמשים יחזרו לאפליקציה לאחר הרכישה. באנדרואיד, השתמשו ב-App Links. כמו כן, ודאו תצורת App Transport Security (ATS) תקינה עבור iOS. אם האפליקציה אוספת נתוני מעקב, בקשו הרשאת ATT (App Tracking Transparency) לפני פתיחת הווידג'ט. ל-Mercuryo יש נהלי KYC/AML משלו, אך האפליקציה שלכם חייבת לטפל כראוי בסטטוסי האימות.
התהליך שלנו
- גילוי — ניתוח דרישות, בחירת מצב אינטגרציה.
- עיצוב — הגדרת ארכיטקטורה: חתימת צד שרת, טיפול ב-callback.
- יישום — חיבור וידג'ט או API, הגדרת פרמטרים.
- בדיקות — בדיקת כל התרחישים: רכישה מוצלחת, שגיאות, callback, ודרך TestFlight עבור iOS.
- השקה — פרסום ב-App Store / Google Play, הגדרת ניטור.
מה כלול
- תיעוד אינטגרציה ומנגנון חתימה.
- יישום נקודת קצה בשרת ליצירת חתימה.
- הגדרת וידג'ט או API המותאמים לעיצוב האפליקציה שלכם.
- טיפול ב-deeplinks ו-webhooks לעדכוני סטטוס.
- חשבון בדיקה של Mercuryo וייעוץ KYC.
- שבועיים של תמיכה לאחר ההשקה.
הערכות ולוחות זמנים
לוח זמנים: בין 2 ל-14 ימים בהתאם למצב האינטגרציה (וידג'ט 2–3 ימים, API עד שבועיים). התמחור הוא אישי. קבלו ייעוץ על אינטגרציית Mercuryo — נבחן את הפרויקט שלכם ונציע את הפתרון האופטימלי. צרו קשר כדי לזרז את ה-time-to-market.
ניסיון: 5+ שנים בשילוב פתרונות פינטק, 50+ פרויקטים עם ספקי on-ramp. מקור: תיעוד Mercuryo Widget SDK (mercuryo.io).







