【问题标题】:Setup POST variables and the Redirect Page设置 POST 变量和重定向页面
【发布时间】:2026-02-17 22:15:02
【问题描述】:

我目前有一个标准的贝宝表格,该表格可以发布到贝宝并收取一定金额。然而,这些细节可以很容易地被用户修改。所以,我想知道我是否可以做到以下几点:

我的“完成并付款”按钮没有直接转到贝宝,而是指向我的网站。

然后我的网站 PHP 代码设置 POST 变量(地址、姓名、金额、业务、return_url 等),然后将页面重定向到贝宝网站。

PHP 怎么可能做到这一点?到目前为止,我知道要做的唯一代码是使用 header() 函数来重定向页面,但我不知道如何设置 POST 变量。

【问题讨论】:

  • 您没有在重定向时设置 POST 变量。你必须做一个不同的请求。
  • 那该死的!我能做些什么?人们可以在我发布到贝宝的表单中编辑amount 字段。这是废话。
  • 您最终将不得不将这些详细信息发布到贝宝,所以请继续使用您的finish & pay。但是在返回网站后检查订单是否已支付,并告诉用户还有 X 需要支付
  • 其他人都是这样做的吗?我不敢相信 paypal 已经发展到现在这样的规模。

标签: php


【解决方案1】:

编辑 - 这不起作用

试试这个:

// Set Data
$data = array();
$data['address'] = $_POST['address'];
$data['name'] = $_POST['name'];
//  the other info ....

// Send post data as url-encoded in the header
$req = http_build_query($data);

header("method: POST\r\n");
header("Host: localhost\r\n");
header("Content-Type: application/x-www-form-urlencoded\r\n");
header("Content-Length: ".strlen($req)."\r\n");
header($req."\r\n\r\n");
header("Connection: close\r\n\r\n");

header("Location: http://paypal.com/path/\r\n");

初次发布

你可以使用 curl:

$ch = curl_init('http://paypal.com/path/');

// Set Data
$data = array();
$data['address'] = $_POST['address'];
$data['name'] = $_POST['name'];
//  the other info ....

// Set options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute
$page = curl_exec($ch); 

【讨论】:

  • 但这只会得到肯定的结果,而不会将用户重定向到贝宝页面?
  • 在重定向页面上必须向用户显示发送数据?
  • 如何构建变量$data
  • $data 是您要发送到贝宝的项目的可变数组,之后使用http_build_query 转换为 http 查询并添加到标题中。
  • 你测试过这个吗?我收到服务器错误Moved Temporarily