نحوه پیاده سازی سرویس برای مغایرتگیری پرداخت
چرا مغایرت در پرداخت رخ میدهد ؟
پیپینگ همانند تمام سرویسهای پرداخت دیگر وابسته به سرویسهای دیگر مانند درگاههای پرداخت است. بنابراین هر مشکلی در هر سرویسی رخ بدهد ممکن است فرآیند پرداخت دچار مغایرت شود و بطور مثال پرداخت صحیح در اولین تلاش با اینکه صحیح بوده است اما یا بعلت مشکل در سرویس درگاه و یا مشکل در شبکه و ... ناموفق برگشت داده شود. این موارد بسیار کم اتفاق میافتد (تقریبا ۱ در ۱۰ هزار) اما چون در سرویسهای پرداخت اهمیت بالایی وجود دارد باید همواره مغایرت گیری به بهترین و سریعترین شکل ممکن انجام شود.
نحوه پیادهسازی سرویس برای دستیابی به کمترین مغایرت و نحوه اصلاح آن
در این مقاله توضیح داده میشود که اگر از api های پرداخت پیپینگ استفاده میکنید، پیادهسازی شما به چه صورت باشد تا کمترین مغایرت را در پرداخت ها داشته باشید و یا در صورت مغایرت چطور آن را دریافت کرده و دیتابیس خودتان را بروز کنید
همیشه در مرحله اول شما کد پرداخت را دریافت میکنید و کاربر را با آن به درگاه ارسال میکنید. حال اگر پس از بازگشت از بانک به هر دلیل در فرآیند تایید پرداخت خطای داخلی بانک دریافت کردید و یا timeout گرفتید برای بار دوم که کاربر را میخواهید به درگاه ارسال کنید تا از یک درگاه دیگر پرداخت را انجام دهند حتما آنها را با همان کد قبلی به درگاه ارسال کنید، ما اگر خطایی در پرداخت قبلی وجود داشته باشد قبل از ارسال به درگاه مجدد مغایرت گیری میکنیم و اگر پرداخت صحیح بوده باشد کاربر را به سایت شما به همان url که در ساخت پرداخت مشخص کردهاید برای تایید پرداخت ارسال میکنیم
شما همواره میتوانید برای اطمینان از تایید پرداخت متد verify را مجدد درخواست کنید. بطور مثال در صورتی که اطمینان ندارید که کاربر تکمیل فرآیند در بانک را زده است و به شما فقط رسید درگاه را میدهد میتوانید برای چک کردن این موضوع تایید پرداخت را مجدد فراخوانی کنید. همچنین refid که برای تایید به صفحه بازگشت شما داده میشود را در صورت گرفتن خطا در هنگام تایید میتوانید یکبار دیگر فراخوانی کنید.
ممکن است موارد بالا به علت اینکه برای مدتی طولانیتر ارتباط ما با درگاه پرداخت مورد نظر برقرار نباشد، تایید پرداخت در تلاشهای مجدد هم صورت نگیرد. در غیر اینصورت پیپینگ در زمان برقراری ارتباط تمام پرداختها را مغایرتگیری میکند. متد زیر پرداختهایی که مغایرتگیری شده است اما سرویس شما هنوز آن را تایید نکرده است را برای شما برمیگرداند :
curl -X GET \https://api.payping.ir/v1/pay/UnVerifiedPayment \
-H 'Authorization: Bearer {YOUR_TOKEN}' \
در پاسخ این متد json زیر را دریافت میکنید :
[
{
"refId": "10012345678",
"amount": 100,
"clientRefId": "YOUR_CLIENTREFID",
"payDate": "2018-12-29T05:31:53.727603"
}
]
با این مقادیر شما میتوانید متد verify را مجدد صدا بزنید تا تایید شما کامل شود و با clientrefid دیتابیس خودتان را بروز کنید.
شما میتوانید این متد را بصورت دستی و یا در یک cronjob بگذارید تا همیشه پرداختهای شما بطور کامل بروز باشد.
در صورت داشتن هرگونه سوال و نیاز به راهنمایی ، با پشتیبانی آنلاین سایت پیپینگ در ارتباط باشید.
به روز شده در: 11/10/2020
خیلی ممنون!