基本上我有一个页面打印表格,表格填写 - 然后用户被重定向到第三方付款页面(数据通过xml请求发送到第三方付款页面)。这是应该起作用的功能:
function redirect_form()
{
global $pxpay;
$request = new PxPayRequest();
$http_host = getenv("HTTP_HOST");
$request_uri = getenv("SCRIPT_NAME");
$server_url = "http://$http_host";
#$script_url = "$server_url/$request_uri"; //using this code before PHP version 4.3.4
$script_url = "$server_url$request_uri"; //Using this code after PHP version 4.3.4
#$script_url = (version_compare(PHP_VERSION, "4.3.4", ">=")) ?"$server_url$request_uri" : "$server_url/$request_uri";
$MerchantReference = $_REQUEST["Reference"];
$StudentName = $_REQUEST["x_name"];
$Venue = $_REQUEST["x_venue"];
$Course = $_REQUEST["x_course"];
$AmountInput = $_REQUEST["x_amount"];
$Currency = $_REQUEST["x_currency"];
$Email = $_REQUEST["x_email"];
#Generate a unique identifier for the transaction
$TxnId = uniqid("ID");
#Set PxPay properties
$request->setMerchantReference($MerchantReference);
$request->setAmountInput($AmountInput);
$request->setTxnData1($StudentName);
$request->setTxnData2($Venue);
$request->setTxnData3($Course);
$request->setTxnType("Purchase");
$request->setCurrencyInput($Currency);
$request->setEmailAddress($Email);
$request->setUrlFail($script_url); # can be a dedicated failure page
$request->setUrlSuccess($script_url); # can be a dedicated success page
$request->setTxnId($TxnId);
#The following properties are not used in this case
# $request->setEnableAddBillCard($EnableAddBillCard);
# $request->setBillingId($BillingId);
# $request->setOpt($Opt);
#Call makeRequest function to obtain input XML
$request_string = $pxpay->makeRequest($request);
#Obtain output XML
$response = new MifMessage($request_string);
#Parse output XML
$url = $response->get_element_text("URI");
$valid = $response->get_attribute("valid");
#Redirect to payment page
header("Location: ".$url);
}
当使用$ _REQUEST时,此表单在示例代码中完美运行,如果我注释掉定义每个变量的部分,则表单发送完美 - 每个变量也是一个字符串。
我已经完成了将变量定义为纯文本的测试,但它仍然有效。
此功能由以下人员调用:
if (isset($_POST['StudentName'])) { redirect_form(); }
问题是该页面只是一个空白页面 - 应该转到付款页面。
任何建议都将不胜感激。
编辑: - PHP错误报告显示:
Warning: Cannot modify header information - headers already sent by (output started at /home/becky/public_html/paymentconfirmation.php:244) in /home/becky/public_html/paymentconfirmation.php on line 288
第244行是:
$MerchantReference = $_REQUEST["Reference"];
第288行是标题调用:
header("Location: ".$url);
我不明白的是,只有在已经开始填写表格的会话时才会出现这个问题(我需要哪个)。如果您在此页面上开始会话,则没有问题。
如果这是一个简单的问题,请原谅我 - 我试图找到一个类似的问题已经解决但是很难挣扎
答案 0 :(得分:0)
调用您的函数的脚本似乎是页面的一部分,其中标题和输出已经发送到浏览器。
如果使用输出缓冲,则只能修改标头。您收到的错误告诉我您不是。
<?php
/*
* Establish output buffer, build output string
*/
ob_start();
/* (YOUR ENTIRE SCRIPT / PAGE GOES HERE) */
/*
* Send output and flush the buffer
*/
ob_end_flush();
?>