يمكنك استرداد قيمة طلب على Google Play بنفسك، والقيام بذلك قبل ردّ المبلغ يوفّر عليك رسوم البنك
يمكنك استرداد قيمة أي طلب على Google Play عمره أقل من ثلاث سنوات باستدعاء واحد لواجهة API، مع إلغاء الوصول أو دونه. والقيام بذلك بنفسك قبل أن يتحول النزاع إلى ردّ مبلغ يوفّر عليك رسوم البنك التي تُفرض على المطورين اعتبارًا من 3 أغسطس 2026. إليك كيفية عمل orders.refund.

أهم الخلاصات
- تتيح نقطة النهاية `orders.refund` في Google Play Developer API لأي مطوّر أن يستردّ قيمة أي عملية شراء لمرة واحدة أو طلب اشتراك مباشرةً، دون مراجعة، ودون الحاجة إلى سبب، ودون طلب من العميل.
- الاسترداد والإلغاء إجراءان منفصلان. تأخذ `orders.refund` علامة `revoke` اختيارية. اتركها معطّلة فيحتفظ المشتري بالوصول، أو اضبطها على true فتنهي Google الوصول إلى العنصر فورًا.
- لا يمكن استرداد قيمة الطلبات التي يزيد عمرها على ثلاث سنوات عبر Google Play Developer API. وبمجرد انغلاق هذه النافذة يصبح الطلب بعيد المنال بشكل دائم.
- تُصدر `orders.refund` استردادات كاملة فقط. أما الاسترداد الجزئي والتناسبي على اشتراك فيتطلب نقطة النهاية الأحدث `purchases.subscriptionsv2.revoke` مع سياق `proratedRefund`.
- استرداد قيمة طلب اشتراك مع ضبط `revoke` على true يُطلق إشعار Real-time Developer Notification من نوع `SUBSCRIPTION_REVOKED`، فيعرف الخادم الخلفي بالإلغاء بالطريقة نفسها التي يعرف بها أي حدث اشتراك آخر.
- اعتبارًا من 3 أغسطس 2026، تحمّل Google المطوّر سعر الشراء إضافةً إلى رسوم البنك في حالة ردّ المبلغ. أما الاسترداد الذي تُصدره بنفسك فيعيد سعر الشراء فقط، لذا قد يكون استرداد طلب مشكوك فيه مبكرًا أرخص من تركه يتحول إلى ردّ مبلغ.
- الاسترداد الذي يبدؤه المطوّر هو تدفق الاسترداد الوحيد على Google Play الذي تتحكم فيه بالكامل. أما الاسترداد الذاتي خلال 48 ساعة، واستردادات الدعم، وعمليات الشراء المُلغاة فتُقرَّر جميعها دون مشاركتك.
لست مضطرًا إلى انتظار أن يفتح العميل نزاعًا. إذا أردت إعادة المال، يمكنك استرداد قيمة طلب على Google Play بنفسك، مباشرةً، باستدعاء واحد لواجهة API أو بنقرتين في Play Console. لن تسألك Google عن السبب، ولن تشكّك في قرارك. هذا هو تدفق الاسترداد الوحيد الذي تمسك فيه بالزر، واستخدامه مبكرًا، قبل أن يتصلّب النزاع إلى ردّ مبلغ من البنك، غالبًا ما يكون أرخص مخرج.
تدفق الاسترداد الوحيد الذي تتحكم فيه فعلاً
معظم الاستردادات على Google Play تحدث لك، لا من خلالك. المشتري الذي يطلب من Google خلال 48 ساعة يحصل على استرداد ذاتي تلقائي دون أي تدخل من المطوّر. ويمكن لموظف الدعم منح استرداد يصبح نهائيًا لحظة إصداره. أما ردّ المبلغ من البنك فيُقرَّر بين حامل البطاقة وبنكه. في كل هذه الحالات تكون متفرجًا يعرف بالأمر بعد وقوعه.
الاسترداد الذي يبدؤه المطوّر هو الاستثناء. هنا أنت من يقرر إعادة المال، وفق جدولك الخاص، ولأسبابك الخاصة. إنه أداة حسن نيّة، وأداة لخدمة العملاء، وبهدوء، أداة للتحكم في التكاليف. ومعرفة سلوكه بدقة هي ما يحوّله من زر طوارئ إلى خيار مدروس.
ماذا تفعل orders.refund، في استدعاء واحد
تستردّ طريقة orders.refund في Google Play Developer API قيمة طلب واحد، سواء كان ذلك الطلب عملية شراء لمرة واحدة داخل التطبيق أو دفعة اشتراك. ترسل طلب POST فارغًا إلى مسار استرداد الطلب، مع المصادقة عبر حساب الخدمة الخاص بك، ويُعيد الاستدعاء الناجح جسمًا فارغًا. هذه هي الآلية بأكملها.
علامة revoke تقرر هل يحتفظون بالوصول
الخيار الوحيد الذي يمنحه لك الاستدعاء هو علامة الاستعلام revoke. مرجع Google صريح بشأن ما تفعله: إذا ضُبطت على true، فسيُنهى الوصول إلى الاشتراك أو العنصر داخل التطبيق فورًا. احذفها فيعود المال بينما يحتفظ العميل بما اشتراه. هذه القيمة المنطقية الواحدة هي الفرق بين استرداد ودّي وإلغاء نظيف.
| جزء الاستدعاء | القيمة |
|---|---|
| الطريقة والمسار | POST /androidpublisher/v3/applications/{packageName}/orders/{orderId}:refund |
packageName | معرّف تطبيقك، على سبيل المثال com.acme.app |
orderId | معرّف الطلب المعروض للمشتري عند الشراء |
revoke | علامة استعلام اختيارية. true تُنهي الوصول فورًا، واحذفها لاسترداد المبلغ مع إبقاء الوصول سليمًا |
| جسم الطلب | فارغ |
| نطاق OAuth | https://www.googleapis.com/auth/androidpublisher |
استرداد كامل افتراضيًا، وتناسبي للاشتراكات فقط
تُعيد orders.refund قيمة الطلب بالكامل. ليس لها حقل لمبلغ جزئي. إذا احتجت إلى إعادة جزء من اشتراك، فاستخدم نقطة النهاية الأحدث purchases.subscriptionsv2.revoke، التي تقبل سياق إلغاء ويمكنها إصدار استرداد كامل أو تناسبي بناءً على الوقت المتبقي في الفترة. أما purchases.subscriptions.revoke الأقدم فكانت تُجري استردادات كاملة فقط، وهو السبب الرئيسي لوجود طريقة الإصدار الثاني. وبالنسبة للطلبات لمرة واحدة، تتوفر الاستردادات الجزئية عبر موقع Play Console للمشتريات التي تمت بعد مارس 2018، ولا تتوفر أبدًا للتطبيقات المدفوعة.

جدار الثلاث سنوات وقيود أخرى
الحد الصارم هو العمر. تنصّ Google بوضوح على أن الطلبات التي يزيد عمرها على ثلاث سنوات لا يمكن استردادها. لا استئناف ولا تجاوز بمجرد أن يعبر الطلب هذا الخط، فالاسترداد قرار له تاريخ انتهاء صلاحية. وثمة حفنة من القيود الأخرى تحدد ما يستطيع الاستدعاء فعله وما لا يستطيع.
| القيد | ما يعنيه |
|---|---|
| حد العمر ثلاث سنوات | لا يمكن استرداد الطلبات التي يزيد عمرها على ثلاث سنوات عبر واجهة API |
| المبلغ الكامل فقط | تُعيد orders.refund قيمة الطلب كاملةً، ولا تُعيد أبدًا مبلغًا جزئيًا |
| الاستردادات الجزئية | متاحة للاشتراكات عبر purchases.subscriptionsv2.revoke، أو عبر Play Console للطلبات لمرة واحدة التي تمت بعد مارس 2018، وغير متاحة أبدًا للتطبيقات المدفوعة |
| غير قابل للإلغاء | بمجرد إصدار الاسترداد لا يمكن التراجع عنه |
ماذا يوفّر لك هذا من المال
كل استرداد هو خسارة بالفعل قبل أن تلمس الزر، لأن المال الذي أنفقته على خدمة تلك العملية لا يعود معها. إذا ولّد المشتري صورًا، أو أجرى استدعاءات API على نماذجك، أو استهلك مساحة تخزين، أو أطلق دفعة لطرف ثالث، فتلك التكاليف قد أُنفقت وتبقى منفَقة. الاسترداد يقرر فقط من يتحمّل سعر البيع فوق ذلك.
السبب في اللجوء إلى الاسترداد بنفسك هو ما يحدث إذا لم تفعل. توثيق Google صريح: اعتبارًا من 3 أغسطس 2026، عندما يعترض عميل على عملية شراء لدى بنكه، تمرّر Google سعر الشراء ورسوم ردّ المبلغ الخاصة بالبنك إلى المطوّر. أما الاسترداد الذي تُصدره عبر orders.refund فيعيد سعر الشراء وحده. لذا بالنسبة لطلب تتوقع خسارته أصلاً، يكون الاسترداد الذاتي أرخص من ردّ المبلغ بمقدار رسوم البنك بالضبط، وهو يغلق القضية قبل أن تتصاعد.
أين يقع الاسترداد الذاتي بين تدفقات الاسترداد الأخرى
من المفيد أن ترى الاسترداد الذي يبدؤه المطوّر بجانب كل شيء آخر قد يسحب المال من حسابك. تدفقان فقط من هذه التدفقات يطلبان مدخلاتك، وواحد منهما فقط يتيح لك بدء الاسترداد بنفسك.
| تدفق الاسترداد | من يقرر | تحكّمك |
|---|---|---|
استرداد المطوّر (orders.refund) | أنت | كامل. أنت تختار هل ومتى |
| الاسترداد الذاتي خلال 48 ساعة | لا شيء. تستردّ Google تلقائيًا | |
| استرداد موظف الدعم | دعم Google أو Apple | لا شيء. نهائي بمجرد منحه |
مراجعة ردّ المبلغ (orders.reviewrefund) | Google، باستخدام أدلتك | نافذة مدخلات مدتها 24 ساعة فقط |
| Voided Purchases API | لا أحد، فهي للقراءة فقط | لا شيء. تقرأ فقط ما حدث بالفعل |
كيفية استرداد قيمة طلب على Google Play، من البداية إلى النهاية
من Play Console
- افتح Play Console واختر Order management من القائمة اليسرى.
- ابحث عن الطلب بواسطة معرّف الطلب أو عنوان البريد الإلكتروني الكامل للمشتري.
- أسفل السعر، اختر Refund وحدد سبب الاسترداد. استخدم الموقع، لا تطبيق الجوال، إذا احتجت إلى استرداد جزئي.
من واجهة API
- صادِق على حساب خدمة يملك نطاق
androidpublisherوالصلاحيات المالية في Play Console. - أرسل طلب POST فارغًا إلى مسار استرداد الطلب، وأضف
revoke=trueفقط إذا أردت أيضًا قطع الوصول. - تعامل مع استجابة النجاح الفارغة، وإذا ألغيت اشتراكًا، فتوقّع وصول إشعار
SUBSCRIPTION_REVOKEDإلى الخادم الخلفي.
استرداد المطوّر أداة صغيرة وحادّة. يمنحك طريقة نظيفة لإنصاف العميل، ومخرجًا أرخص من ردّ المبلغ على طلب كنت ستخسره على أي حال. القاعدة الوحيدة هي استخدامه عن قصد، مع ضبط علامة revoke بالطريقة التي تعنيها فعلاً.
الأسئلة الشائعة
- هل يمكنني استرداد قيمة طلب على Google Play دون إلغاء وصول العميل؟
- نعم. استدعِ `orders.refund` واترك علامة `revoke` معطّلة. يستعيد المشتري ماله ويحتفظ بالوصول إلى العنصر. اضبط `revoke` على true فقط عندما تريد أيضًا إنهاء الوصول إلى عملية الشراء فورًا.
- إلى أي مدى في الماضي يمكنني استرداد قيمة طلب على Google Play؟
- حتى ثلاث سنوات من تاريخ الشراء. ينصّ Google Play Developer API على أن الطلبات التي يزيد عمرها على ثلاث سنوات لا يمكن استردادها، ولا يوجد تجاوز بمجرد انغلاق تلك النافذة.
- هل تدعم orders.refund الاستردادات الجزئية؟
- لا. تُصدر `orders.refund` مبلغ الطلب الكامل فقط. للاسترداد الجزئي أو التناسبي على اشتراك، استخدم `purchases.subscriptionsv2.revoke` مع سياق `proratedRefund`، أو أصدر استردادًا جزئيًا عبر Play Console للطلبات المؤهلة لمرة واحدة.
- هل سيعرف الخادم الخلفي عندما ألغي اشتراكًا مع استرداد؟
- نعم. استرداد قيمة طلب اشتراك مع ضبط `revoke` على true يُطلق إشعار Real-time Developer Notification من نوع `SUBSCRIPTION_REVOKED`، فيستطيع خادمك تحديث الاستحقاق بالطريقة نفسها التي يعالج بها أي حدث اشتراك آخر.
- هل استرداد الطلب بنفسي أفضل من تركه يتحول إلى ردّ مبلغ؟
- غالبًا، من حيث التكلفة الصرفة. اعتبارًا من 3 أغسطس 2026 يكلّف ردّ المبلغ المطوّرَ سعر الشراء إضافةً إلى رسوم البنك، بينما الاسترداد الذي تُصدره يعيد سعر الشراء فقط. إذا كان الطلب متجهًا بوضوح نحو نزاع، فاستردادُه مبكرًا يتجنب رسوم البنك الإضافية.
المصادر وقراءات إضافية
- Google Play Developer API: Method orders.refund
- Android Developers: Manage subscriptions and one-time purchases
- Play Console Help: Manage your app's orders and issue refunds
- Google Play Developer API: Method purchases.subscriptionsv2.revoke
- Google Play Console Help: refund protection and chargeback cost responsibility
- Google Play Help: Learn about Google Play refund policies
RefundHalt
الطيار الآلي للاستردادات في App Store وGoogle Play
تابع القراءة
واجهة Send Consumption Information من Apple تطلب الآن 5 حقول بدلاً من 12، وإليك كل حقل منها
عندما يطلب أحد العملاء استرداد الأموال من Apple، يكون payload الخاص بـ Send Consumption Information هو ردّك. خفّضت Apple عدده من 12 حقلاً إلى 5، ثلاثة إلزامية واثنان اختياريان. إليك كل حقل، والقيم التي يقبلها كل منها، ونافذة الـ 12 ساعة التي ترسله خلالها.
هناك endpoint واحد يعيد سجل استرداد App Store الكامل للعميل، وإليك ما يقدمه لك
يعيد endpoint المسمى Get Refund History من Apple سجل استرداد App Store الكامل للعميل على هيئة signed transactions. إليك كل حقل، وكيف يقوم رمز revision بالتقسيم إلى صفحات، ولماذا هو لكل عميل وليس لكل تطبيق، وكم يكلفك استرداد تفوّته.