【问题标题】:How to pass a $_POST from a redirect page如何从重定向页面传递 $_POST
【发布时间】:2017-04-16 19:05:08
【问题描述】:

我有一个表单,其中包含用户填写的有关课程的信息,并包含重定向到 PayPal 的 payflowlink 的付款信息。在我添加 payflowlink 之前,我将表单信息发布到同一页面并将课程信息通过电子邮件发送到电子邮件地址。现在,将表单的操作设置为 payflowlink,课程信息不会通过电子邮件发送给我,但付款信息确实会传递到 payflowlink。

我认为重定向页面可能会使用<meta http-equiv="refresh" content="0; url=https://payflowlink.paypal.com">,但 $_POST 不会传递到 payflowlink。如何获取从重定向页面传递到 payflowlink 页面的 $_POST 信息?

现在我有表单页面将信息发布到重定向页面,重定向页面通过电子邮件发送信息,但 $POST 没有传递到 payflowlink。 payflowlink 页面由 PayPal 托管。

<!DOCTYPE html>
<html lang="en">

<head>
  <title>Registration</title>
  <meta http-equiv="refresh" content="0; url=https://payflowlink.paypal.com">

</head>

<body>
  <?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  if (isset($_POST["name"])) {
    $name = $_POST['name'];
    $EmailBody = "Parent's Name: ".$_POST["name"]."<br>";
  }

    $subject = "Registration";
    SendMail($email, $EmailBody, $subject);
    echo ($EmailBody);
}

?>

    <main id="main">
      <h1>Registration Form</h1>

      <p><a href="https://payflowlink.paypal.com">Click this link if you are not redirected</a></p>

    </main>

  </body>

</html>

【问题讨论】:

  • 你也可以在你的问题中发布你的 php 代码吗?必须在重定向到支付流链接之前完成电子邮件操作。
  • @Оzgur 我从重定向页面添加了一些代码。
  • &lt;input type="hidden"/&gt;创建&lt;form&gt;,并使用javascript document.forms.myform.submit()提交

标签: javascript php redirect paypal payflowlink


【解决方案1】:

您应该小心使用支付网关。您不应该让用户直接通过您的服务器发布信用卡号码等敏感数据。您需要将信息直接传递给网关,网关将进行处理,然后重定向回您的站点并传递安全令牌。

https://developer.paypal.com/docs/classic/payflow/integration-guide

但是,当您首次从网关请求安全令牌时,您可以发送电子邮件。您还可以将按钮 onclick 事件附加到用户单击该按钮以通过 Ajax 请求重定向到服务器以发送电子邮件,然后在从服务器返回响应时重定向用户。

【讨论】:

    【解决方案2】:
      <?php
    ini_set('display_errors', 'On');
    error_reporting(E_ALL | E_STRICT);
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    
      if (isset($_POST["name"])) {
        $name = $_POST['name'];
        $EmailBody = "Parent's Name: ".$_POST["name"]."<br>";
    
        $subject = "Registration";
        SendMail($email, $EmailBody, $subject);
        //echo ($EmailBody);
    
        /* PAYPAL implementation here, instead header(); */
        header('Location: https://payflowlink.paypal.com');
      }
    
    
    }
    
    ?>
    
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <title>Registration</title>
    
    </head>
    
    <body>
    
    <main id="main">
      <h1>Registration Form</h1>
    
      <p><a href="https://payflowlink.paypal.com">Click this link if you are not redirected</a></p>
    
    </main>
    
      </body>
    
    </html>
    

    有一件事是,在重定向之前你不能回显。但是您已经收到了 $Emailbody 作为电子邮件。

    更新

    要将 $_POST 信息传递到 payflowlink 页面,您应该遵循相关的 API 文档。

    以上示例仅适用于基本重定向。

    【讨论】:

    • 我得到了同样的结果。我收到一封电子邮件,但 payflowlink 出错了。我看到您注释掉了回声并添加了标题。我还尝试在标题中注释掉元刷新标签。
    • @BrianC987 一开始我以为你需要基本的重定向,但你需要传递参数。因此,您必须遵循 Paypal PHP API 文档,并可能在您的代码中实现 CURL。
    • @Ozgur 我从未使用过 CURL,你能解释一下我会怎么做吗?
    • @BrianC987 我做了一些搜索。您不需要直接使用 curl。 paypal 有自己的 SDK,必须下载并集成到您的代码中。然后你可以使用你需要的解决方案的代码示例。你需要的一切都在这里paypal.github.io/PayPal-PHP-SDK
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 2016-03-06
    • 2020-08-20
    相关资源
    最近更新 更多