使用 PPMessage::init() 函数时,无法从 PPMessage.php 核心文件获取正确的薪酬响应


Trouble getting the correct pay response from the PPMessage.php Core File when using PPMessage::init() function?

我正在使用自定义PayPal自适应支付网关,我在php中获得正确的支付响应(新的PayResponse(时遇到了问题。我已经跟踪了错误,并在核心文件PPMessage.php中找到了它。我的支付网关可以使用PayPal自适应支付创建以下支付密钥:

$resp = array (
  'responseEnvelope.timestamp' => '2016-02-05T06:57:57.098-08:00',
  'responseEnvelope.ack' => 'Success',
  'responseEnvelope.correlationId' => 'e24f3c602852a',
  'responseEnvelope.build' => '17820627',
  'payKey' => 'AP-62K58588W7248331V',
  'paymentExecStatus' => 'CREATED',
);

当我想将其转换为薪酬响应时,我会执行以下操作:

    $ret = new PayResponse;
    $ret->init($resp);

PayResponse 扩展了定义方法 init 的 PPMessage。但是,核心文件 PPMessage 给了我以下答案:

ret=PayResponse::__set_state(
        array( 
            'responseEnvelope' => NULL, 
            'payKey' => 'AP-62K58588W7248331V', 
            'paymentExecStatus' => 'CREATED', 
            'payErrorList' => NULL, 
            'paymentInfoList' => NULL, 
            'sender' => NULL, 
            'defaultFundingPlan' => NULL, 
            'warningDataList' => NULL, 
            'error' => NULL, 
        ))

问题出在 responseEnvelop 键上,因为它应该是一个数组,而我得到 NULL。我不知道如何修改PPMessage::init方法以解决问题。谁能帮我?正确的薪酬响应应如下所示:

PayResponse::__set_state(array(
   'responseEnvelope' =>  ResponseEnvelope::__set_state(array(
          'timestamp' => '2016-02-05T06:57:57.098-08:00',
          'ack' => 'Success',
     'correlationId' => 'e24f3c602852a',
     'build' => '17820627',
  )),
   'payKey' => 'AP-62K58588W7248331V',
   'paymentExecStatus' => 'CREATED',
   'payErrorList' => NULL,
   'defaultFundingPlan' => NULL,
   'error' => NULL,
))

请注意,在正确的响应中,响应信封是一个对象。

这是指向 GitHub 表单 PPMessage 文件的链接。了解PayPal核心文件的人的任何帮助将不胜感激。任何人都可以检查此错误是一般错误还是我的设置所特有的问题?

谢谢。

在进一步研究我的设置后,我发现问题出在我的PayPal安装上。我无法加载响应信封类。存在错误,并且未加载类。所以我要结束这个问题。感谢您阅读本文。