PHP产品列表页面要发布到付款表单的总金额
我正在使用SIM API通过我的网站运行信用卡支付。特别授权.net 我有一个产品,其中有一个产品列表、一个数量字段和一个购买按钮 如果客户更改数量,我需要更新发布的金额 这是我的密码:PHP产品列表页面要发布到付款表单的总金额,php,forms,payment-gateway,posting,Php,Forms,Payment Gateway,Posting,我正在使用SIM API通过我的网站运行信用卡支付。特别授权.net 我有一个产品,其中有一个产品列表、一个数量字段和一个购买按钮 如果客户更改数量,我需要更新发布的金额 这是我的密码: <?php // This sample code requires the mhash library for PHP versions older than // 5.1.2 - http://hmhash.sourceforge.net/ // the parameters for
<?php
// This sample code requires the mhash library for PHP versions older than
// 5.1.2 - http://hmhash.sourceforge.net/
// the parameters for the payment can be configured here
// the API Login ID and Transaction Key must be replaced with valid values
$loginID = "0000000";
$transactionKey = "00000000000000";
$amount = "3.99";
$description = "This is a Sample Transaction";
$label = "Purchase"; // The is the label on the 'submit' button
$testMode = "false";
// By default, this sample code is designed to post to our test server for
// developer accounts: https://test.authorize.net/gateway/transact.dll
// for real accounts (even in test mode), please make sure that you are
// posting to: https://secure.authorize.net/gateway/transact.dll
$url = "https://test.authorize.net/gateway/transact.dll";
// If an amount or description were posted to this page, the defaults are overidden
if (array_key_exists("amount",$_REQUEST))
{ $amount = $_REQUEST["amount"]; }
if (array_key_exists("amount",$_REQUEST))
{ $description = $_REQUEST["description"]; }
// an invoice is generated using the date and time
$invoice = date(YmdHis);
// a sequence number is randomly generated
$sequence = rand(1, 1000);
// a timestamp is generated
$timeStamp = time();
// The following lines generate the SIM fingerprint. PHP versions 5.1.2 and
// newer have the necessary hmac function built in. For older versions, it
// will try to use the mhash library.
if( phpversion() >= '5.1.2' )
{ $fingerprint = hash_hmac("md5", $loginID . "^" . $sequence . "^" . $timeStamp . "^" . $amount . "^", $transactionKey); }
else
{ $fingerprint = bin2hex(mhash(MHASH_MD5, $loginID . "^" . $sequence . "^" . $timeStamp . "^" . $amount . "^", $transactionKey)); }
?>
<!-- Print the Amount and Description to the screen. -->
Amount: <?php echo $amount; ?> <br />
Description: <?php echo $description; ?> <br />
<!-- Create the HTML form containing necessary SIM post values -->
<FORM method='post' action='https://test.authorize.net/gateway/transact.dll' >
<!-- Additional fields can be added here as outlined in the SIM integration
guide at: http://developer.authorize.net -->
<input type='hidden' name='x_login' value='<?php echo $loginID; ?>' />
<input type='hidden' name='x_amount' value='<?php echo $amount; ?>' />
<input type='hidden' name='x_description' value='<?php echo $description; ?>' />
<label>Quantity:</label><input type="text" name="quantity'" value="1" size="2" maxlength="3" />
<input type='hidden' name='x_invoice_num' value='<?php echo $invoice; ?>' />
<input type='hidden' name='x_fp_sequence' value='<?php echo $sequence; ?>' />
<input type='hidden' name='x_fp_timestamp' value='<?php echo $timeStamp; ?>' />
<input type='hidden' name='x_fp_hash' value='<?php echo $fingerprint; ?>' />
<input type='hidden' name='x_test_request' value='<?php echo $testMode; ?>' />
<input type='hidden' name='x_show_form' value='PAYMENT_FORM' />
<input type="hidden" name="x_logo_URL" value="https://secure.authorize.net/mgraphics/logo_322583_1.jpg">
<input type='submit' value='<?php echo $label; ?>' />
</form>
金额:
说明:
除非我不明白您想做什么,否则最好在用户将表单发布到authorize.net网站之前,使用Javascript将数量从1更新为用户想要的数量
这里的关键是在发布表单或单击链接并发出GET请求时记住事件的顺序
PHP是服务器端技术,因此它在向服务器发送指令时执行。例如,您将向PHP发送指令,如querymydb和get stuff,它将为您返回这些结果
一旦您在浏览器中显示数据,PHP就不能再参与进来,除非您向服务器发送另一个请求
相反,Javascript及其库(如JQuery)是浏览器工具,因此它们可以更改已知的内容。在本例中,您可以在POST事件发生之前,根据用户的选择,使用Javascript通知quantity字段进行更改
了解这些JS函数:
一旦改变
提交
document.write
document.getelementbyid
希望我不是在教你吃蛋。我认为你应该给你的表单起个名字,把Amount:
变成Amount:?php echo$Amount;?>代码>
然后在html标题中添加以下内容:
<script type='text/javascript>
function updateAmount(){
var amount = document.formName.amount.value;
var quantity = document.formName.quantity.value;
var total = amount * quantity;
document.getElementById("totalCost").value.write(total);
}
</script>
这绝对是正确的。我需要做的是用总成本更新$amount:
<label>Quantity:</label><input type="text" name="quantity'" value="1" size="2" maxlength="3" onChange="updateAmount()"/>