我正在使用自定义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安装上。我无法加载响应信封类。存在错误,并且未加载类。所以我要结束这个问题。感谢您阅读本文。