باسات Apple Wallet بلا حساب مطوّر
كل ما قرأته عن باسات المحفظة يبدأ بجملة واحدة: تحتاج اشتراك Apple Developer المدفوع لتوقيع الملف. هذا صحيح، لكنه ليس الطريق الوحيد. هذا الدليل يشرح كيف تُصدر بطاقات بنّاء باسات Apple وGoogle Wallet اليوم بلا شهادة ولا اشتراك، وما الذي تشتريه حين تدفع.
١ · لماذا التوقيع هو العقبة
ملف .pkpass أرشيف ZIP فيه pass.json والصور وملف manifest.json بتجزئات الملفات، وملف signature يوقّع هذا المانيفست بشهادة Pass Type ID الصادرة من Apple. المحفظة ترفض أي ملف بلا توقيع صحيح، والشهادة لا تُمنح إلا لحساب مطوّر مدفوع. كل شيء آخر في الملف نصّ وصور يستطيع أي أحد كتابتها.
الخلاصة: العقبة ليست بناء الملف، بل من يوقّعه.
٢ · ثلاثة طرق، وما يناسب مجتمعاً
| الطريق | الكلفة | ما تكسبه | ما تخسره |
|---|---|---|---|
| شهادتك أنت | اشتراك Apple Developer سنوياً + خادم يوقّع | الباس باسمك بالكامل، وتحديث الباسات عن بُعد، وإشعارات | تجديد الشهادة كل سنة، ومسؤولية المفتاح الخاص، ووقت بناء |
| خدمة توقيع خارجية | طبقة مجانية بعدد شهري، وشعارك وألوانك الدقيقة في الباقات المدفوعة | باس موقّع في دقائق، ويغطي Apple وGoogle معاً | هوية الجهة المُصدِرة في ملف الباس هي الخدمة لا أنت، والباس ثابت لا يتحدّث |
| بلا محفظة | صفر | صفحة ورمز وجهة اتصال تعمل على كل جوال | أيقونة المحفظة نفسها فقط |
لمجتمع مثل نبني، حيث البطاقة مجانية والعدد بالعشرات لا بالآلاف، الطريق الثاني هو الأنسب، والثالث يبقى قائماً لمن لا يحمل آيفون.
٣ · كيف تعمل بطاقة بنّاء فعلاً
- الصفحة تعرض زر «Apple Wallet» على آيفون و«Google Wallet» على أندرويد، والزر يطلب مساراً على خادمنا لا الخدمة مباشرة.
- عند أول طلب، الخادم يبني وصف الباس من بيانات البطاقة: الاسم، والدور، والجوال في الرأس، والبريد والموقع في الوجه، والـvCard كاملة في الرمز.
- الخادم يرسل الوصف إلى خدمة التوقيع بمفتاح سرّي لا يظهر في المتصفح، ويستلم الملف موقّعاً، ويخزّنه عندنا.
- الطلبات التالية تُخدم من المخزن، فلا تُستهلك حصة الخدمة إلا عند تغيّر البيانات.
- الملف يُقدَّم بنوع
application/vnd.apple.pkpass، فيفتحه سفاري في ورقة المحفظة مباشرة.
٤ · الطلب الذي يُرسل، حرفياً
هذا شكل الطلب الذي يبنيه خادمنا، بعد حذف المفتاح. الحقول التي تحتاج باقة مدفوعة في الخدمة هي اللون الدقيق والشعار والصورة، وبدونها يُستخدم لون جاهز وبلا شعار.
POST https://api.walletwallet.dev/api/passes
Authorization: Bearer ww_live_…
{
"barcodeValue": "BEGIN:VCARD\r\nVERSION:3.0\r\nFN:فهد غازي\r\n…END:VCARD",
"barcodeFormat": "QR",
"logoText": "نبني",
"organizationName": "نبني",
"headerFields": [{ "label": "الجوال", "value": "+9665xxxxxxxx" }],
"primaryFields": [{ "label": "المؤسس", "value": "فهد غازي" }],
"secondaryFields": [{ "label": "البريد", "value": "fahad@nabni.app" },
{ "label": "الموقع", "value": "nabni.app" }],
"backFields": [{ "label": "البطاقة", "value": "https://…/c/fahad/" }],
"color": "#2C39E5",
"logoURL": "https://…/brand/wallet-logo.png",
"thumbnailURL": "https://…/c/fahad/photo.png",
"expirationDays": 3650
}
الرد يحمل الملف مشفّراً بـ base64 ورابط حفظ لـ Google Wallet ورابط مشاركة يختار المنصة تلقائياً.
٥ · خمسة أفخاخ وقعنا فيها
٦ · ما لا تستطيعه بلا شهادتك
- التحديث عن بُعد: الباس ثابت. تغيير الرقم يعني باساً جديداً يضيفه صاحبه من جديد.
- اسم المُصدِر في الملف: يحمل معرّف الخدمة لا معرّفك، وإن ظهر اسمك وشعارك على الوجه.
- NFC: غير متاح أصلاً إلا لجهات معتمدة عند Apple، بشهادة أو بدونها. لا تعد به أحداً.
- تخصيص الرمز: المحفظة ترسم الرمز بنفسها، بلا شعار في وسطه ولا ألوان. التخصيص للطباعة والصفحة فقط.
٧ · قائمة تحقق قبل الإطلاق
- المفتاح في متغيّر بيئة على الخادم، ولا يمرّ عبر المتصفح أبداً.
- الـvCard في الرمز أقصر من ١٠٢٤ حرفاً، فالخدمة تقطع ما بعدها.
- الجوال بالصيغة الدولية في الحقول، وبالمحلية إن ضاق العرض.
- الشعار PNG أبيض شفاف ١٦٠×١٦٠، والصورة الشخصية مربعة.
- ملف pkpass يُقدَّم بنوعه الصحيح وبترويسة تحميل.
- مفتاح التخزين يضم نسخة التخطيط، لا البيانات وحدها.
- الاختبار على آيفون حقيقي: الورقة تفتح، والرمز يُمسح من شاشة القفل ويحفظ جهة الاتصال.
المحفظة طبقة فوق البطاقة لا البطاقة نفسها. الصفحة والرمز وجهة الاتصال تعمل لكل جوال، والباس إضافة لمن يحمل آيفون. ابنِ ما يعمل للجميع أولاً، ثم أضف المحفظة. · بطاقة بنّاء · مشغَّل بواسطة نبني