التخطيط والنشر
تصميم البنية وإعداد البيئات والتهيئة وتخطيط الإصدارات بالتعاون مع فريقك.
آلية العمل
WalletD هو REST API أمام دفتر أستاذ رسمي. هذا هو المسار الذي تسلكه دفعة واحدة، من إدماج مستخدم إلى حركة يستطيع مدقّقوك إعادة حسابها.
آلية العمل
أنشئ مستخدم محفظة بمعرّفك الخارجي الخاص. يفتح WalletD حسابات حسب الغرض (نقد، نقاط) أول مرة يُستخدم فيها كلٌّ منها، فلا شيء يحتاج للتوفير سلفًا.
ابدأ عملية شحن عبر Stripe. يُضاف الرصيد فقط عندما تؤكّد البوابة عبر خطاف ويب موقّع أو استعلام مطابقة، لا عبر رد اتصال من العميل أبدًا.
أرسِل بين الأقران، أو خذ دفعة بحجز، أو قسّم بيعًا في السوق. كل استدعاء يحمل مفتاح تكافؤ ويقيّد أطرافًا متوازنة في دفتر الأستاذ ضمن معاملة واحدة.
الاسترداد النقدي والنقاط تُمنح عند لحظة الالتقاط؛ والرسوم والعمولة تُقسَّم؛ والصرفيات تنتج كشف تسوية. كل ذلك يُقيَّد في السجلات نفسها.
اقرأ الأرصدة والتاريخ عبر الـ API، واستقبل خطافات ويب موقّعة لكل حدث، ودع المُحقِّق المدمج يعيد فحص ثوابت دفتر الأستاذ وفق جدول زمني.
موّل محفظة، ثم أرسِل أموالًا
الطلب نفسه بست لغات. المبالغ بوحدات صغرى صحيحة؛ ودفتر الأستاذ يتولّى الباقي.
# Fund a wallet, then send money. Balances only move on the ledger.
curl -sS -X POST "$WALLETD_API/v1/users" \
-H "Authorization: Bearer $WALLETD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: usr-42-create" \
-d '{"external_id":"user-42","kind":"consumer","display_name":"Ada Lovelace","handle":"ada"}'
curl -sS -X POST "$WALLETD_API/v1/transfers" \
-H "Authorization: Bearer $WALLETD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: xfer-ada-grace-001" \
-d '{"from":"user-42","to":"@grace","amount":2500,"currency":"USD"}'client := walletd.New(os.Getenv("WALLETD_API"), os.Getenv("WALLETD_API_KEY"))
var transfer walletd.Transfer
err := client.Do(ctx, http.MethodPost, "/v1/transfers", map[string]any{
"from": "user-42",
"to": "@grace",
"amount": 2500, // minor units, $25.00, never a float
"currency": "USD",
}, &transfer, "xfer-ada-grace-001") // idempotency key
if err != nil {
return fmt.Errorf("transfer: %w", err)
}client = WalletD() # reads WALLETD_API / WALLETD_API_KEY
transfer = client.request(
"POST",
"/v1/transfers",
{
"from": "user-42",
"to": "@grace",
"amount": 2500, # minor units, $25.00
"currency": "USD",
},
idempotency_key="xfer-ada-grace-001",
)
print(transfer["status"]) # "settled"const res = await fetch(`${API}/v1/transfers`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "xfer-ada-grace-001",
},
body: JSON.stringify({
from: "user-42",
to: "@grace",
amount: 2500, // minor units, $25.00
currency: "USD",
}),
});
const transfer = await res.json();$transfer = $walletd->request('POST', '/v1/transfers', [
'from' => 'user-42',
'to' => '@grace',
'amount' => 2500, // minor units, $25.00
'currency' => 'USD',
], idempotencyKey: 'xfer-ada-grace-001');
echo $transfer['status']; // "settled"var body = Map.of(
"from", "user-42",
"to", "@grace",
"amount", 2500, // minor units, $25.00
"currency", "USD");
Transfer transfer = client.post(
"/v1/transfers", body, "xfer-ada-grace-001", Transfer.class);كل استدعاء محرِّك للأموال يأخذ مفتاح تكافؤ. إعادة المحاولات آمنة؛ ويعيد دفتر الأستاذ النتيجة المخزّنة بايتًا ببايت.
الرسوم والحجوزات والحدود والاستردادات العكسية تُطبَّق داخل القيد نفسه، فلا تكون السجلات خاطئة ولو للحظة.
الأموال تتحرك على تأكيد موثّق من البوابة وتُسوّى في دفتر الأستاذ، لا على رد متفائل من العميل.
مُحقِّق مجدوَل يعيد حساب الحفظ والأرصدة والحدود الدنيا، ويُخفق بوضوح لحظة انحراف أي شيء.
شريك طوال دورة الحياة، بنطاق متفق عليه ومسؤوليات واضحة.
تصميم البنية وإعداد البيئات والتهيئة وتخطيط الإصدارات بالتعاون مع فريقك.
خصص العلامة التجارية ومسارات العمل وقواعد الأعمال وفق المنتج الذي تريد بناءه.
دعم وصيانة وتحديثات مستمرة، مع مسارات تصعيد ومستويات خدمة محددة في اتفاقيتك.
وصول مبكر
نعمل مع عدد محدود من الفرق التي تبني منتجات محافظ وأموال على WalletD. إن كنت منهم، فلنتحدّث. ستحصل على وصول مباشر إلى من بنوا المنصة.