سلام دوستان من نمیدونم مشکل کدم کجاست که نمیشه به درگاه پی پینگ متصل بشم کسی علتشو میدونه این خطا رو میده
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 پیام بدین و موضوع رو مطرح کنید تا قدم به قدم راهنماییتون کنن. من با گرفتن کد مالیلاتی و ثبت اون در درگاه پرداختم مشکلم حل شد.
سازمان امور مالیاتی کشور
بچه من فهمیدم ...بچه هایی که مشکل منو دارند مربوط میشه به عدم داشتن ترمینال فعال که بعد اینکه ترمینال فعال شد این مشکل هم حل میشه
از خود پشتیبانی یه توکن تست بگیرید اگر ترمینالتون فعال نشده هنوز..
بعدش اکی میشه
بچه من فهمیدم ...بچه هایی که مشکل منو دارند مربوط میشه به عدم داشتن ترمینال فعال که بعد اینکه ترمینال فعال شد این مشکل هم حل میشه
از خود پشتیبانی یه توکن تست بگیرید اگر ترمینالتون فعال نشده هنوز..
بعدش اکی میشه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟