Я пытаюсь интегрировать Payfast как платежный шлюз, и по какой-то причине он не работает.Все было хорошо, но сейчас в производстве все не работает.
Я начинаю с того, что получаю желаемую сумму, которую хотел бы заплатить:
<form class="reservation-form" method="post" action="{{route('photography.store')}}">
@csrf
<div class="form-group">
<input id="datetimepicker1" placeholder="Date and Time" type="text" name="date_and_time" class="form-control">
</div>
<div class="form-group">
<input placeholder="Enter Amount" type="number" name="deposit_amount" min="250" class="form-control">
</div>
<div class="form-group">
<textarea placeholder="Leave a message" class="form-control" name="message"></textarea>
</div>
<div class="form-group">
<button class="btn1 btn1-primary" type="submit">Book</button>
</div>
</form>
После отправки формы яменя перенаправляют на эту страницу:
https://myurl.co.za/payfast
, которая показывает мне кнопку «Оплатить здесь».
Затем после нажатия на эту кнопку я перенаправляюсь на страницу Payfast и вижу следующую ошибку:
Error The supplied variables are not according to specification:
signature : Generated signature does not match submitted signature
На изображении ниже следует отметить, что сумма, которую я набираю в форме, была пройдена.
Ниже приведены мои маршруты:
Route::get('payfast', 'PaymentsController@confirmPayment')->name('payfast.confirm');
Route::get('Success', 'PaymentsController@success')->name('payfast.success')->middleware('listing.details');
Route::get('Cancel', 'PaymentsController@cancel')->name('payfast.cancel')->middleware('listing.details');
Все записи, касающиеся бронирования, должны храниться в таблице, называемой бронированиями.
И ниже приведены все необходимые методы:
public function cancel(){
$payment_success = session('payment_success');
Booking::whereId($payment_success)->delete();
session()->flush();
return "Your payment failed";
}
public function success(){
$payment_success = session('payment_success');
Booking::whereId($payment_success)->update(['status'=> 1]);
$booking = Booking::whereId($payment_success)->where(['status'=> 1])->first();
$personal = session('personal');
$property = session('property');
}
public function confirmPayment(PaymentProcessor $payfast)
{
$nada = session('nada');
$order = Booking::create([
'deposit_amount' => $nada['deposit_amount'],
'date_and_time' => $nada['date_and_time'],
'message' => $nada['message'],
'status' => 0
]);
$payment_success = $order->id;
Session::put('payment_success', $payment_success);
$payfast->setBuyer('first name', 'last name', 'email');
$payfast->setAmount($order->deposit_amount);
$payfast->setItem('Photography Booking', 'item-description');
$payfast->setMerchantReference($order->id);
return $payfast->paymentForm('Pay Here');
}
В случае необходимости, у меня есть файл payfast.php внутри папки конфигурации в соответствии с инструкциями по документации, в которых я размещаю данные продавца и сайта:
return
[
'testing' => false,
'merchant' => [
'merchant_id' => '13192354',
'merchant_key' => 'vg0qcw17c5sxd',
'return_url' => 'https://mydomain.co.za/Success',
'cancel_url' => 'https://mydomain.co.za/Cancel',
'notify_url' => 'https://mydomain.co.za/itn',
],
'hosts' => [
'www.payfast.co.za',
'sandbox.payfast.co.za',
'w1w.payfast.co.za',
'w2w.payfast.co.za',
]
];
Это единственный пакет, который я нашел.