使用php成功进行贝宝货币交易后提交表单


submitting the form after successful paypal money transaction using php

我制作了一个表单。目前这个表单执行以下操作:

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

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

  1. 客户填写表格
  2. 在表格的最后有一个文本框,显示了这个订单将花费他多少钱
  3. 点击"提交"按钮(如果接受价格)
  4. 重定向到贝宝
  5. 如果付款成功->所有表单条目都会输入到数据库中。Else->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>

"php表单处理器.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"answers"varItemCount"值而变化。基本上,我想在将订单写入数据库之前添加"PayPal支付"选项。附言:我已经注册了贝宝沙盒账户,并添加了"买家"answers"卖家"。

我下一步该怎么办?

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

  • 首先,下载贝宝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/)
  • 现在在表单提交后重定向到此页面
  • 不要忘记在贝宝卖家账户启用IPN,并在必要的地址字段中输入IPNlistener链接
  • 提交一个paypal表单并等待监听器的响应
  • 已完成

整个过程如下:

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

$sql="UPDATE paypal_test SET payed='1'WHERE id='"$_POST[自定义]。"'";

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

好吧,你已经描述了你需要做的事情:

  • 第一:制作一个onChange javascript,将值汇总并发布在您想要的位置
  • 第二:在提交后对值进行php检查(确保也检查注入问题)
  • 第三:重定向到贝宝,等待答案
  • 第四:根据网友的回答呼应结果

附言:我希望你不是在等待有人真正为你重写整个剧本;)

我不会接受PayPal回复给你的内容,这是一种检查用户身份验证的草率方式,希望用户点击"返回网站"按钮。而是使用IPN(https://www.paypal.com/ipn/)并确保您将回复发送回PayPal进行验证。

从PayPal中查看此PHP示例:https://cms.paypal.com/uk/cgi-bin/?cmd=_render-内容&content_ID=developer/e_howto_admin_IPN实现

派对迟到了。。。。但在2021年试试这个。。

如果你想将自定义表单与paypal智能支付按钮结合使用(https://developer.paypal.com/docs/checkout/)那么你可以试试这种方法。这对我来说很有效,你也不需要IPN(下面的方法是最新的,速度更快)。

在您的前端使用此(您可以将表单数据发送到服务器):
https://developer.paypal.com/demo/checkout/#/pattern/server

在您的后端使用此(我将创建和捕获代码放在一个文件中):
创建订单:
https://developer.paypal.com/docs/checkout/reference/server-integration/set-up-transaction/
要获取订单:
https://developer.paypal.com/docs/checkout/reference/server-integration/capture-transaction/
设置:
https://developer.paypal.com/docs/checkout/reference/server-integration/setup-sdk/

现在,您可以在贝宝批准订单后将表单数据写入数据库。

此处给出了类似的答案
如何在PayPal付款后提交地址和付款详细信息的数据