diff --git a/src/Drivers/SEP/SEP.php b/src/Drivers/SEP/SEP.php index f766960..4595867 100644 --- a/src/Drivers/SEP/SEP.php +++ b/src/Drivers/SEP/SEP.php @@ -195,10 +195,10 @@ protected function createReceipt($referenceId) protected function purchaseFailed($status) { $translations = array( - 1 => ' تراکنش توسط خریدار کنسل شده است.', + 1 => ' تراکنش توسط خریدار لغو شده است.', 2 => 'پرداخت با موفقیت انجام شد.', 3 => 'پرداخت انجام نشد.', - 4 => 'کاربر در بازه زمانی تعیین شده پاسخی ارسال نکرده است.', + 4 => 'کاربر در بازه زمانی تعیین شده پاسخی ارسال نکرده است.', 5 => 'پارامترهای ارسالی نامعتبر است.', 8 => 'آدرس سرور پذیرنده نامعتبر است.', 9 => 'رمز کارت 3 مرتبه اشتباه وارد شده است در نتیجه کارت غیر فعال خواهد شد.', @@ -225,8 +225,8 @@ private function notVerified($status) { $translations = array( -2 => ' تراکنش یافت نشد.', - -6 => 'بیش از نیم ساعت از زمان اجرای تراکنش گذشته است.', - 2 => 'کاربر در بازه زمانی تعیین شده پاسخی ارسال نکرده است.', + -6 => 'بیش از 30 دقیقه از زمان اجرای تراکنش گذشته است.', + 2 => 'کاربر در بازه زمانی تعیین شده پاسخی ارسال نکرده است.', -104 => 'پارامترهای ارسالی نامعتبر است.', -105 => 'آدرس سرور پذیرنده نامعتبر است.', -106 => 'رمز کارت 3 مرتبه اشتباه وارد شده است در نتیجه کارت غیر فعال خواهد شد.', diff --git a/src/Drivers/Saman/Saman.php b/src/Drivers/Saman/Saman.php index b242c31..ff45955 100644 --- a/src/Drivers/Saman/Saman.php +++ b/src/Drivers/Saman/Saman.php @@ -178,7 +178,7 @@ protected function purchaseFailed($status) { $translations = array( -1 => ' تراکنش توسط خریدار کنسل شده است.', - -6 => 'سند قبال برگشت کامل یافته است. یا خارج از زمان 30 دقیقه ارسال شده است.', + -6 => 'سند قابل برگشت کامل یافته است. یا خارج از زمان 30 دقیقه ارسال شده است.', -18 => 'IP Address فروشنده نا‌معتبر است.', 79 => 'مبلغ سند برگشتی، از مبلغ تراکنش اصلی بیشتر است.', 12 => 'درخواست برگشت یک تراکنش رسیده است، در حالی که تراکنش اصلی پیدا نمی شود.', @@ -190,7 +190,7 @@ protected function purchaseFailed($status) 61 => 'مبلغ بیش از سقف برداشت می باشد.', 93 => 'تراکنش Authorize شده است (شماره PIN و PAN درست هستند) ولی امکان سند خوردن وجود ندارد.', 68 => 'تراکنش در شبکه بانکی Timeout خورده است.', - 34 => 'خریدار یا فیلد CVV2 و یا فیلد ExpDate را اشتباه وارد کرده است (یا اصال وارد نکرده است).', + 34 => 'خریدار یا فیلد CVV2 و یا فیلد ExpDate را اشتباه وارد کرده است (یا اصلا وارد نکرده است).', 51 => 'موجودی حساب خریدار، کافی نیست.', 84 => 'سیستم بانک صادر کننده کارت خریدار، در وضعیت عملیاتی نیست.', 96 => 'کلیه خطاهای دیگر بانکی باعث ایجاد چنین خطایی می گردد.', @@ -214,16 +214,16 @@ private function notVerified($status) { $translations = array( -1 => 'خطا در پردازش اطلاعات ارسالی (مشکل در یکی از ورودی ها و ناموفق بودن فراخوانی متد برگشت تراکنش)', - -3 => 'ورودیها حاوی کارکترهای غیرمجاز میباشند.', + -3 => 'ورودی ها حاوی کارکترهای غیرمجاز میباشند.', -4 => 'کلمه عبور یا کد فروشنده اشتباه است (Merchant Authentication Failed)', - -6 => 'سند قبال برگشت کامل یافته است. یا خارج از زمان 30 دقیقه ارسال شده است.', + -6 => 'سند قابل برگشت کامل یافته است. یا خارج از زمان 30 دقیقه ارسال شده است.', -7 => 'رسید دیجیتالی تهی است.', - -8 => 'طول ورودیها بیشتر از حد مجاز است.', + -8 => 'طول ورودی ها بیشتر از حد مجاز است.', -9 => 'وجود کارکترهای غیرمجاز در مبلغ برگشتی.', -10 => 'رسید دیجیتالی به صورت Base64 نیست (حاوی کاراکترهای غیرمجاز است)', - -11 => 'طول ورودیها ک تر از حد مجاز است.', + -11 => 'طول ورودی ها کمتر از حد مجاز است.', -12 => 'مبلغ برگشتی منفی است.', - -13 => 'مبلغ برگشتی برای برگشت جزئی بیش از مبلغ برگشت نخوردهی رسید دیجیتالی است.', + -13 => 'مبلغ برگشتی برای برگشت جزئی بیش از مبلغ برگشت نخورده ی رسید دیجیتالی است.', -14 => 'چنین تراکنشی تعریف نشده است.', -15 => 'مبلغ برگشتی به صورت اعشاری داده شده است.', -16 => 'خطای داخلی سیستم', diff --git a/src/Drivers/Zarinpal/Strategies/Normal.php b/src/Drivers/Zarinpal/Strategies/Normal.php index e4930c8..bfd0f1d 100644 --- a/src/Drivers/Zarinpal/Strategies/Normal.php +++ b/src/Drivers/Zarinpal/Strategies/Normal.php @@ -99,9 +99,9 @@ public function purchase() $result = json_decode($response->getBody()->getContents(), true); - // some error has happened if (!empty($result['errors']) || empty($result['data']) || $result['data']['code'] != 100) { - throw new PurchaseFailedException($result['errors']['message'], $result['errors']['code']); + $bodyResponse = $result['errors']['code']; + throw new PurchaseFailedException($this->translateStatus($bodyResponse), $bodyResponse); } $this->invoice->transactionId($result['data']["authority"]); @@ -155,20 +155,14 @@ public function verify(): ReceiptInterface $result = json_decode($response->getBody()->getContents(), true); - if ( - empty($result['data']) - || !isset($result['data']['ref_id']) - || ($result['data']['code'] != 100 && $result['data']['code'] != 101) - ) { - $message = $result['errors']['message'] ?? ""; - $code = $result['errors']['code']; - throw new InvalidPaymentException($message, $code); + if (empty($result['data']) || !isset($result['data']['ref_id']) || ($result['data']['code'] != 100 && $result['data']['code'] != 101)) { + $bodyResponse = $result['errors']['code']; + throw new InvalidPaymentException($this->translateStatus($bodyResponse), $bodyResponse); } - if ($result['data']['code'] == 101) { - $message = $result['data']['message'] ?? ""; - $code = $result['data']['code']; - throw new InvalidPaymentException($message, $code); + $bodyResponse = $result['data']['code']; + if ($bodyResponse == 101) { + throw new InvalidPaymentException($this->translateStatus($bodyResponse), $bodyResponse); } return $this->createReceipt($result['data']['ref_id']); @@ -215,4 +209,41 @@ protected function getVerificationUrl(): string { return $this->settings->apiVerificationUrl; } + + /** + * Convert status to a readable message. + * + * @param $status + * + * @return mixed|string + */ + private function translateStatus($status) + { + $translations = [ + '100' => 'تراکنش با موفقیت انجام گردید', + '101' => 'عمليات پرداخت موفق بوده و قبلا عملیات وریفای تراكنش انجام شده است', + '-9' => 'خطای اعتبار سنجی', + '-10' => 'ای پی و يا مرچنت كد پذيرنده صحيح نمی باشد', + '-11' => 'مرچنت کد فعال نیست لطفا با تیم پشتیبانی ما تماس بگیرید', + '-12' => 'تلاش بیش از حد در یک بازه زمانی کوتاه', + '-15' => 'ترمینال شما به حالت تعلیق در آمده با تیم پشتیبانی تماس بگیرید', + '-16' => 'سطح تاييد پذيرنده پايين تر از سطح نقره ای می باشد', + '-30' => 'اجازه دسترسی به تسویه اشتراکی شناور ندارید', + '-31' => 'حساب بانکی تسویه را به پنل اضافه کنید مقادیر وارد شده برای تسهیم صحيح نمی باشد', + '-32' => 'مقادیر وارد شده برای تسهیم صحيح نمی باشد', + '-33' => 'درصد های وارد شده صحيح نمی باشد', + '-34' => 'مبلغ از کل تراکنش بیشتر است', + '-35' => 'تعداد افراد دریافت کننده تسهیم بیش از حد مجاز است', + '-40' => 'پارامترهای اضافی نامعتبر، expire_in معتبر نیست', + '-50' => 'مبلغ پرداخت شده با مقدار مبلغ در وریفای متفاوت است', + '-51' => 'پرداخت ناموفق', + '-52' => 'خطای غیر منتظره با پشتیبانی تماس بگیرید', + '-53' => 'اتوریتی برای این مرچنت کد نیست', + '-54' => 'اتوریتی نامعتبر است', + ]; + + $unknownError = 'خطای ناشناخته رخ داده است. در صورت کسر مبلغ از حساب حداکثر پس از 72 ساعت به حسابتان برمیگردد'; + + return array_key_exists($status, $translations) ? $translations[$status] : $unknownError; + } } diff --git a/src/Drivers/Zarinpal/Strategies/Sandbox.php b/src/Drivers/Zarinpal/Strategies/Sandbox.php index 3b68064..3ba578a 100644 --- a/src/Drivers/Zarinpal/Strategies/Sandbox.php +++ b/src/Drivers/Zarinpal/Strategies/Sandbox.php @@ -77,10 +77,9 @@ public function purchase() $client = new \SoapClient($this->getPurchaseUrl(), ['encoding' => 'UTF-8']); $result = $client->PaymentRequest($data); - if ($result->Status != 100 || empty($result->Authority)) { - // some error has happened - $message = $this->translateStatus($result->Status); - throw new PurchaseFailedException($message, $result->Status); + $bodyResponse = $result->Status; + if ($bodyResponse != 100 || empty($result->Authority)) { + throw new PurchaseFailedException($this->translateStatus($bodyResponse), $bodyResponse); } $this->invoice->transactionId($result->Authority); @@ -124,9 +123,9 @@ public function verify() : ReceiptInterface $client = new \SoapClient($this->getVerificationUrl(), ['encoding' => 'UTF-8']); $result = $client->PaymentVerification($data); - if ($result->Status != 100) { - $message = $this->translateStatus($result->Status); - throw new InvalidPaymentException($message, $result->Status); + $bodyResponse = $result->Status; + if ($bodyResponse != 100) { + throw new InvalidPaymentException($this->translateStatus($bodyResponse), $bodyResponse); } return $this->createReceipt($result->RefID); @@ -144,38 +143,6 @@ public function createReceipt($referenceId) return new Receipt('zarinpal', $referenceId); } - /** - * Convert status to a readable message. - * - * @param $status - * - * @return mixed|string - */ - private function translateStatus($status) - { - $translations = array( - "-1" => "اطلاعات ارسال شده ناقص است.", - "-2" => "IP و يا مرچنت كد پذيرنده صحيح نيست", - "-3" => "با توجه به محدوديت هاي شاپرك امكان پرداخت با رقم درخواست شده ميسر نمي باشد", - "-4" => "سطح تاييد پذيرنده پايين تر از سطح نقره اي است.", - "-11" => "درخواست مورد نظر يافت نشد.", - "-12" => "امكان ويرايش درخواست ميسر نمي باشد.", - "-21" => "هيچ نوع عمليات مالي براي اين تراكنش يافت نشد", - "-22" => "تراكنش نا موفق ميباشد", - "-33" => "رقم تراكنش با رقم پرداخت شده مطابقت ندارد", - "-34" => "سقف تقسيم تراكنش از لحاظ تعداد يا رقم عبور نموده است", - "-40" => "اجازه دسترسي به متد مربوطه وجود ندارد.", - "-41" => "اطلاعات ارسال شده مربوط به AdditionalData غيرمعتبر ميباشد.", - "-42" => "مدت زمان معتبر طول عمر شناسه پرداخت بايد بين 30 دقيه تا 45 روز مي باشد.", - "-54" => "درخواست مورد نظر آرشيو شده است", - "101" => "عمليات پرداخت موفق بوده و قبلا PaymentVerification تراكنش انجام شده است.", - ); - - $unknownError = 'خطای ناشناخته رخ داده است.'; - - return array_key_exists($status, $translations) ? $translations[$status] : $unknownError; - } - /** * Retrieve purchase url * @@ -205,4 +172,41 @@ protected function getVerificationUrl() : string { return $this->settings->sandboxApiVerificationUrl; } + + /** + * Convert status to a readable message. + * + * @param $status + * + * @return mixed|string + */ + private function translateStatus($status) + { + $translations = [ + '100' => 'تراکنش با موفقیت انجام گردید', + '101' => 'عمليات پرداخت موفق بوده و قبلا عملیات وریفای تراكنش انجام شده است', + '-9' => 'خطای اعتبار سنجی', + '-10' => 'ای پی و يا مرچنت كد پذيرنده صحيح نمی باشد', + '-11' => 'مرچنت کد فعال نیست لطفا با تیم پشتیبانی ما تماس بگیرید', + '-12' => 'تلاش بیش از حد در یک بازه زمانی کوتاه', + '-15' => 'ترمینال شما به حالت تعلیق در آمده با تیم پشتیبانی تماس بگیرید', + '-16' => 'سطح تاييد پذيرنده پايين تر از سطح نقره ای می باشد', + '-30' => 'اجازه دسترسی به تسویه اشتراکی شناور ندارید', + '-31' => 'حساب بانکی تسویه را به پنل اضافه کنید مقادیر وارد شده برای تسهیم صحيح نمی باشد', + '-32' => 'مقادیر وارد شده برای تسهیم صحيح نمی باشد', + '-33' => 'درصد های وارد شده صحيح نمی باشد', + '-34' => 'مبلغ از کل تراکنش بیشتر است', + '-35' => 'تعداد افراد دریافت کننده تسهیم بیش از حد مجاز است', + '-40' => 'پارامترهای اضافی نامعتبر، expire_in معتبر نیست', + '-50' => 'مبلغ پرداخت شده با مقدار مبلغ در وریفای متفاوت است', + '-51' => 'پرداخت ناموفق', + '-52' => 'خطای غیر منتظره با پشتیبانی تماس بگیرید', + '-53' => 'اتوریتی برای این مرچنت کد نیست', + '-54' => 'اتوریتی نامعتبر است', + ]; + + $unknownError = 'خطای ناشناخته رخ داده است. در صورت کسر مبلغ از حساب حداکثر پس از 72 ساعت به حسابتان برمیگردد'; + + return array_key_exists($status, $translations) ? $translations[$status] : $unknownError; + } } diff --git a/src/Drivers/Zarinpal/Strategies/Zaringate.php b/src/Drivers/Zarinpal/Strategies/Zaringate.php index 4db99ff..58f9d98 100644 --- a/src/Drivers/Zarinpal/Strategies/Zaringate.php +++ b/src/Drivers/Zarinpal/Strategies/Zaringate.php @@ -77,10 +77,9 @@ public function purchase() $client = new \SoapClient($this->getPurchaseUrl(), ['encoding' => 'UTF-8']); $result = $client->PaymentRequest($data); - if ($result->Status != 100 || empty($result->Authority)) { - // some error has happened - $message = $this->translateStatus($result->Status); - throw new PurchaseFailedException($message, $result->Status); + $bodyResponse = $result->Status; + if ($bodyResponse != 100 || empty($result->Authority)) { + throw new PurchaseFailedException($this->translateStatus($bodyResponse), $bodyResponse); } $this->invoice->transactionId($result->Authority); @@ -124,9 +123,9 @@ public function verify() : ReceiptInterface $client = new \SoapClient($this->getVerificationUrl(), ['encoding' => 'UTF-8']); $result = $client->PaymentVerification($data); - if ($result->Status != 100) { - $message = $this->translateStatus($result->Status); - throw new InvalidPaymentException($message, $result->Status); + $bodyResponse = $result->Status; + if ($bodyResponse != 100) { + throw new InvalidPaymentException($this->translateStatus($bodyResponse), $bodyResponse); } return $this->createReceipt($result->RefID); @@ -144,38 +143,6 @@ public function createReceipt($referenceId) return new Receipt('zarinpal', $referenceId); } - /** - * Convert status to a readable message. - * - * @param $status - * - * @return mixed|string - */ - private function translateStatus($status) - { - $translations = array( - "-1" => "اطلاعات ارسال شده ناقص است.", - "-2" => "IP و يا مرچنت كد پذيرنده صحيح نيست", - "-3" => "با توجه به محدوديت هاي شاپرك امكان پرداخت با رقم درخواست شده ميسر نمي باشد", - "-4" => "سطح تاييد پذيرنده پايين تر از سطح نقره اي است.", - "-11" => "درخواست مورد نظر يافت نشد.", - "-12" => "امكان ويرايش درخواست ميسر نمي باشد.", - "-21" => "هيچ نوع عمليات مالي براي اين تراكنش يافت نشد", - "-22" => "تراكنش نا موفق ميباشد", - "-33" => "رقم تراكنش با رقم پرداخت شده مطابقت ندارد", - "-34" => "سقف تقسيم تراكنش از لحاظ تعداد يا رقم عبور نموده است", - "-40" => "اجازه دسترسي به متد مربوطه وجود ندارد.", - "-41" => "اطلاعات ارسال شده مربوط به AdditionalData غيرمعتبر ميباشد.", - "-42" => "مدت زمان معتبر طول عمر شناسه پرداخت بايد بين 30 دقيه تا 45 روز مي باشد.", - "-54" => "درخواست مورد نظر آرشيو شده است", - "101" => "عمليات پرداخت موفق بوده و قبلا PaymentVerification تراكنش انجام شده است.", - ); - - $unknownError = 'خطای ناشناخته رخ داده است.'; - - return array_key_exists($status, $translations) ? $translations[$status] : $unknownError; - } - /** * Retrieve purchase url * @@ -205,4 +172,41 @@ protected function getVerificationUrl() : string { return $this->settings->zaringateApiVerificationUrl; } + + /** + * Convert status to a readable message. + * + * @param $status + * + * @return mixed|string + */ + private function translateStatus($status) + { + $translations = [ + '100' => 'تراکنش با موفقیت انجام گردید', + '101' => 'عمليات پرداخت موفق بوده و قبلا عملیات وریفای تراكنش انجام شده است', + '-9' => 'خطای اعتبار سنجی', + '-10' => 'ای پی و يا مرچنت كد پذيرنده صحيح نمی باشد', + '-11' => 'مرچنت کد فعال نیست لطفا با تیم پشتیبانی ما تماس بگیرید', + '-12' => 'تلاش بیش از حد در یک بازه زمانی کوتاه', + '-15' => 'ترمینال شما به حالت تعلیق در آمده با تیم پشتیبانی تماس بگیرید', + '-16' => 'سطح تاييد پذيرنده پايين تر از سطح نقره ای می باشد', + '-30' => 'اجازه دسترسی به تسویه اشتراکی شناور ندارید', + '-31' => 'حساب بانکی تسویه را به پنل اضافه کنید مقادیر وارد شده برای تسهیم صحيح نمی باشد', + '-32' => 'مقادیر وارد شده برای تسهیم صحيح نمی باشد', + '-33' => 'درصد های وارد شده صحيح نمی باشد', + '-34' => 'مبلغ از کل تراکنش بیشتر است', + '-35' => 'تعداد افراد دریافت کننده تسهیم بیش از حد مجاز است', + '-40' => 'پارامترهای اضافی نامعتبر، expire_in معتبر نیست', + '-50' => 'مبلغ پرداخت شده با مقدار مبلغ در وریفای متفاوت است', + '-51' => 'پرداخت ناموفق', + '-52' => 'خطای غیر منتظره با پشتیبانی تماس بگیرید', + '-53' => 'اتوریتی برای این مرچنت کد نیست', + '-54' => 'اتوریتی نامعتبر است', + ]; + + $unknownError = 'خطای ناشناخته رخ داده است. در صورت کسر مبلغ از حساب حداکثر پس از 72 ساعت به حسابتان برمیگردد'; + + return array_key_exists($status, $translations) ? $translations[$status] : $unknownError; + } }