【问题标题】:Insert into MySQL when POST form to Paypal当 POST 表单到 Paypal 时插入 MySQL
【发布时间】:2011-08-03 03:56:13
【问题描述】:

我已经为此苦苦挣扎了好几个小时,并且无法理解在用户单击“购买”按钮时在何处/如何调用 php 函数以将订单详细信息插入 MySQL(此时这样做可以让我跟踪转到 Paypal 然后被放弃的订单。

我想把它放在<form action=> 标记中(例如<form action='addToMySQL.php' method='post'>),但这就是Paypal 网址所在的位置,是吗?函数必须在服务器端运行,所以不能用js……那……怎么办?

cURL 已被推荐,我之前也看到过推荐,但用户是否仍会被重定向到 Paypal 的支付页面,然后返回我的网站?谁能推荐一个相关的网络教程?

我是网络编程新手,希望能提供详细信息。

创建要发送到 PayPal 的表单的函数是:

function create_paypal_checkout {
return "
<form action='".PAYPAL_URL."' method='post'>
    <input type='hidden' name = 'business' value='".PAYPAL_ID."' />
    <input type='hidden' name = 'cmd' value='_cart' />
    <input type='hidden' name = 'upload' value='1' />
    <input type='hidden' name = 'currency_code' value='USD' />
    <input type='hidden' name = 'lc' value='US' />
    <input type='hidden' name='rm' value='2' />
    <input type='hidden' name='cancel_return' value='http://www.mydomain.com/'>
    <input type='hidden' name='notify_url' value='http://www.mydomain.com/ipn-listener.php'>
    <input type='hidden' name='return' value='http://www.mydomain.com/thankyou.php?custIP=".$custip."' />

    " . render_shopping_cart($shopping_cart) . "

<table class='formBuyButton'>
<tr id='sc_total'>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td id='ppbutt'>
        <input type='image' name='submit' src='https://www.paypalobjects.com/WEBSCR-640-20110306-1/en_US/i/btn/btn_buynowCC_LG.gif' border='0' alt='PayPal - Buy Now' />
    </td>
</form></tr></table>" ;
}

【问题讨论】:

  • 您想要的是“回发”。表单直接提交到 Paypal,然后 Paypal 连接到您的服务器以传递交易详细信息。如果没有额外的后台处理以通过 CURL 将数据重新提交到 Paypal,您尝试执行的操作将无法正常工作。
  • 我的 paypal 的 IPN 系统工作正常(所有 4 个通信),thankyou.php 登陆页面工作正常,返回的 $_POST 值被解析并更新 mysql 表。但是,这些仅在用户完成贝宝交易时才会执行。我还希望跟踪从未完成的订单,因此需要在初始提交到贝宝时输入到 mysql。我不熟悉 CURL - 那么在这种情况下是这样吗?
  • 我不知道贝宝结帐过程的细节,但基本上你必须先以某种方式发布到你的网站以捕获数据,然后重定向/重新发布到贝宝。你如何做到这一点取决于你。 CURL 是从一台服务器向另一台服务器发出 http 请求的一种方式,但不是唯一的选择。

标签: php mysql paypal


【解决方案1】:

我遇到了同样的问题,我使用 ajax 解决了它。我所做的是在将表单提交到 Paypal 之前使用 ajax 调用 php 脚本。在这里,我使用了 jquery 的 post 函数,因为它更容易。你需要在某个地方有 jquery 并指向它。当用户提交表单时,首先调用mycall(),如果返回true,则将表单提交给PayPal。

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
    function mycall() {
        $.post('addToMySQL.php', {...}); // Replace ... with arguments
        return true;
    }
</script>

<form action='".PAYPAL_URL."' method='post' onSubmit='return mycall();'>

【讨论】:

  • 这看起来正是我想要的。谢谢。我对这一切都不熟悉:究竟是什么触发了 mycall() 函数?生成视图后,该函数是否正在运行并侦听 POST 事件?我有点不确定 { ...arguments... } 可能是什么样子:它只是用逗号分隔的 $vars 列表,如 {$custip, $numitems, $itemstring, $totalcost } ?
  • WHUPS,触发器很明显,我只是错过了它。我现在看到它是在表单操作中触发的:onSubmit='return mycall();'具有出色细节的完美示例;谢谢。
  • 关于发布功能的详细信息请参见api.jquery.com/jQuery.post。小心,它是 Javascript,而不是 php。格式为{名称:值,名称:值}。使用 如果您需要 PHP 的值,则作为值。
  • 啊,你预料到了我的错误并阻止了我。谢谢。我要列出php变量作为参数。也许我可以用 php 将它们保存到 cookie 中并使用 js 将它们读出? (我很确定 不会在这些圈子中工作,因为 html 是由 php 函数生成的)
猜你喜欢
  • 2017-11-04
  • 2023-03-20
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多