WHAT'S NEW

 

Changes in XSD files that are part of the FIFA Data Standard caused the breaking changes in the SDK. The breaking changes are described in the detailed changelog section below.

 

The following changes have been made in the latest release:

  • Breaking changes
    1. DomesticTransferDeclaration class changes
    2. ProofOfPayment class changes
    3. ConditionalTransferFeeType, ReleaseBuyoutFeeType and FixedTransferFeeType class changes
  • Other changes and improvements
    1. Updated fifaconnect reference
    2. Fix for PictureEmbedded and DocumentEmbedded 


REASON OF CHANGES

 

To fix several issues that we are observing on cross-platform requests related to serialization and deserialization of messages, and to model the data in a way it will be easier to change or extend the messages without breaking the SDK contract.



WHO IS AFFECTED


Every Member Association that exchanges messages with the Clearing House through the TMS system. In other words, every MA that uses TMSFacade. In particular: declareDomesticTransferAndWaitForTransferId, provePaymentAndWaitForPaymentId.



DETAILED CHANGELOG:

 

  1. DomesticTransferDeclaration class changes (breaking change)

 

DomesticTransferDeclaration no longer contains collections of $ReleaseBuyoutFee of type TransferFee[] and collection $FixedTransferFee of type TransferFee[]. Instead collection $ReleaseBuyoutFee is of type $ReleaseBuyoutFee[] and collection $FixedTransferFee is of type FixedTransferFee[].

 

Before the change

After the change

class DomesticTransferDeclaration

{

    ...

    /**

     * @var TransferFee[]

     */

    public $FixedTransferFee = [];


 

    /**

     * @var ConditionalTransferFee[]

     */

    public $ConditionalTransferFee = [];


 

    /**

     * @var TransferFee[]

     */

    public $ReleaseBuyoutFee = [];

 

    ...

}


 

class DomesticTransferDeclaration

{

    ...

     /**

     * @var FixedTransferFee[]

     */

    public $FixedTransferFee = [];


 

    /**

     * @var ConditionalTransferFee[]

     */

    public $ConditionalTransferFee = [];


 

    /**

     * @var ReleaseBuyoutFee[]

     */

    public $ReleaseBuyoutFee = [];

}


 



  1. ProofOfPayment class changes (breaking change)


ProofOfPayment no longer contain $Fee of type TransferFee. Instead it contains: $PaymentDetails (of type PaymentDetails) and $RecipientClub (of type ClubType)


Before the change

After the change

class ProofOfPayment

{

    ...

    /**

     * @var TransferFee

     */

    public $Fee

    

    ...

    

     /**

     * ProofOfPayment constructor.

     * @param $tmsTransferId

     * @param $paymentType

     * @param TransferFee $fee

     */

    public function __construct($tmsTransferId, $paymentType, TransferFee $fee)

    {

        ...

    }

    

}


 


 

class ProofOfPayment

{

    ...

    /**

     * @var PaymentDetails

     */

    public $PaymentDetails;


 

     /**

     * @var Club

     */

    public $RecipientClub;

    

    ...

    

    /**

     * ProofOfPayment constructor.

     * @param int $tmsTransferId

     * @param string $paymentType

     * @param PaymentDetails $paymentDetails

     * @param Club $recipientClub

     */

    public function __construct($tmsTransferId, $paymentType, PaymentDetails $paymentDetails, Club $recipientClub)

    {

        ...

    }

    ...

}


 



  1. ConditionalTransferFee, ReleaseBuyoutFee, and FixedTransferFee class changes (breaking change)

 

ConditionalTransferFee has been unified with ReleaseBuyoutFee and FixedTransferFee and it doesn't inherit from TransferFee anymore. TransferFee has been deleted. You should use one of the types ConditionalTransferFee, ReleaseBuyoutFee, or FixedTransferFee instead of it. The details of the transfer are now encapsulated in the new type TransferFeeDetails.


Before the change

After the change

class ConditionalTransferFee extends TransferFee

{


 

    ...

    

    /**

     * ConditionalTransferFee constructor.

     * @param float $Amount

     * @param string $Currency

     * @param DateTime $DateOfPayment

     * @param Club $RecipientClub

     * @throws ToStringException

     */

    public function __construct($Amount, $Currency, DateTime $DateOfPayment, Club $RecipientClub)

    {

        ...

    }

    ...

}

class ConditionalTransferFee

{

    

    ...

    /**

     * @var TransferFeeDetails

     */

    public $FeeDetails;


 

    /**

     * ConditionalTransferFee constructor.

     * @param TransferFeeDetails $feeDetails

     */

    public function __construct(TransferFeeDetails $feeDetails)

    {

        ...

    }

...

}


 

class FixedTransferFee

{

    

    public $Condition;

    /**

     * @var TransferFeeDetails

     */

    public $FeeDetails;


 

    /**

     * FixedTransferFee constructor.

     * @param TransferFeeDetails $feeDetails

     */

    public function __construct(TransferFeeDetails $feeDetails)

    {

        $this->FeeDetails = $feeDetails;

    }

}


 

class ReleaseBuyoutFee

{

    

    public $Condition;

    /**

     * @var TransferFeeDetails

     */

    public $FeeDetails;


 

    /**

     * ReleaseBuyoutFee constructor.

     * @param TransferFeeDetails $feeDetails

     */

    public function __construct(TransferFeeDetails $feeDetails)

    {

        $this->FeeDetails = $feeDetails;

    }

}


 

  1. XML validation enhancements (non-breaking change)

 

XML validation of methods that are exposed through TMSFacade is performed not only on the serialization but also deserialization of the message. It will provide more insightful logs when receiving an invalid message via the Service Bus.

 

XmlDeserializationException is thrown in case of a deserialization error.



  1. Fix for PictureEmbedded and DocumentEmbedded (non-breaking change)


Fix the issue with serializing and deserializing documents without a specified type.



DOWNLOAD

To get the newest version go to: https://support.id.ma.services/support/solutions/articles/7000016086-php-sdk-6-x-x.