SagePay 框架集成 v3.00.如何以纯文本(php)发送“状态”和“重定向URL”


SagePay inframe integration v3.00. How to send "Status" and "RedirectURL" in plain text (php)?

>我正在尝试在测试环境中应用低调(带有 iframe)的服务器 Inframe 集成 (v3.00)。一切似乎都很好,直到"请稍候,您的交易正在通过银行授权"消息。

之后,我收到一个5006错误:无法重定向到供应商的网站。供应商未能提供重定向 URL。

但是重定向URL是正确的,因为我可以在此页面上收到SagePay (Status=OK/ABORT/REJECTED/ERROR/... and others datas )发送的帖子。

为了正确关闭该过程,我必须回复SagePay的服务器三个"纯文本"数据,( for instance: Status=OK, SatusDetail=Thank you for this order, and RedirectURL=https://mySite.com/youpi.php )。编码必须是由回车换行符 (CRLF) 分隔的名称=值字段。

我想问你是否有任何关于如何使用 PHP 编写这部分代码的想法或示例?

我在我的 php 页面中尝试了这些行,但没有成功:

header("Content-type: text/plain");
$redirect_url="Status=OK" . chr(13) . chr(10) ;
$redirect_url.="RedirectURL=https://mySite.com/redirectOK" . chr(13) . chr(10) ;
$redirect_url.="StatusDetail=Thank you." . chr(13) . chr(10) ;
echo $redirect_url;

我注意到 NotificationURL 被调用了 11 次,这与没有响应时的进程行为一致。

以下是从服务器接收的每个帖子集的数据(状态和状态详细信息):

set 1: Status="OK" StatusDetail="2014 : The Transaction was Registered Successfully."
set 2 to 10: Status="OK" StatusDetail="0000 : The Authorisation was Successful."
set 11: Status="ABORT" StatusDetail="2008 : The Transaction timed-out."

我暂时不回复SagePay服务器的帖子,因为我看不到/我不知道该怎么做!

提前感谢您的帮助!

现在没关系了。我已经在 2.23 版的旧 php 工具包中得到了答案。

现在的脚本:

if ($Status=="ABORT")
  {
    ob_flush(); // THIS LINE WAS MISSING 
    header("Content-type: text/plain");
    $redirect_url="Status=OK"  . chr(13) . chr(10)  ;
    $redirect_url.="RedirectURL=https://mySite.com/redirectCANCEL"  . chr(13) . chr(10)  ;
    $redirect_url.="StatusDetail=Thank you."  . chr(13) . chr(10)  ;
    echo $redirect_url;
    exit(); // THIS LINE WAS MISSING TOO
   }