'35', '1559924521', '42', 'تراکنش Sale یافت نشد', '2019-06-07 20:52:35'
اینجا نوشته
این مشکل برمیگرده به مقدار برگشتی
SaleReferenceId
که طولش زیاده و وقتی بعد از برگشت از خرید میخواهید
bpVerifyRequest
رو فراخوانی کنید اون مقدار واقعی که تو متغییر هست ارسال نمیشه و تبدیل میشه به
int
که مسلما نباید اینجوری بشه.
توجه کنید مقدار برگشتی از بانک بصورت string هست و مقداری که متد bpVerifyRequest میگیره long هست. پس باید تبدیل بشه. (float) رو قبل از مقدار SaleReferenceId قرار بدید مشکلتون حل میشه.
.saleOrderId يا شماره درخواست خريد: پس از انجام روند Sale سمت دروازه پرداخت و دريافت
پاسخ موفقيت آميز بودن آن، كه متعاقب آن سايت پذيرنده درخواست تاييد يا Verify صادر
مي نمايد، طي انجام اين روند سمت دروازه پرداخت، اين تراكنش تبديل به يك تراكنش خريد موفق
مي شود و به تبع آن درخواست خريد ارسالي براي اين مورد تبديل به درخواست خريد موفق
مي شود، يعني orderId مرحله Sale تبديل به saleOrderId مي شود و در طي مراحل بعد از
Sale از اين شماره بعنوان شناسه تراكنش خريد استفاده مي شود. orderId و saleOrderId توسط
پذيرنده توليد و براي دروازه پرداخت ارسال مي شود.
که من حدس میزنم بخاطر این تغییر من باشه
function getTimeId()
{
$genuid = function () {
return time();
};
$uid = $genuid();
while ($this->getTable()->whereId($uid)->exists()) {
sleep(0.5);
$uid = $genuid();
}
return $uid;
}
در فایل portabstract.php
همین تابع رو مجبور شدم تغییر بدم چون پیام خطا داشتم
تراکنش ساخته میشه کاربر میره بانک برمیگرده سپس این خطا رو میده
توی
gateway_transactions که یکی از جداول بانک ماست مقادیر اینهاست
id, port, price, ref_id, tracking_code, card_number, status, ip, description, payment_date, created_at, updated_at, deleted_at
'1559924521', 'MELLAT', '1000.00', '1E83CA054214AFD7', NULL, NULL, 'FAILED', '5.123.x.119', NULL, NULL, '2019-06-07 20:52:01', '2019-06-07 20:52:35', NULL
اینا مقادیره وقتی برمیگرده این رکورد ثبت میشه و اررور 42 میده
در جدول دیگر trasaction logs
id, transaction_id, result_code, result_message, log_date
'35', '1559924521', '42', 'تراکنش Sale یافت نشد', '2019-06-07 20:52:35'
اینجا نوشته این مشکل برمیگرده به مقدار برگشتی SaleReferenceId که طولش زیاده و وقتی بعد از برگشت از خرید میخواهید bpVerifyRequest رو فراخوانی کنید اون مقدار واقعی که تو متغییر هست ارسال نمیشه و تبدیل میشه به int که مسلما نباید اینجوری بشه.
توجه کنید مقدار برگشتی از بانک بصورت string هست و مقداری که متد bpVerifyRequest میگیره long هست. پس باید تبدیل بشه. (float) رو قبل از مقدار SaleReferenceId قرار بدید مشکلتون حل میشه.
.saleOrderId يا شماره درخواست خريد: پس از انجام روند Sale سمت دروازه پرداخت و دريافت پاسخ موفقيت آميز بودن آن، كه متعاقب آن سايت پذيرنده درخواست تاييد يا Verify صادر مي نمايد، طي انجام اين روند سمت دروازه پرداخت، اين تراكنش تبديل به يك تراكنش خريد موفق مي شود و به تبع آن درخواست خريد ارسالي براي اين مورد تبديل به درخواست خريد موفق مي شود، يعني orderId مرحله Sale تبديل به saleOrderId مي شود و در طي مراحل بعد از Sale از اين شماره بعنوان شناسه تراكنش خريد استفاده مي شود. orderId و saleOrderId توسط پذيرنده توليد و براي دروازه پرداخت ارسال مي شود.
که من حدس میزنم بخاطر این تغییر من باشه
در فایل portabstract.php
همین تابع رو مجبور شدم تغییر بدم چون پیام خطا داشتم
شاید مشکل از همین تغییر باشه
اما وقتی تغییر رو برمیگردونم به حالت اولش
id, transaction_id, result_code, result_message, log_date
'36', '155992906551', '41', 'شماره درخواست تکراری است', '2019-06-07 22:07:45'
شماره درخواست تکراری است رو ایجاد میکنه