بررسی اجمالی
بازپرداخت میتواند با یک اقدام فعال کاربر (فشردن دکمه «بازپرداخت») آغاز شود یا بهطور خودکار از طرف یک کاربر فعال شود. صرف نظر از راهاندازی، یک درخواست بازپرداخت ناهمزمان از Google به یکپارچهساز پرداخت ارسال میشود. ادغامکننده باید درخواست را تأیید کند و پس از تکمیل بازپرداخت به Google اطلاع دهد.
جریان چگونه کار می کند
جریان بازپرداخت
در اینجا یک نمونه جریان بازپرداخت ناهمزمان است که توسط کاربر آغاز شده است:
در اینجا لیستی از اشیاء در نمودار بالا آمده است:
- کاربر : این شخصی است که خواهان بازپرداخت کامل یا جزئی است.
- Google Server : سرور پشتیبان در Google که دستور بازپرداخت را به یکپارچهساز پرداخت میفرستد.
- Payment Integrator : یکپارچهساز که درخواست بازپرداخت را به صادرکننده مربوطه ارسال میکند.
- صادرکننده : صادرکننده ای که برای پرداخت استفاده می کند و درخواست بازپرداخت را می پذیرد.
بازپرداخت در این مثال توسط کاربر آغاز می شود.
- کاربر بازپرداخت را به سرور Google آغاز می کند.
- Google نقطه پایان
AsynchronousRefund
یکپارچهساز پرداخت را فراخوانی میکند. - ادغام کننده یک پاسخ
Acknowledged
به Google ارسال می کند. - یکپارچهکننده نقطه پایانی
Refund
مناسب را در صادرکننده فراخوانی میکند. - صادرکننده بازپرداخت را پردازش می کند و با
Success
به ادغام کننده پاسخ می دهد. - یکپارچهکننده نقطه پایانی
RefundResultNotification
را در سرور Google فرا میخواند تا نتیجه را به Google اطلاع دهد. - Google
RefundResultNotification
تأیید می کند. - Google وجوه موجود کاربر را به روز می کند.
- کاربر بازپرداخت دریافت می کند.
بهترین شیوه ها و ملاحظات دیگر
از آنجا که برخی از محصولات Google، مانند Adwords، تا زمانی که اعتبار در حساب وجود دارد، از بازپرداخت پشتیبانی میکنند، درخواستهای بازپرداخت تراکنش باید برای مدت نامحدودی پشتیبانی شوند. اگر محدودیت فنی وجود داشته باشد، دوره بازپرداخت باید تا زمانی باشد که پلتفرم شما اجازه می دهد.
بازپرداخت تنها در صورتی قابل رد است که موجودی تراکنش اصلی برای پوشش مبلغ بازپرداخت کافی نباشد، یا حساب بسته شده باشد یا در حالت تعلیق باشد و یکپارچهساز توانایی ارسال این پول را برای کاربر نداشته باشد.
بازپرداخت می تواند در عرض چند ثانیه پس از ضبط آغاز شود. زمان بازپرداخت در اختیار Google است.
بازپرداخت هرگز نباید به عنوان بازپرداخت کامل در نظر گرفته شود. هنگام بازپرداخت حساب باید همیشه قسمت refundAmount
در نظر گرفته شود.
بازپرداخت جزئی چندگانه باید پشتیبانی شود. برای مثال، فرض کنید یک تراکنش به ارزش 11.00 دلار رخ می دهد، و کاربر می تواند با موفقیت بازپرداخت جزئی 4.00 دلار، 5.00 دلار و 1.00 دلار را از تراکنش اصلی دریافت کند. در این حالت، هر سه بازپرداخت دارای captureRequestId
یکسان، اما مقادیر requestId
متفاوت خواهند بود. علاوه بر این، این تراکنش فقط 1.00 دلار روی آن باقی خواهد ماند.
حالا بیایید تصور کنیم که یک خرید 12 دلاری وجود دارد. برای این مثال، کاربر می تواند دو بازپرداخت، هر کدام 6.00 دلار انجام دهد. اگر این دو بازپرداخت مقادیر requestId
متفاوتی داشته باشند (و captureRequestId
یکسان) باید به عنوان بازپرداخت جداگانه در یک تراکنش تلقی شوند. در این حالت، پس از تکمیل این بازپرداخت، کاربر 0 دلار در تراکنش باقی خواهد ماند.