كل تجديد يحصل على معرّف طلب خاص به في Google Play، وهذا هو الرقم الذي يجب التحقق منه قبل رد أموال أي عميل
معرّف طلب Google Play مثل GPA.1234-5678-9012-34567..2 يشير إلى عملية دفع واحدة بعينها. نشرح هنا كيف تقرأ لاحقة التجديد، وكيف تبحث عن طلب في Play Console أو عبر Orders API، وكيف ترد قيمة الدفعة التي يقصدها العميل دون أن تتحمل كلفة دفعة أخرى.

أهم الخلاصات
- يبدو معرّف طلب Google Play بهذا الشكل GPA.1234-5678-9012-34567، وتضيف تجديدات الاشتراك لاحقة إليه، فيكون GPA.1234-5678-9012-34567..0 هو التجديد الأول لذلك الاشتراك.
- تُرجع الدالة getOrderId() في Play Billing Library معرّف الطلب الأولي عند تجديدات الاشتراك، لا المعرّف الخاص بالتجديد نفسه، وتُرجع null ما دامت عملية الشراء في الحالة PENDING.
- أضافت Google الطريقتين get وbatchGet إلى مورد Orders في Play Developer API في 21 مايو 2025. تقبل batchGet من 1 إلى 1,000 معرّف طلب مختلف، ويفشل الطلب بأكمله إذا لم يُعثر على أي واحد منها.
- يحمل كائن Order القادم من Orders API إحدى الحالات PENDING أو PROCESSED أو CANCELED أو PENDING_REFUND أو PARTIALLY_REFUNDED أو REFUNDED، إضافة إلى الحقل developerRevenueInBuyerCurrency، وهو صافٍ بعد خصم المبالغ المستردة جزئيًا والضرائب والرسوم.
- لا تستطيع الطريقة orders.refund في Google Play رد أموال الطلبات التي مضى عليها أكثر من 3 سنوات، وتمرير revoke=true ينهي وصول العميل إلى الاشتراك أو العنصر فورًا.
- في Play Console، ينطبق خيار «رد الأموال والإلغاء» (Refund and revoke) على أحدث طلب في الاشتراك، بينما ينطبق خيار «رد الأموال فقط» (Refund only) على طلب أقدم ويُبقي الاشتراك فعّالًا.
- تتولى Google Play بنفسها طلبات الاسترداد المقدمة خلال 48 ساعة من الشراء. بعد مرور 48 ساعة توجّه العملاء إلى المطوّر، وفي هذه المرحلة عادة يصل معرّف الطلب إلى صندوق الدعم لديك.
انظر إلى نهاية رقم الطلب قبل أن ترد أموال عميل في Google Play. فالمعرّف GPA.1234-5678-9012-34567 هو أول دفعة في الاشتراك، أما GPA.1234-5678-9012-34567..2 فهو الدفعة الثالثة. يشتركان في الأساس نفسه، لكنهما دفعتان مختلفتان، ويتعامل معهما Play Console بشكل مختلف عند رد الأموال. معرّف طلب Google Play هو المعرّف الوحيد الذي يراه عميلك، ولذلك هو ما يصل إلى صندوق الدعم لديك. اقرأه بشكل صحيح وسترد قيمة الدفعة التي أزعجت العميل فعلًا، ومرة واحدة فقط.
ماذا يخبرك معرّف طلب Google Play
توضّح وثائق Play Billing Library من Google الصيغة بالمثال. يبدأ معرّف الطلب بـ GPA، تليه مجموعات من الأرقام. في الاشتراكات، يحصل كل تجديد على معرّف الطلب الأساسي مضافًا إليه نقطتان وعدّاد يبدأ من الصفر. إذن لا تحمل عملية الشراء الأصلية أي لاحقة، والتجديد الأول هو ..0، والثاني ..1، وهكذا.
وهذا يجعل اللاحقة مؤشرًا سريعًا على المدة التي ظل فيها العميل يدفع. العميل الذي يكتب بشأن GPA.3333-4137-0319-36762..11 جُدّد اشتراكه اثنتي عشرة مرة. أما العميل الذي يذكر المعرّف الأساسي دون لاحقة، فإما أنه اشترى شيئًا مرة واحدة، وإما أنه يشير إلى أول دفعة له.
| معرّف الطلب | ما هو |
|---|---|
| GPA.1234-5678-9012-34567 | عملية شراء لمرة واحدة، أو أول دفعة في الاشتراك |
| GPA.1234-5678-9012-34567..0 | التجديد الأول لذلك الاشتراك |
| GPA.1234-5678-9012-34567..1 | التجديد الثاني |
| null في Billing Library | عملية شراء لا تزال في الحالة PENDING، قبل أن تعالج Google الدفعة |
أين يظهر معرّف الطلب، وأي صيغة منه تحصل عليها
هنا تتعثر الفرق عادة. فكل مصدر يعطيك المعرّف نفسه بصيغة مختلفة.
- يعرض إيصال Google Play لدى العميل معرّف الطلب الخاص بالدفعة التي يخصها الإيصال، بما في ذلك التجديدات.
- داخل تطبيقك، تُرجع Purchase.getOrderId() من Play Billing Library معرّف الطلب الأولي عند تجديدات الاشتراك. مثال Google نفسها: بدلًا من GPA.1234-5678-9012-34567..0 ستحصل على GPA.1234-5678-9012-34567.
- على خادمك، يمنح purchases.subscriptionsv2 كل بند الحقل latestSuccessfulOrderId، وهو معرّف آخر طلب ناجح لذلك البند. أضافت Google هذا الحقل في 21 مايو 2025.
- في Voided Purchases API، يحدد orderId بشكل فريد عملية شراء لمرة واحدة أو عملية شراء اشتراك أو تجديد اشتراك. وتنص وثائق Google على استخدام orderId، لا رمز الشراء، للتمييز بين التجديدات.
إذن ما فائدة رمز الشراء
يحدد رمز الشراء عملية الشراء ككل. في الاشتراك، يغطي رمز واحد الدفعة الأصلية وكل تجديد بعدها. لهذا هو المفتاح الصحيح لصلاحيات الوصول، والمفتاح الخاطئ لرد الأموال. فعمليات الاسترداد ورد المبالغ المتنازع عليها (chargeback) تقع على دفعة واحدة، ومعرّف الطلب وحده هو ما يسمّي دفعة واحدة.
كيف تبحث عن طلب في Google Play
في Play Console
يقبل قسم «إدارة الطلبات» (Order management) في مربع البحث إما معرّف الطلب وإما عنوان البريد الإلكتروني الكامل للعميل. ويعرض كل طلب إحدى هذه الحالات: «تمت المعالجة» (Processed)، أو «ملغى» (Cancelled)، أو «معلّق» (Pending)، أو «استرداد معلّق» (Pending refund)، أو «مسترد» (Refunded)، أو «استرداد جزئي معلّق» (Pending partial refund)، أو «مسترد جزئيًا» (Partially refunded). إذا أعطاك العميل بريدًا إلكترونيًا بدلًا من إيصال، فابحث بالبريد واختر الدفعة حسب التاريخ، ثم تحقق من اللاحقة قبل أن تتخذ أي إجراء.
عبر Orders API
منذ 21 مايو 2025، يتضمن مورد Orders في Google Play Developer API الطريقة orders.get لطلب واحد والطريقة orders.batchget لقائمة طلبات. وهناك بعض الحدود المهمة عمليًا:
- تقبل batchget ما بين 1 و1,000 معرّف طلب في كل استدعاء، ويجب أن تكون مختلفة.
- إذا لم يُعثر على أي معرّف طلب أو كان لا ينتمي إلى الحزمة، يفشل طلب batchget بأكمله.
- تُحتسب استدعاءات Orders API ضمن حصتك في Play Developer API، وهي افتراضيًا 200,000 استدعاء يوميًا.
الجزء المفيد هو كائن Order الذي يعود إليك. فهو يتضمن حالة الطلب، وpurchaseToken، وcreateTime وlastEventTime، والمبلغ الإجمالي والضريبة، وsalesChannel مثل IN_APP أو PLAY_STORE، وorderHistory الذي يضم أحداث المعالجة والإلغاء والاسترداد والاسترداد الجزئي. ويتضمن أيضًا developerRevenueInBuyerCurrency، الذي تعرّفه Google بأنه إيرادك بعملة المشتري بعد خصم المبالغ المستردة جزئيًا والضرائب والرسوم. وعندما تكون Google هي التاجر المسجّل (merchant of record)، لا يتضمن عنوان المشتري إلا البلد.
| حالة الطلب | ما تقوله وثائق Google المرجعية |
|---|---|
| PENDING | أُنشئ وينتظر المعالجة |
| PROCESSED | تمت معالجته بنجاح |
| CANCELED | أُلغي قبل معالجته |
| PENDING_REFUND | استرداد مطلوب ينتظر المعالجة |
| PARTIALLY_REFUNDED | رُدّ جزء من مبلغ الطلب |
| REFUNDED | رُدّ مبلغ الطلب بالكامل |
رد أموال الطلب الصحيح
بعد أن تعرف أي دفعة يقصدها العميل، يمنحك Play Console خيارًا يعتمد على موقع هذا الطلب في الاشتراك.
| الخيار | ينطبق على | ماذا يحدث |
|---|---|---|
| رد الأموال والإلغاء (Refund and revoke) | أحدث طلب في الاشتراك | تُرد الأموال، ويُزال الاشتراك فورًا، وتُلغى التجديدات المستقبلية |
| رد الأموال فقط (Refund only) | طلب أقدم في الاشتراك | تُرد الأموال، ويبقى الاشتراك فعّالًا |
| استرداد جزئي (Partial refund) | المشتريات داخل التطبيق والاشتراكات المطلوبة بعد مارس 2018، دون التطبيقات المدفوعة | أي نسبة أقل من 100%، أو مبلغ قبل الضريبة أقل من إجمالي الطلب |
| إلغاء الاشتراك (Cancel subscription) | اشتراك فعّال | لا استرداد، ويستمر الوصول حتى نهاية فترة الفوترة الحالية |
عبر الـ API، تأخذ orders.refund اسم الحزمة ومعرّف الطلب. ولا يمكن رد أموال الطلبات التي مضى عليها أكثر من 3 سنوات. والمعامل الاختياري revoke، إذا ضُبط على true، ينهي الوصول إلى الاشتراك أو العنصر داخل التطبيق فورًا. وتشير مساعدة Google أيضًا إلى أن عمليات الاسترداد لا يمكن التراجع عنها بعد إصدارها، لذا فمعرّف الطلب الذي تمرره نهائي.
لماذا يظهر طلب بقيمة $0.00 لدى أحد المشتركين؟
توضّح ذلك وثائق Google الخاصة بدورة حياة الاشتراك. عندما يشترك المستخدم مجددًا من تطبيقك في الخطة الأساسية نفسها قبل انتهاء اشتراكه، تنشئ Google Play طلبًا بقيمة $0.00. لا يُخصم منه أي مبلغ لأنه دفع بالفعل عن الفترة الحالية، وتُستأنف الفوترة المعتادة في تاريخ التجديد الأصلي. وهذا ليس فترة تجريبية مجانية ولا عرضًا ترويجيًا. ولا يوجد ما يُرد في هذا الطلب. إذا أراد العميل استرداد أمواله، فابحث عن الطلب المدفوع الذي يسبقه.
كم يكلّفك رد أموال الطلب الخطأ
الاسترداد يعيد السعر. والاسترداد الجزئي يعمل بالطريقة نفسها وبالنسبة نفسها. مثال Google: استرداد جزئي بنسبة 50% يسترجع أيضًا 50% من مستحقاتك و50% من رسوم الخدمة. أما ما لا يعود فهو كل ما أنفقته على خدمة ذلك العميل: الحوسبة، واستدعاءات واجهات API الخارجية، والتخزين، وأي عمولة لشركاء التسويق. رد أموال الطلب الخطأ يعني أنك تدفع ذلك مرتين.
إليك كيف يحدث ذلك. عميل على خطة شهرية يكتب بشأن الدفعة ..4، أي دفعة الأسبوع الماضي. يبحث أحد أفراد فريقك بالبريد الإلكتروني، فيرى الطلب الأول في أعلى القائمة، وينقر «رد الأموال فقط» على الطلب الأساسي الذي مضى عليه أشهر. صار العميل الآن قد استرد أموال فترة استخدمها فعلًا. والدفعة التي اشتكى منها لم تُمس، واشتراكه ما زال يتجدد. ولا يزال بإمكانه أن يطلب من مصرفه عكس دفعة الأسبوع الماضي.

وطريق المصرف هذا هو الأغلى الآن. فبالنسبة إلى الطلبات المقدمة بعد 3 أغسطس 2026، تقول Google إنه عندما ينجح رد المبلغ المتنازع عليه، يتحمل المطوّر سعر الشراء مخصومًا منه رسوم خدمة Play، إضافة إلى رسوم رد المبلغ التي يفرضها المصرف. وقرارات رد المبالغ المتنازع عليها نهائية لدى المصرف. لاحقة واحدة تُقرأ خطأً قد تنتهي بخسارة ما يعادل استردادين، إضافة إلى الرسوم.
أي عمليات الاسترداد لا تصل إلى صندوق الدعم لديك أبدًا
معظم عمليات الاسترداد في Google Play لا تحتاج إليك ولا إلى معرّف الطلب أصلًا. تنص سياسة الاسترداد لدى Google على أن العميل يمكنه الحصول على استرداد خلال 48 ساعة من الشراء عبر Google Play، وبعد 48 ساعة عليه التواصل مع المطوّر. كما تسترد Google الأموال وتلغي الاشتراكات التي لا تؤكدها (acknowledge) خلال ثلاثة أيام. وتعلم بهذه الحالات لاحقًا عبر Voided Purchases API، الذي يبلّغ عن voidedSource (0 للمستخدم، و1 للمطوّر، و2 لـ Google) وعن voidedReason مثل Remorse أو Chargeback أو Unacknowledged_purchase.
هناك مسار استرداد واحد فقط في Google Play يطلب رأيك. عندما يحتاج رد مبلغ متنازع عليه إلى مراجعة المطوّر، يكون أمامك 24 ساعة للرد عبر orders.reviewrefund بتفضيل استرداد هو APPROVE أو DECLINE أو NEUTRAL، مع أدلة على استخدام المشتريات. يرد RefundHalt على هذه المراجعة نيابة عنك داخل المهلة، مستخدمًا بيانات الاستخدام المتوفرة لديك أصلًا، فيحصل الطلب المتنازع عليه على أدلتك بدلًا من الصمت.
قائمة تحقق قصيرة لتذاكر الدعم المتعلقة بمعرّف الطلب
- اطلب معرّف الطلب الكامل من إيصال Google Play، مع اللاحقة.
- ابحث عنه في Play Console أو عبر orders.get وتحقق من حالته أولًا.
- تأكد من أن تاريخ الدفعة يطابق ما يصفه العميل.
- استخدم «رد الأموال والإلغاء» على أحدث طلب فقط، و«رد الأموال فقط» على الطلبات الأقدم.
- سجّل معرّف الطلب الذي رددت أمواله، حتى يسهل اكتشاف أي رد مبلغ متنازع عليه لاحقًا على طلب آخر.
الأسئلة الشائعة
- ماذا تعني ..0 في نهاية معرّف طلب Google Play؟
- تدل على التجديد الأول للاشتراك. تمنح Google Play كل تجديد معرّف الطلب الأساسي للاشتراك مضافًا إليه نقطتان وعدّاد يبدأ من الصفر، فيكون GPA.1234-5678-9012-34567..0 هو التجديد الأول و..1 هو الثاني. والمعرّف الأساسي دون لاحقة هو الدفعة الأصلية.
- لماذا تُرجع getOrderId() في تطبيقي معرّف طلب مختلفًا عن الموجود في إيصال العميل؟
- لأن Play Billing Library تُرجع معرّف الطلب الأولي عند تجديدات الاشتراك. ومثال Google أنه بدلًا من GPA.1234-5678-9012-34567..0 للتجديد الأول، تُرجع getOrderId() القيمة GPA.1234-5678-9012-34567. استخدم latestSuccessfulOrderId من purchases.subscriptionsv2 على خادمك للحصول على المعرّف الخاص بالتجديد.
- كيف أبحث عن طلب في Google Play باستخدام معرّف الطلب؟
- ابحث عنه في قسم «إدارة الطلبات» (Order management) في Play Console، الذي يقبل معرّف الطلب أو عنوان البريد الإلكتروني الكامل للعميل، أو استدعِ orders.get في Google Play Developer API. وتبحث orders.batchget عن 1 إلى 1,000 معرّف طلب مختلف دفعة واحدة، ويفشل الطلب بأكمله إذا لم يُعثر على أي واحد منها.
- هل يمكنني رد أموال طلب في Google Play مضى عليه أكثر من سنة؟
- نعم، حتى 3 سنوات. تنص الوثائق المرجعية لـ orders.refund من Google على أن الطلبات التي مضى عليها أكثر من 3 سنوات لا يمكن رد أموالها. وبالنسبة إلى طلب أقدم في الاشتراك، يعيد خيار «رد الأموال فقط» (Refund only) في Play Console المال ويُبقي الاشتراك فعّالًا.
- لماذا يوجد طلب في Google Play بقيمة $0.00 لأحد المشتركين؟
- يظهر عندما يشترك المستخدم مجددًا من تطبيقك في الخطة الأساسية نفسها قبل انتهاء اشتراكه. لا يُخصم من المستخدم أي مبلغ لأنه دفع بالفعل عن الفترة الحالية، وتُستأنف الفوترة المعتادة في تاريخ التجديد الأصلي. وتقول Google إن ذلك لا يعني منح فترة تجريبية مجانية أو خصم ترويجي.
المصادر وقراءات إضافية
- Android Developers: Purchase (Play Billing Library), getOrderId
- Google Play Developer API: REST Resource orders
- Google Play Developer API: orders.batchget
- Google Play Developer API: orders.refund
- Google Play Developer API release notes
- Google Play Developer API: purchases.voidedpurchases
- Play Console Help: Issue refunds or cancel orders
- Google Play Billing: Subscription lifecycle
- Google Play Help: Apps, games and in-app purchases refund policies
- Google Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
الطيار الآلي للاستردادات في App Store وGoogle Play
تابع القراءة
طلبات الاسترداد المفرطة قد تكلفك أكثر من المبالغ المستردة نفسها، لأن متجري التطبيقات يعدّانها مؤشرًا على الجودة
تذكر الإرشادات 5.6.4 من Apple طلبات الاسترداد المفرطة دليلًا على أن التطبيق لا يفي بمعايير الجودة، واتفاقية التوزيع من Google تسمح لها بإزالة تطبيقات المطورين الجدد بناءً على معدلات الاسترداد. إليك ما يقوله كل متجر، وكم تكلفك الإزالة، وكيف تبقى بعيدًا عن الخطر.
تحقّق من إشعارات خادم App Store قبل أن تتصرّف بناءً على استرداد، لأن أي شخص يستطيع الإرسال إلى عنوان webhook الخاص بك
إشعار الاسترداد ليس سوى طلب HTTPS إلى أن تتحقّق من توقيعه. إليك كيف تتحقّق من إشعارات خادم App Store ورسائل Google Play RTDN، وما الذي يوقّعه كل متجر، وما الذي يكلّفك إياه استرداد مزوّر أو مرفوض خطأً.