مهرداد
4 سال پیش توسط مهرداد مطرح شد
7 پاسخ

خطا هنگام اتصال به درگاه payping

سلام دوستان من نمیدونم مشکل کدم کجاست که نمیشه به درگاه پی پینگ متصل بشم کسی علتشو میدونه این خطا رو میده

Client error: `POST https://api.payping.ir/v1/pay` resulted in a `400 Bad Request` response: {"Error":"ترمینال فعال برای پرداخت یافت نشد"}
class PayPing implements GatewayContract
{
    public function pay(Order $order)
    {
        $token = "070b9046e29d5a7fb0ec2dac0c6778cce32ce6bdc6298068c4dcafc304ae26e3";
        //TODO aamount $order->price
        $args = [
            "amount" => 1000,
            "payerName" => auth()->user()->fullName,
            "returnUrl" => $this->redirect(),
            "clientRefId" => $order->code
        ];

        $payment = new \PayPing\Payment($token);

        try {
            $payment->pay($args);
        } catch (\Exception $e) {
            throw $e;
        }
        //echo $payment->getPayUrl();

        return redirect($payment->getPayUrl());
    }

    public function verify(Request $request)
    {

    }

    public function redirect()
    {
        return route('payment.verify', $this->getName());
    }
    public function getName():string
    {
        return 'payping';
    }
}

این متدم از یه قرار داد داره پیروی میکنه تو این فایل

interface GatewayContract
{
    const TRANSACTION_FAILED = 'transaction.failed';
    const TRANSACTION_SUCCESS = 'transaction.success';

    public function pay(Order $order);

    public function verify(Request $request);

    public function getName():string;
    public function redirect();

}

و اینجا توی کلاسم من  اومدم  سفارش و پرداخت رو نوشتم و  درگاه پرداخت  رو به این صورت  نوشتم که  بشه تو سیستم از چند درگاه پرداخت استفاده کرد
class Transaction
{
    private $request;

    function __construct(Request $request)
    {
        $this->request = $request;
    }

    public function checkout()
    {
        $cart = Cart::findOrFail($this->request->input('cart_id'));

        $order = $this->makeOrder($cart);
        $payment = $this->makePayment($order);
        return $this->gatewayFactory()->pay($order);

        $cart->delete();
    }

    private function makeOrder($cart)
    {
        $order = auth()->user()->orders()->create([
            'code' => bin2hex(Str::random(16)),
            'price' => $cart->total_price,
            'status' => 'pending' ,
        ]);

        $order->courses()->attach($cart->courses);
        return $order;

    }

    private function makePayment($order)
    {
        return Payment::create([
            'order_id' => $order->id,
            'amount' => $order->price,
        ]);
    }

    private function gatewayFactory()
    {
         $gateway = [
            'zarinpal' => Zarinpal::class,
            'payping' => PayPing::class,
         ][$this->request->gateway];

         return resolve($gateway);
    }
}

@hosseinshirinegad98
@mhyeganeh
@ali.bayat
@muhammad
@nimageneral
@abedim910
@hesammousavi


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
1

ترمینال فعال برای پرداخت یافت نشد

شماره ترمینال رو چک کردید ؟


مهرداد
@mehrdadroshanraee69 4 سال پیش آپدیت شد
-1

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

    public function checkout(Request $request)
    {

        $order = $this->transaction->checkout();

        Alert::success('موفقیت آمیز', 'پرداخت شما با موفقیت انجام شد', 'success')
            ->showConfirmButton($btnText = 'بسیار خوب', $btnColor = '#3085d6')
            ->autoClose($milliseconds = 4000);;
        return redirect('/');
    }

یعنی متد checkout اون خطی که صدا زدم و کدهای زیر رو باید بره پردازش کنه رو نادیده میگیره

 public function checkout()
    {
        $cart = Cart::findOrFail($this->request->input('cart_id'));

        $order = $this->makeOrder($cart);
        $payment = $this->makePayment($order);
        return $this->gatewayFactory()->pay($order);

        $cart->delete();
    }

    private function makeOrder($cart)
    {
        $order = auth()->user()->orders()->create([
            'code' => bin2hex(Str::random(16)),
            'price' => $cart->total_price,
            'status' => 'pending' ,
        ]);

        $order->courses()->attach($cart->courses);
        return $order;

    }

    private function makePayment($order)
    {
        return Payment::create([
            'order_id' => $order->id,
            'amount' => $order->price,
        ]);
    }

    private function gatewayFactory()
    {
         $gateway = [
            'zarinpal' => Zarinpal::class,
            'payping' => PayPing::class,
         ][$this->request->gateway];

         return resolve($gateway);
    }

این مقدار رو تیست میگیرم نال میده

class PayPing implements GatewayContract
{
    public function request(Order $order)
    {
        $token = "f8bca88810d6a6e4b5d52b8ce571a24f5b7d2f456681e6d6e4b995eb989e346b";
        //TODO aamount $order->price
        $args = [
            "amount" => 1000,
            "payerName" => auth()->user()->fullName,
            "returnUrl" => $this->redirect(),
            "clientRefId" => $order->code
        ];

        $payment = new \PayPing\Payment($token);

        try {
            $payment->pay($args);
        } catch (\Exception $e) {
            throw $e;
        }
        //echo $payment->getPayUrl();

        return redirect($payment->getPayUrl());
    }
dd($payment->pay($args));

محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 4 سال پیش مطرح شد
0

من هم دقیقا الان با این خطا مواجه شدم


AHAD.h
@ahad.hjivand 3 سال پیش مطرح شد
0

Client error: `POST https://api.payping.ir/v1/pay` resulted in a `400 Bad Request` response: {"Error":"ترمینال فعال برای پرداخت یافت نشد"}
سلام من هم با همچین مشکلی روبرو شدم چه کاری باید انجام بدم؟؟


احمد
@ahmad316948 3 سال پیش مطرح شد
0

@mehrdadroshanraee69
سلام دوست عزیز. این مشکل برای منم پیش اومده بود. شما آیا کد مالیاتی برای درگاه پرداختتون گرفتین؟ اگر خیر باید ابتدا به پشتیبانی payping پیام بدین و موضوع رو مطرح کنید تا قدم به قدم راهنماییتون کنن. من با گرفتن کد مالیلاتی و ثبت اون در درگاه پرداختم مشکلم حل شد.
سازمان امور مالیاتی کشور


سمیرا
@samiraazemati 3 ماه پیش مطرح شد
0

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


سمیرا
@samiraazemati 3 ماه پیش مطرح شد
0

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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام