本质上,我有一个打印表单的页面,填写表单,然后用户被重定向到第三方支付页面(数据通过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);
我不明白的是,只有在已经开始填写表格(我需要)的情况下,才会出现这个问题。如果你在这个页面上开始你的会话,没有问题。
如果这是一个简单的问题,请原谅我-我试图找到一个类似的问题,该问题已经解决,但在
调用函数的脚本似乎是页面的一部分,其中页眉和输出已经发送到浏览器。
如果使用输出缓冲,则只能在之后修改标头。你收到的错误告诉我你不是。
<?php
/*
* Establish output buffer, build output string
*/
ob_start();
/* (YOUR ENTIRE SCRIPT / PAGE GOES HERE) */
/*
* Send output and flush the buffer
*/
ob_end_flush();
?>