מדריך שלב-אחר-שלב ל-On/Off-ramp דרך Ramp Network
תארו לעצמכם: אתם משיקים אפליקציית קריפטו, משתמשים נרשמים בהמוניהם, אבל הם תקועים ב-fiat on-ramp. כרטיסי בנק גובים עמלות גבוהות, ו-QIWI ו-PayPal הן תוכניות אפורות. נתקלנו בזה פעמים רבות. הפתרון הוא שילוב Ramp Network, שירות On/Off-ramp ייעודי המתמקד ב-Open Banking. התכונה הבולטת שלהם היא חיבור ישיר לחשבונות הבנק של המשתמשים דרך Open Banking API באיחוד האירופי ובריטניה, עם עמלות מ-0.49% במקום 2.9% מענקיות הכרטיסים. לאחר ביצוע למעלה מ-50 אינטגרציות כאלה, Ramp הוא אחד הכלים הגמישים ביותר. שער fiat זה מאפשר קניית מטבעות קריפטו (כולל אסימוני ERC-20) ומשיכת fiat בחזרה, דבר קריטי עבור יישומים רבים.
איך לשלב את Ramp Network באפליקציית קריפטו?
האינטגרציה מתחלקת לשלוש שכבות: SDK בצד הלקוח, לוגיקת שרת, והתראות webhook. נעבור על כל אחת עם דוגמאות מעשיות.
אינטגרציית SDK — עבור הפרונטאנד. הוסיפו את החבילה @ramp-network/ramp-instant-sdk, העבירו את המפתח, כתובת הארנק והסכום. Ramp מציג את ווידג'ט הרכישה בעצמו. אנו ממליצים להשתמש ב-swapAmount ב-wei וב-fiatValue כדי לנעול את סכום ה-fiat. זה מפחית החלקה בתנאי תנודתיות.
import { RampInstantSDK } from '@ramp-network/ramp-instant-sdk';
const ramp = new RampInstantSDK({
hostAppName: 'Your App Name',
hostLogoUrl: 'https://yourapp.com/logo.png',
hostApiKey: process.env.RAMP_API_KEY,
swapAsset: 'ETH_ETH,MATIC_POLYGON',
userAddress: walletAddress,
swapAmount: '50000000000000000',
fiatCurrency: 'EUR',
fiatValue: 100,
userEmailAddress: user.email,
});
ramp.on('PURCHASE_CREATED', (purchase, _purchaseViewToken, apiUrl) => {
console.log('Purchase created:', purchase);
});
ramp.on('PURCHASE_SUCCESSFUL', (purchase) => {
handleSuccess(purchase);
});
ramp.show();
API בצד השרת — לבדיקת סטטוסים וקבלת רשימות נכסים. משתמש באימות JWT עם אסימונים קצרי מועד. דוגמה ב-Python עם httpx:
import httpx
import jwt
from datetime import datetime, timedelta
class RampClient:
BASE_URL = "https://api.ramp.network/api"
def __init__(self, api_key: str, secret: str):
self.api_key = api_key
self.secret = secret
async def get_purchase(self, purchase_id: str) -> dict:
token = jwt.encode(
{"iss": self.api_key, "exp": datetime.utcnow() + timedelta(minutes=5)},
self.secret,
algorithm="HS256"
)
async with httpx.AsyncClient() as client:
resp = await client.get(
f"{self.BASE_URL}/purchases/{purchase_id}",
headers={"Authorization": f"Bearer {token}"}
)
return resp.json()
async def get_supported_assets(self) -> list:
async with httpx.AsyncClient() as client:
resp = await client.get(f"{self.BASE_URL}/host-api/assets", params={"hostApiKey": self.api_key})
return resp.json()["assets"]
Webhook — לקבלת אירועים בזמן אמת. Ramp חותם על בקשות עם JWT ומפתח ציבורי. תמיד אמתו את החתימה:
@app.post("/webhooks/ramp")
async def ramp_webhook(request: Request):
auth = request.headers.get("Authorization", "").replace("Bearer ", "")
try:
payload = jwt.decode(auth, RAMP_PUBLIC_KEY, algorithms=["RS256"])
except jwt.InvalidTokenError:
raise HTTPException(403)
event = await request.json()
if event["type"] == "CREATED" and event["purchase"]["status"] == "RELEASING":
await process_pending_purchase(event["purchase"])
למה Ramp Network היא הבחירה האופטימלית ל-On-ramp?
השוואה עם ספקים פופולריים אחרים בפרמטרים מרכזיים:
| פרמטר | Ramp Network | MoonPay | Transak |
|---|---|---|---|
| עמלת Open Banking | 0.49% | 1.0% | 1.5% |
| עמלת כרטיס | 2.9% | 4.5% | 3.5% |
| העברה בנקאית ישירה | כן (SEPA) | לא | לא |
| Off-ramp | כן | כן | כן |
| KYC בצד הספק | כן | כן | כן |
| התאמת ממשק משתמש | SDK + iframe | iframe | iframe |
יתרון העמלות עם Open Banking הוא פי 6 טוב יותר מאשר MoonPay. עבור פרויקטים עם משתמשים אירופאים זה קריטי. בהיקף של 100,000 אירו בחודש, אתם חוסכים עד 2,500 אירו בעמלות.
מה כולל תהליך האינטגרציה?
התהליך מורכב משלבים: ניתוח → הגדרת SDK → לוגיקת שרת → בדיקות → השקה. אנו מכינים חבילה מלאה להשקת On/Off-ramp:
| שלב | משך | תיאור |
|---|---|---|
| ניתוח | 1-2 ימים | לימוד ארכיטקטורת האפליקציה שלכם, זיהוי נקודות אינטגרציה. |
| הגדרת SDK | 2-3 ימים | חיבור פרונטאנד, הגדרת פרמטרי ווידג'ט. |
| לוגיקת שרת | 2-4 ימים | הטמעת webhooks, אימות חתימות, טיפול בסטטוסי רכישה. |
| בדיקות | 2-3 ימים | אימות כל התרחישים: רכישה מוצלחת, שגיאות, החזרים. |
| השקה | יום אחד | פריסה לסביבת production, הגדרת ניטור. |
בנוסף אנו מספקים:
- תיעוד: תיאור אינטגרציה, מפרט webhook, תוכניות טיפול בשגיאות.
- גישה: הגדרת מפתח API, הגדרת webhook, סביבת בדיקות.
- ממשק משתמש מותאם: ווידג'ט המותאם לעיצוב שלכם, עם תמיכה במצב כהה.
- הדרכת צוות: סדנה על ניטור וטיפול בהחזרים.
- תמיכה: שבועיים של תמיכה טכנית לאחר ההשקה.
הגדרת Webhook: הנקודה חייבת להיות נגישה דרך HTTPS ולהחזיר 200 OK. Ramp מנסה שוב עד 3 פעמים עם backoff אקספוננציאלי. רשמו את כל האירועים לצורך דיבוג.
מהן הטעויות הנפוצות בשילוב Ramp?
- פגות JWT — האסימון חי 5 דקות; הגדירו חידוש אוטומטי.
- swapAsset לא תקין — בדקו את הפורמט:
import { RampInstantSDK } from '@ramp-network/ramp-instant-sdk'; const ramp = new RampInstantSDK({ hostAppName: 'Your App Name', hostLogoUrl: 'https://yourapp.com/logo.png', hostApiKey: process.env.RAMP_API_KEY, swapAsset: 'ETH_ETH,MATIC_POLYGON', userAddress: walletAddress, swapAmount: '50000000000000000', fiatCurrency: 'EUR', fiatValue: 100, userEmailAddress: user.email, }); ramp.on('PURCHASE_CREATED', (purchase, _purchaseViewToken, apiUrl) => { console.log('Purchase created:', purchase); }); ramp.on('PURCHASE_SUCCESSFUL', (purchase) => { handleSuccess(purchase); }); ramp.show();. לדוגמה,import httpx import jwt from datetime import datetime, timedelta class RampClient: BASE_URL = "https://api.ramp.network/api" def __init__(self, api_key: str, secret: str): self.api_key = api_key self.secret = secret async def get_purchase(self, purchase_id: str) -> dict: token = jwt.encode( {"iss": self.api_key, "exp": datetime.utcnow() + timedelta(minutes=5)}, self.secret, algorithm="HS256" ) async with httpx.AsyncClient() as client: resp = await client.get( f"{self.BASE_URL}/purchases/{purchase_id}", headers={"Authorization": f"Bearer {token}"} ) return resp.json() async def get_supported_assets(self) -> list: async with httpx.AsyncClient() as client: resp = await client.get(f"{self.BASE_URL}/host-api/assets", params={"hostApiKey": self.api_key}) return resp.json()["assets"]או@app.post("/webhooks/ramp") async def ramp_webhook(request: Request): auth = request.headers.get("Authorization", "").replace("Bearer ", "") try: payload = jwt.decode(auth, RAMP_PUBLIC_KEY, algorithms=["RS256"]) except jwt.InvalidTokenError: raise HTTPException(403) event = await request.json() if event["type"] == "CREATED" and event["purchase"]["status"] == "RELEASING": await process_pending_purchase(event["purchase"]). - Webhook שהוחמצ — תמיד הטמיעו עיבוד חוזר לאחר אימות KYC מוצלח.
- fiatValue לא נכון — העבירו סכום עם שתי ספרות עשרוניות, אחרת עלולה להתרחש החלקה.
ציר זמן ועלות
ציר זמן משוער: מ-5 עד 14 ימי עסקים בהתאם למורכבות. העלות מחושבת באופן אישי — צרו קשר להערכה חינם. אנו מבטיחים שקיפות ומחיר קבוע בהתחלה.
מידע נוסף
לפי תיעוד ה-API של Ramp Network, ניתן לשלב גם on-ramp וגם off-ramp באמצעות SDK יחיד. למידע נוסף על השירות ראו ויקיפדיה.
קבלו ייעוץ על אינטגרציה — בואו נדון בפרטי הפרויקט שלכם. הזמינו אינטגרציה היום והתחילו לקבל fiat תוך שבוע.







