并感谢您的社区提供的大力帮助。
这是一个关于PayPal的问题。下面的代码创建一个立即购买的非托管按钮。我希望能够运行我的 geoTestArray.php 代码,目前只是包含在用户按下"立即购买"按钮时,而不是在页面上显示按钮时。
这可能吗?
提前感谢,
乔
<?php
include ('geoTestArray.php');
echo "<form action='"https://www.paypal.com/cgi-bin/webscr'" method='"post'">
<input type='"hidden'" name='"business'" value='"shop@mysite.com'">
<input type='"hidden'" name='"cmd'" value='"$cmd'">
<input type='"hidden'" name='"amount'" value='"$price'">
<input type='"hidden'" name='"shipping'" value='"$shipping'">
<input type='"hidden'" name='"currency_code'" value='"$currency'">
<input type='"hidden'" name='"shipto'" value='"$shipto'">
<input type='"hidden'" name='"item_name'" value='"$title'">";
if ($cmd == 'cart') {
echo "<input type='"hidden'" name='"add'" value='"1'">";
}
include('./quantities2.php');
echo "<input type='"hidden'" name='"lc'" value='"US'">
<input class='"submit'" type='"image'" src='"$button'" border='"0'" name='"submit'" alt='"$altaction'">
<img alt='"'" border='"0'" src='"https://www.paypal.com/en_US/i/scr/pixel.gif'" width='"1'" height='"1'">
</form>";
?>
您只能显示具有一个输入的表单,例如item_id。
提交此表单后,您可以搜索项目详细信息,在后端执行 geoTestArray.php然后您可以使用header("location: $query");
将用户重定向到PayPal
这是我会怎么做的:
<?php
if( isset($_POST['do_action']) && $_POST['do_action'] != "" ) {
//check for non-empty item_id field
//run your geoTestArray.php script
//get item details from database and build your paypal query
$query = "https://www.paypal.com/cgi-bin/webscr&cmd=_xclick"; // add rest of paypal request fields separated by &
header( "Location: $query" );
}
?>
<form action='' method='post'>
<input type='hidden' name='item_id' value'your_item_id'>
<input type='submit' name='do_action' value='Buy'>
<form>
希望我能帮到你! :d
感谢大家的评论和解决方案选项。我最终选择修改我页面上的onSubmit javascript,通过添加:
function InterceptForm(formObj) {
var newshipto = httpGet('geoTestArray.php');
formObj.shipto.value = newshipto;
}
上面的代码利用了这个其他堆栈溢出帖子中发布的httpGet()函数:
JavaScript 中的 HTTP GET 请求?
要完成拼图:
下面的代码在我的页面的 html 中
<script language="javascript">
// During onLoad, loop through all forms and for each form object do something
function InterceptForm(formobj) {
formobj.onsubmit = function ff() {
interceptform(formobj);
};
}
</script>
下面的代码收集页面上的所有表单,并在每个表单上运行上述 javascript(注意:您可能希望命名表单,以便仅在相关表单上运行脚本,而不是在所有表单上运行脚本):
<script language="javascript">
function GetForms() {
var formsCollection = document.getElementsByTagName("form");
for(var i=0;i<formsCollection.length;i++)
{
if (formsCollection[i].name != "seecart")
{
InterceptForm(formsCollection[i]);
}
}
return true;
}
</script>
下面的代码是 onLoad 函数:
<script language="javascript">
function onLoadFunction () {
GetForms();
return true;
}
</script>
干杯
乔