sdk-php icon indicating copy to clipboard operation
sdk-php copied to clipboard

Cannot use "parent" when current class scope has no parent

Open mglaman opened this issue 3 years ago • 3 comments

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)

mglaman avatar Mar 22 '21 22:03 mglaman

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.

mglaman avatar Mar 23 '21 01:03 mglaman

You might want to look in https://github.com/AuthorizeNet/sdk-php/issues/383

and

https://github.com/AuthorizeNet/sdk-php/pull/382

ray-moncada avatar Dec 01 '21 22:12 ray-moncada

update "authorizenet/authorizenet": "2.0.2", dependency, and it works for me.

venkataadithan avatar Dec 10 '21 07:12 venkataadithan