parsisolution / gateway

Iranian Payment Gateways
MIT License
19 stars 7 forks source link

مشکل تراکنش تکراری در بانک ملت #34

Closed aliqasemzadeh closed 2 years ago

aliqasemzadeh commented 5 years ago

سلام وقت بخیر

پس مدت ها فرصت شد که از پکیج شما استفاده کنم و شروع کردم به تست پکیج

یک ایرادی که در پکیج وجود دارد این هست که من وقتی از پکیج شما دارم استفاده می کنم برای بانک ملت مرتبا خطای تراکنش تکراری دریافت می کند چون روی سیستم های دیگر از درگاه استفاده شده بوده است الان این مشکل هست به نظرم شماره تراکنش time() . rand(0,10) باشه مشکل را رفع می کند

hamed-ehtesham commented 5 years ago

سلام وقت شما هم بخیر این همون چیزی بود که تعداد query ها رو زیاد کرده بود که من تعدادش رو کاهش دادم و قرار شد شما تست کنید که حالا تست کردید و معلوم شد که تعداد query ها رو نمیشه اینقدر کم کرد مگه این که به عنوان مثال از قالب این پایگاه داده ی رابطه ای خارج بشیم و مثلا از redis کمک بگیریم

aliqasemzadeh commented 5 years ago

سلام الان شماره تراکنش دقیقا از کجا می آید؟

hamed-ehtesham commented 5 years ago

(AI) auto-increment

aliqasemzadeh commented 5 years ago

خب باری هر درگاه باید متفاوت عمل بشه حداقل زمانی که به سمت خودش ارسال می شود

hamed-ehtesham commented 5 years ago

منظورتون رو متوجه نشدم

aliqasemzadeh commented 5 years ago

برای بانک ملت orderId باید یکتا باشه و غیر تکراری حالا فقط کافیه این عدد time() باشه هیچ وقت تکراری نمیشه

hamed-ehtesham commented 5 years ago

بله همین باعث میشه یه query به تعداد query ها اضافه بشه و همینطور ممکن هست بانک های دیگه هم همچین مشکلی داشته باشند

aliqasemzadeh commented 5 years ago

توی نسخه قبلی چطوری این قسمت یک گوئری بود؟ ما در زمان verify نیازه به orderId داریم؟

hamed-ehtesham commented 5 years ago

نسخه ی قبل:

    private function generateTimeID()
    {
        $generateUid = function () {
            return substr(str_pad(str_replace('.', '', microtime(true)), 12, 0), 0, 12);
        };
        $uid = $generateUid();
        while ($this->getTable()->where('id', $uid)->first()) {
            $uid = $generateUid();
        }
        return $uid;
    }
aliqasemzadeh commented 5 years ago

اگر از این استفاده کنیم چی میشه؟

hamed-ehtesham commented 5 years ago

😐😐 تعداد query ها زیاد میشه!!

aliqasemzadeh commented 5 years ago

@hamed-ehtesham سلام

خب بهتره برگردیم به حالت قبلی تا بتوانیم مشکلمون را رفع کنیم من این روزها دوباره فرصت کردم و دارم روی سیستم خودم کار می کنم که البته از سیستم شما هم استفاده می شود قطعا تست می کنم.

hamed-ehtesham commented 5 years ago

سلام بله به خاطر همین نسخه ی 2 رو روی alpha گزاشتیم که مشکلات در بیاد (بر میگردونیم به حالت قبل)