我正在尝试让PHP脚本将用户发送到已预先配置的PayPal页面。基本上,我正试图摆脱中间页面,“请等我送你到PayPal,等等。”
Currenly这是正在发生的事情: 1.用户填写一个表格,该表格将POST到我的process.php页面 2.我希望process.php构建_xclick字符串并直接发布到PayPal并在浏览器中显示(重定向?)页面。
这就是我目前正在做的事情,但是用户的网络浏览器没有被重定向。我知道我可以回应一些HTML并让它工作,但我认为有一种方法可以获取数据,但我想让浏览器采取更多措施?
//create array of requuired minimal data for a PayPal button
$post_data['amount'] = '123';
$post_data['item_name'] = 'widget';
$post_data['item_number'] = '123';
$post_data['quantity'] = '123';
$post_data['currency_code'] = 'USD';
$post_data['business'] = 'widgetsRUS@na.com';
$post_data['no_shipping'] = '2';
//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value)
{
$post_items[] = $key . '=' . urlencode(stripslashes($value));
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
// Add command string
$post_string = '?cmd=_xclick&' . $post_string;
// Connect to PAYPAL
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
//sending the data
fputs($fp, "POST /cgi-bin/webscr HTTP/1.1\r\n");
fputs($fp, "Host: www.paypal.com\r\n");
fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-Length: ".strlen($post_string)."\r\n");
fputs($fp, "Connection: close\r\n");
fputs($fp, "\r\n");
fputs($fp, $post_string);
while (!feof($fp))
{
echo fgets($fp, 1024);
}
fclose($fp);
答案 0 :(得分:1)
答案是,至少使用PayPal,这是不可能做到的。如果我执行POST后跟GET,则浏览器URL不会更改,这会破坏安全标准。简而言之,浏览器(用户)必须参与POST以保持所有正确的外观。 PayPal提供的API可以在幕后执行所有操作,而不需要HTML FORMS,但 _xclick 不提供此功能。
因此,您需要使用JavaScript并自动提交FORM。类似的东西:
<html>
<head>
<title>Proceeding to credit card site ...</title>
<body onload="document.paypal_form.submit();">
<h1>Proceeding to credit card site ...</<h1>
<form method="post" name="paypal_form" action="<?php echo $post_data['url']?>">
<input type="hidden" name="cmd" value="<?php echo $post_data['cmd']?>" />
<input type="hidden" name="business" value="<?php echo $post_data['business']?>" />
<input type="hidden" name="currency_code" value="<?php echo $post_data['currency_code']?>" />
<input type="hidden" name="amount" value="<?php echo $post_data['amount']?>" />
<input type="hidden" name="item_name" value="<?php echo $post_data['item_name']?>" />
</form>
</body>
</html>