sdk-php
sdk-php copied to clipboard
Cannot use "parent" when current class scope has no parent
Error on PHP 7.4. Looks to be due to PaymentMaskedType.
in Composer\Autoload\includeFile called at /srv/deploy/releases/3/vendor/composer/ClassLoader.php (346)
in Composer\Autoload\ClassLoader::loadClass called at ? (?)
in spl_autoload_call called at /srv/deploy/releases/3/vendor/authorizenet/authorizenet/lib/net/authorize/api/contract/v1/PaymentMaskedType.php (162)
in net\authorize\api\contract\v1\PaymentMaskedType::set called at /srv/deploy/releases/3/vendor/authorizenet/authorizenet/lib/net/authorize/api/contract/v1/CustomerPaymentProfileMaskedType.php (306)
in net\authorize\api\contract\v1\CustomerPaymentProfileMaskedType::set called at /srv/deploy/releases/3/vendor/authorizenet/authorizenet/lib/net/authorize/api/contract/v1/CustomerProfileMaskedType.php (215)
in net\authorize\api\contract\v1\CustomerProfileMaskedType::set called at /srv/deploy/releases/3/vendor/authorizenet/authorizenet/lib/net/authorize/api/contract/v1/GetCustomerProfileResponse.php (132)
in net\authorize\api\contract\v1\GetCustomerProfileResponse::set called at /srv/deploy/releases/3/vendor/authorizenet/authorizenet/lib/net/authorize/api/controller/base/ApiOperationBase.php (151)
in net\authorize\api\controller\base\ApiOperationBase::execute called at /srv/deploy/releases/3/vendor/authorizenet/authorizenet/lib/net/authorize/api/controller/base/ApiOperationBase.php (104)
in net\authorize\api\controller\base\ApiOperationBase::executeWithApiResponse called at /srv/deploy/releases/3/app/Helpers/AuthorizeNet.php (232)
See
// Json Serialize Code
public function jsonSerialize(){
$values = array_filter((array)get_object_vars($this),
function ($val){
return !is_null($val);
});
$mapper = \net\authorize\util\Mapper::Instance();
foreach($values as $key => $value){
$classDetails = $mapper->getClass(get_class() , $key);
if (isset($value)){
if ($classDetails->className === 'Date'){
$dateTime = $value->format('Y-m-d');
$values[$key] = $dateTime;
}
else if ($classDetails->className === 'DateTime'){
$dateTime = $value->format('Y-m-d\TH:i:s\Z');
$values[$key] = $dateTime;
}
if (is_array($value)){
if (!$classDetails->isInlineArray){
$subKey = $classDetails->arrayEntryname;
$subArray = [$subKey => $value];
$values[$key] = $subArray;
}
}
}
}
if (get_parent_class() == ""){
return $values;
}
else{
return array_merge(parent::jsonSerialize(), $values);
}
}
https://github.com/AuthorizeNet/sdk-php/blob/master/lib/net/authorize/api/contract/v1/MerchantAuthenticationType.php
It's littered throughout the code.
You might want to look in https://github.com/AuthorizeNet/sdk-php/issues/383
and
https://github.com/AuthorizeNet/sdk-php/pull/382
update "authorizenet/authorizenet": "2.0.2", dependency, and it works for me.