سلام دوستان من نمیدونم مشکل کدم کجاست که نمیشه به درگاه پی پینگ متصل بشم کسی علتشو میدونه این خطا رو میده
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
والا به پشتیبانی گفتم گفت بخاطر اینه ترمینال هنوز فعال نشده برات الان ک تست کردم اون خطا رفت ولی به سمت درگاه نمیره و ریدایرکت میشه به صفحه ایدکس سایت و پیغام موفقیت امیز میده که این اشتبلاهه
این متد اجرا میشه
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));
Client error: `POST https://api.payping.ir/v1/pay` resulted in a `400 Bad Request` response: {"Error":"ترمینال فعال برای پرداخت یافت نشد"}
سلام من هم با همچین مشکلی روبرو شدم چه کاری باید انجام بدم؟؟
@mehrdadroshanraee69
سلام دوست عزیز. این مشکل برای منم پیش اومده بود. شما آیا کد مالیاتی برای درگاه پرداختتون گرفتین؟ اگر خیر باید ابتدا به پشتیبانی payping پیام بدین و موضوع رو مطرح کنید تا قدم به قدم راهنماییتون کنن. من با گرفتن کد مالیلاتی و ثبت اون در درگاه پرداختم مشکلم حل شد.
سازمان امور مالیاتی کشور
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟