2011-12-20 5 views
3

Я пытаюсь интегрировать форму транзакции, которая использует установленную сумму. для этого проекта мне действительно нужно сделать транзакцию гибкой - редактируемой пользователем. вот код мне нужно настроить (я обрезать его немного вниз, чтобы показать ключевые части)set PHP значение перед отправкой

<?php 
require_once 'anet_php_sdk/AuthorizeNet.php'; 
$amount = "5.99"; 
?> 

<form method='post' action="https://secure.authorize.net/gateway/transact.dll"> 
<input type='hidden' name="x_amount" value="<?php echo $amount?>" /> 
<input type='submit' value="Click here for the secure payment form"> 
</form> 

я в основном хотел бы сделать, что «x_amount» переменная текстового ввода вместо скрытых; Мне нужен код, который бы отредактировал $ amount в PHP, чтобы он соответствовал тому, который пользователь вводит в поле ввода формы, затем отправляет форму как обычно ...

Я думаю, что это возможно с помощью ajax/JS onbeforesubmit hook , но не ясно, как это кодировать? или, может быть, есть более элегантный способ?

+1

Почему сумма должна быть доступна на PHP? Не могли бы вы просто разместить сумму вместе с формой? –

+0

Я думаю, он хочет сохранить его для пользователей. Таким образом, они могут установить/обновить свою '$ amount' позже. – Biotox

+0

@Kieran Я пробовал, но URL-адрес действия отклоняет это представление (когда $ amount и x_amount не совпадают). сумма $ должна измениться с заранее установленной, чтобы соответствовать типизированному x_amount, прямо перед отправкой формы ... – dubesor

ответ

2

Вам нужен сценарий, сообщения на другой сценарий, который устанавливает значение $ суммы.

setamount.php

<form method='post' action="confirm.php"> 
<input type='text' name="amount" value="" /> 
<input type='submit' value="Click here for the secure payment form"> 
</form> 

confirm.php

<?php 
require_once 'anet_php_sdk/AuthorizeNet.php'; 
$amount = $_POST['amount']; 
?> 


<form method='post' action="https://secure.authorize.net/gateway/transact.dll"> 
<input type='hidden' name="x_amount" value="<?php echo $_POST['amount']; ?>" /> 
<input type='submit' value="Click here for the secure payment form"> 
</form> 

Это, как представляется, решить проблему вы определили, но я не уверен, что API используется был предназначен для использования таким образом, и, вероятно, лучшее решение.

+0

thx. это сработало. Однако я буду искать лучшее решение. – dubesor

+0

хорошо, как только вы делаете $ _POST ['amount'], вам не нужно делать это снова, пока он находится на одной странице. Вы должны иметь возможность просто использовать сумму в вашей форме – Andres

+0

@ Аndres, как бы это было? не уверен в синтаксисе – dubesor

0

Вам нужен хотя бы текстовый файл. JS файл может быть использован

// js file 
var amount = "5.99"; 
window.onload=function() { 
    document.forms[0].x_amount.value=amount; // assuming first form on page 
} 


<script src='amount.js"></script> 
<form method='post' action="https://secure.authorize.net/gateway/transact.dll"> 
<input type='hidden' name="x_amount" value="" /> 
<input type='submit' value="Click here for the secure payment form"> 
</form> 
0

Я сделал это, и после объявления переменной и придав ему значение, как только страница загружена, то я могу использовать это значение в другом месте я необходимо.

<?php 
    //use some sort of escape for security reasons but thats another issue aside.. 
    $amount = mysql_escape_string($_POST['amount']); 
?> 
<html> 
<head> 
</head> 
<body> 
<form action="" method="post"> 
    <input type="text" value="<?php $amount ?>"/> 
</form> 
</body> 
</html> 

и что должно работать ..

+0

нет, это тоже не сработает. вы можете изменить значение таким образом, но оно не будет соответствовать $ amount и fail ... – dubesor

Смежные вопросы