使用php成功完成paypal钱交易后提交表格

Ale*_*lex 6 php mysql forms transactions paypal

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

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

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

  1. 客户填写表格
  2. 在表格的最后有一个文本框显示这个订单将花费他很多.
  3. 点击"提交"按钮(如果接受价格)
  4. 重定向到贝宝
  5. 如果付款成功 - >所有表单条目都输入数据库.否则 - > echo"交易失败".

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

"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>
Run Code Online (Sandbox Code Playgroud)

"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);
}
?>
Run Code Online (Sandbox Code Playgroud)

表单更大,但我简化了stackoverflow的版本.订单的价格必须根据"varItem"和"varItemCount"值更改.基本上我想在将订单写入数据库之前添加"Pay with PayPal"选项.PS我已经注册了paypal Sandbox帐户,并添加了"买方"和"卖方".

接下来我该怎么办?

编辑:好的,所以这里有一个小指南如何解决问题.以下是一些建议:

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

整个过程看起来像这样:

  1. 客户填写表格
  2. 提交表格后 - 所有条目都写入数据库+ ID + 1附加字段,称为"付费",表示:1 - 如果客户支付订单,0 - 如果没有
  3. 使用标题("位置:URL")从Form_Processing重定向到Paypal_Form
  4. 使用"session"将订单ID写入会话或使用POST消息
  5. 提交PaypalForm并使用"自定义"字段作为我们订单ID的载体
  6. 设置监听器以更新数据库,如下所示:如果事务成功 - >将数据库列"付费"更新为1(完成).使用"自定义"字段中的ID来选择所需的顺序,即:

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

现在我们有一个包含已完成和未完成表单的数据库.另外,你可以写一个逻辑,删除"旧的"未完成的订单.因此,您可以创建名为"date"的其他列,然后比较:if(current_date.days - old_date.days> 7) - >从DB中删除.而已!

wil*_*ary 1

我不会接受 PayPal 回发给您的信息,这是一种检查用户身份验证的草率方式,并期望用户单击“返回网站”按钮。请改用 IPN (https://www.paypal.com/ipn/) 并确保将响应发回 PayPal 进行验证。

从 PayPal 查看此 PHP 示例:https://cms.paypal.com/uk/cgi-bin/ ?cmd=_render-content&content_ID=developer/e_howto_admin_IPNImplementation