php - 在使用 php 成功进行 paypal 货币交易后提交表单

标签 php mysql forms transactions paypal

我做了一个表格。目前此表单执行以下操作:

  1. 客户填写表格(创建订单)
  2. 点击“提交”按钮
  3. 所有表单条目都输入到数据库中。

我想将其更改为执行以下操作:

  1. 客户填写表格
  2. 在表格的末尾有一个文本框显示此订单将花费他多少。
  3. 点击“提交”按钮(如果接受价格)
  4. 重定向到 Paypal
  5. 如果付款成功 -> 所有表单条目都输入到数据库中。否则 -> 回显“交易失败”。

这是我到目前为止所做的:

“form.php”内容

<html><head><title>Title</title></head><body>
<form action="php-form-processor.php" method="post">
    <table border="0" cellspacing="5" width = "500">
        <tr>
            <td align="right" width="160">Choose an Item:</td>
            <td align="left">
            <select name="formItem" value="<?=$varItem;?>" class="input_full" >
                <option value="1">Cheese</option>
            </select>
            </td>
        </tr>
        <tr bgcolor="#D0E8F5">
            <td align="right" >Item count:</td>
            <td align="left">
                <input type="text" name="formItemCount" maxlength="50" value="<?=$varItemCount = 1;?>"  class="input_full" />
            </td>
        </tr>
    </table>
    <p align="center">
    <input type="submit" name="formSubmit" align = "center" value="Submit" />
    </p>
</form></body></html>

“php-form-processor.php”内容

<?php
if($_POST['formSubmit'] == "Submit")
{
    $varItem = $_POST['formItem'];
    $varItemCount = $_POST['formItemCount'];

    //database stuff
    $username = "...";
    $password = "...";
    $hostname = "..."; 
 // connect and add to the database varItem and varItemCount
    mysql_query($sql);
    mysql_close($dbhandle);
}
?>

表单要大得多,但我已经简化了它的 stackoverflow 版本。订单价格必须根据“varItem”和“varItemCount”值而变化。基本上我想在将订单写入数据库之前添加“使用 PayPal 付款”选项。 附言我已经注册了 paypal Sandbox 帐户并添加了“买家”和“卖家”。

接下来我该做什么?

编辑:好的,这里有一个解决问题的小指南。这里有一些建议:

  • 首先,下载 paypal IPN 监听器包装器:https://github.com/Quixotix/PHP-PayPal-IPN
  • 然后注册 SandBox 帐户以及 1 个买家和 1 个卖家帐户
  • 以卖家身份登录并创建一个表单(使用非托管按钮!)
  • 将表单放入您的页面并通过“自定义”输入解析 ID 或任何其他必要信息(可以在此处找到一些有用的建议:http://www.devshed.com/c/a/PHP/Creating-a-Paypal-IPN-System-in-PHP-Part-Two/)
  • 现在在提交表单后重定向到此页面
  • 不要忘记在 paypal 卖家帐户中启用 IPN,并将 IPNlistener 链接输入必要的地址字段
  • 提交 paypal 表单并等待监听器的响应
  • 完成

整个过程是这样的:

  1. 客户填写表格
  2. 提交表单后 - 所有条目都写入数据库 + ID + 1 个称为“已付款”的附加字段,表示:1 - 如果客户为订单付款,0 - 如果没有
  3. 使用 header("Location: URL") 从 Form_Processing 重定向到 Paypal_Form
  4. 使用“ session ”将订单 ID 写入 session 或使用 POST 消息
  5. 提交 PaypalForm 并使用“自定义”字段作为我们订单 ID 的载体
  6. 设置监听器以按如下方式更新数据库:如果交易成功 -> 将数据库列“已付款”更新为 1(完成)。使用“自定义”字段中的 ID 选择所需的订单,即:

$sql = "UPDATE paypal_test SET payed = '1' WHERE id = '".$_POST['custom']."'";

现在我们有一个包含已完成和未完成表格的数据库。此外,您可以编写一个逻辑来删除“旧的”未完成订单。出于这个原因,您可以创建名为“日期”的附加列,然后进行比较:if (current_date.days - old_date.days > 7) -> 从数据库中删除。就是这样!

最佳答案

好吧,您几乎已经描述了您需要做什么:

  • 第 1 步:制作一个 onChange javascript,对值求和并将其发布到您想要的位置;
  • 第二步:提交后对值进行 php 检查(确保同时检查注入(inject)问题);
  • 第三:跳转到paypal等待回复;
  • 第四:根据paypals answer回显结果;

PS:我希望你不是在等待有人为你重写整个脚本 ;)

关于php - 在使用 php 成功进行 paypal 货币交易后提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11828411/

相关文章:

javascript - 如何在jquery中添加多个输入文本值

php - 在 PHP 变量中插入 PHP 代码

php - 在 php 中正确放置和命名 .pem 文件以用于苹果通知的位置

mysql - 使用 UNIQUE 索引好吗?

jquery - 在 html 表单提交上发布有序列表内容的最佳方式是什么?

javascript - 使用 Javascript 从 html 提交表单?

php - 如何节省用户退出时的时间?(已关闭)

mysql - 从内连接的第一条记录中获取列表

MySQL 服务器与 XAMPP

java - 使用计时器自动提交测试页面中的单选按钮