在按下PayPal立即购买按钮时运行自己的 php 脚本


Running own's php script upon pressin Paypal buy-now button

并感谢您的社区提供的大力帮助。

这是一个关于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>

干杯