Shop.PurchaseAsync(item.Id).
يحتاج الدفع عبر صفحة ويب إلى حزمة تطوير Flock لـ Unity بالإصدار 1.98.0 أو أحدث، ولا يحتاج إلى أي حزمة أخرى.
وعلى Android وiOS تدفع الاستدعاءات نفسها عبر متجر الهاتف بدلًا منه: راجع
الشراء داخل التطبيق.
1
اربط بوابتك بـ Flock
افتح Monetization > Payments في لوحة تحكم Flock واربط البوابة التي تبيع عبرها بمفاتيحك الخاصة. تبقى
المفاتيح على خادم Flock ولا تصل إلى جهاز اللاعب أبدًا. استخدم مفاتيح الاختبار في البوابة أثناء التطوير:
تُعلَّم مشترياتها على أنها اختبار وتُستبعد من إيراداتك.اربط بوابة واحدة، أو سمِّ البوابة المستخدمة في اللعبة حين تكون أكثر من بوابة مفعّلة (أدناه).
- Stripe
- Tap Payments
- Moyasar
في Stripe، تحت Developers > Webhooks، أضف عنوانًا هو
https://api-flock.qwacks.com/v1/shop/webhook/<your game id>/stripe مع هذه الأحداث:
checkout.session.completed وcheckout.session.expired وpayment_intent.payment_failed
وcharge.refunded وcharge.dispute.closed، ثم الصق سرّ توقيعه في Flock.
ومن دونه يُسلَّم الدفع رغم ذلك، خلال نحو 15 دقيقة بدل أن يُسلَّم فورًا.يحتسب Stripe الدفع بعملة العنصر، ويرفض سعرًا أقل من أدنى مبلغ يحتسبه بعملة حسابك (لحساب يسوّي بالدرهم:
2.00 درهم).2
سعّر العناصر بالمال الحقيقي
سعّر العنصر بإحدى Real Currencies في إعداد العملات، كما تفعل لعنصر المتجر. والسعر هو ما تحتسبه البوابة:
799 بالريال تعني 7.99 ريال. ولا يحتاج العنصر إلى معرّف منتج في متجر للدفع عبر صفحة ويب.
3
اربطه في لعبتك
اربطه مرة واحدة بعد بدء حزمة التطوير. وفي بناءات Windows وmacOS وLinux وWebGL يربط
FlockStore الدفع عبر
صفحة ويب تلقائيًا:تكون قيمة
store.IsWebCheckout صحيحة في هذه البناءات، ويعطي store.GetPrice(item.Id).Text سعر العنصر نفسه
لتعرضه؛ ولا تكون قيمة GetPrice هي null أبدًا في الدفع عبر صفحة ويب. ويُكتب الرقم بتنسيق جهاز اللاعب، فما
SAR 7.99 إلا مثال على شكله.الشراء
PurchaseAsync عملية دفع، ثم صفحتها، وينتظر حتى تُدفع أو تُرفض أو تنتهي مهلتها. ولا تُفتح عملية دفع
مرتين أبدًا: إن لم يصل رد، فشل الاستدعاء بدل أن يحاول مجددًا.
- إذا غادر اللاعب اللعبة قبل الدفع: تبقى عملية الدفع مفتوحة على الخادم. ويُعثر عليها مجددًا عند تسجيل
دخول اللاعب التالي، ويُبلغ عنها
PurchaseCompletedحين تُدفع. - إذا دُفعت واللعبة مغلقة: يسلّمها Flock رغم ذلك، وتظهر في المحفظة والمخزون، لكن لا يُطلق
PurchaseCompletedلها. - إلغاء الاستدعاء (برمز الإلغاء الخاص به) يوقف الانتظار لا عملية الدفع: فحين تُدفع يُبلغ عنها
PurchaseCompleted. - تسجيل الخروج ينهي الانتظار، ويُعثر على عملية الدفع مجددًا عند تسجيل دخول ذلك اللاعب التالي.
WebGL
لا يفتح المتصفح علامة تبويب جديدة إلا لوقت قصير بعد نقرة اللاعب. وتُفتح صفحة الدفع حالما تجهز عملية الدفع، بعد نحو ثانية ونصف من النقرة في اختباراتنا، وقد فتحها متصفح مبني على Chromium (Chrome وEdge). ويسمح Firefox بوقت مماثل، أما Safari فيسمح بنحو ثانية واحدة، فقد يحجب علامة التبويب. ولـ Safari، اعرض زر ادفع الآن خاصًا بك يفتح الصفحة فور النقر عليه:اختبر قبل الإطلاق
اربط مفاتيح الاختبار في البوابة، ثم اشترِ بإحدى بطاقات الاختبار لديها (بطاقة Stripe4242 4242 4242 4242 مع أي تاريخ مستقبلي وأي رمز تحقق؛ وبطاقات Tap وMoyasar في وثائقهما). تُسلَّم عملية
الشراء التجريبية كأي عملية أخرى، وتُعلَّم على أنها اختبار، وتُستبعد من إيراداتك. واترك عملية دفع دون دفع لترى
أنها تُغلق بحالة Expired بعد الساعة.
حين يفشل شيء
تقولMessage لكل فشل ما الذي حدث، وكيف تصلحه في سطر Fix:.