Работа в полусложной системе пожертвований с несколькими платежными шлюзами и необходимо добавить несколько дополнительных полей в мою форму PayPal для хранения в базе данных. Возникли проблемы при передаче значений из основной формы в мой контроллер PayPal и сохранении в моей БД.
Вот небольшая разбивка того, как это работает.
Необязательные поля основной формы, прежде чем она попадет в платежные шлюзы
<input type="text" id="people" name="people" value="">
<select onchange="tripbehalf(this);" id="tripbehalf">
<option selected="true" value="">Optional Info</option>
<option value="x">This is for X.</option>
<option value="y">This is for Y</option>
<option value="z">Both Options</option>
</select>
-
Скрипт для захвата значений и отправки в форму PayPal
<script>
function updateExtraFields(fieldName, selector) {
$('form input[name="' + fieldName + '"]').val($(selector).val());
}
$('#tripbehalf').on('change', function() {
updateExtraFields('d_type', '#tripbehalf');
});
$('#people').on('change', function() {
updateExtraFields('people', '#people');
});
</script>
-
Форма PayPal получает значения и отправляет их в контроллер PayPal
<form action="{{ route('xxx.store') }}" method="post" target="_top">
<input type="hidden" name="amount" value=""/>
<input type="hidden" name="d_type" value=""/>
<input type="hidden" name="people" value=""/>
<button type="submit">PayPal</button>
</form>
-
Передать вышеуказанные значения контроллеру PayPal для использования при хранении данных
public function store(Request $request) {
$item = (new Item)
->setName('Poverty Resolutions Donation')
->setCurrency('USD')
->setQuantity(1)
->setPrice($request->amount);
$d_type=$request->d_type;
$people=$request->people;
dd($request->all()); // <--THIS RETURNS THE D_TYPE & PEOPLE CORRECT VALUE
return $this->paypal->setItems([$item])->charge($request->amount);
}
4,5 Как мне получить от 4 до 5
public function success(Request $request) {
if (empty($request->PayerID) || empty($request->token)) {
// TODO: Properly redirect with an error message
dd('No payer ID or no token');
}
$apiContext = $this->paypal->apiContext();
$execution = (new PaymentExecution)->setPayerId($request->PayerID);
$payment = Payment::get($request->paymentId, $apiContext)->execute($execution, $apiContext);
if ($payment->getState() !== 'approved') {
// TODO: Properly redirect with an error message
dd('Payment failed');
}
$payerInfo = $payment->getPayer()->getPayerInfo();
$paypalTransaction = PayPalTransaction::create([
'payer_id' => $payerInfo->getPayerId(),
'payment_id' => $payment->getId(),
]);
-
Необходимо передать значения D_TYPE & PEOPLE здесь и сохранить в базе данных.
$paypalTransaction->transactions()->create([
'user_id' => auth()->id(),
'customer_email' => $payerInfo->getEmail(),
'amount' => $payment->getTransactions()[0]->getAmount()->getTotal() * 100,
'recurring' => false,
'gift_trans_fee' => $request->gift_trans_fee === 'true',
'd_type' => $request->d_type,
'people' => $request->people,
]);
Нужна помощь, чтобы выяснить, как получить значения d_type
и people
в Part # 5
В части № 5 попытались 'd_type' => $d_type
& 'people' => $people
, но получили ошибку: Undefined variable: d_type
Даже если я получаю значение в части № 4