クラス
State
Refund object stateソース ソース
ファイル: src/Models/Refund/State.php
class State extends ErrorStore implements JsonSerializable, TransactionState
{
    const REFUND_INITIATED = 'RefundInitiated';
    const REFUNDED = 'Refunded';
    const DECLINED = 'Declined';
    const STATE_TO_LOG_ACTION = [
        self::REFUND_INITIATED => Log::ACTION_ASYNC_REFUND,
        self::REFUNDED => Log::ACTION_REFUND,
    ];
    /**
     * Map of constant names and their corresponding values
     *
     * @var string[]
     */
    public static $stateMap = [
        'REFUND_INITIATED' => self::REFUND_INITIATED,
        'REFUNDED' => self::REFUNDED,
        'DECLINED' => self::DECLINED,
    ];
    /**
     * State to CSS class map
     *
     * @var string[]
     */
    private $cssClassMap = [
        self::REFUND_INITIATED => 'card-refund-init',
        self::REFUNDED => 'card-refunded',
        self::DECLINED => 'card-refund-declined',
    ];
    /**
     * `statusDetails`'s `state` key value
     *
     * @var string
     */
    private $state;
    /**
     * `statusDetails`'s `reasonCode` key value
     *
     * @var string|null
     */
    private $reasonCode;
    /**
     * `statusDetails`'s `reasonDescription` key value
     *
     * @var string|null
     */
    private $reasonDescription;
    /**
     * Charge Permission ID
     *
     * @var string|null
     */
    private $chargePermissionId;
    /**
     * Initializes a Refund `State` object
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @param string      $state
     * @param string|null $reasonCode
     * @param string|null $reasonDescription
     * @return void
     */
    public function __construct($state, $reasonCode = null, $reasonDescription = null) {
        $this->state = $state;
        $this->reasonCode = $reasonCode;
        $this->reasonDescription = $reasonDescription;
        $this->populate();
    }
    /**
     * Setter for `chargePermissionId`
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @param string $chargePermissionId
     * @return void
     */
    public function setChargePermissionId($chargePermissionId) {
        $this->chargePermissionId = $chargePermissionId;
    }
    /**
     * Getter for `chargePermissionId`
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return string|null
     */
    public function getTransactionId() {
        return $this->chargePermissionId;
    }
    /**
     * Returns human-readable text representation of current state
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return string
     */
    public function getDisplayText() {
        $text = '';
        switch ($this->state) {
            case self::REFUND_INITIATED:
                $text = __('Refund Initiated', 'wcexaap');
                break;
            case self::REFUNDED:
                $text = __('Refunded', 'wcexaap');
                break;
            case self::DECLINED:
                $text = __('Refund Declined', 'wcexaap');
                break;
        }
        return $text;
    }
    /**
     * Returns CSS class for the current state
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return string
     */
    public function getCssClass() {
        return isset($this->cssClassMap[$this->state]) ? $this->cssClassMap[$this->state] : '';
    }
    /**
     * Returns `GenericError` instance created from a `Declined` state.
     *
     * This method returns an `UNKNOWN_ERROR` `GenericError` instance if the state
     * is not declined.
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return GenericError
     */
    public function getErrorResponseFromDeclinedState() {
        $error = $this->getErrorResponse(self::UNKNOWN_ERROR);
        if ($this->state !== self::DECLINED) {
            return $error;
        }
        return $this->getErrorResponse($this->reasonCode, [$this->reasonDescription]);
    }
    /**
     * Returns `true` if state is 'RefundInitiated', `false` otherwise
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return bool
     */
    public function isRefundInitiated() {
        return $this->state === self::REFUND_INITIATED;
    }
    /**
     * Returns `true` if state is 'Refunded', `false` otherwise
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return bool
     */
    public function isRefunded() {
        return $this->state === self::REFUNDED;
    }
    /**
     * Returns `true` if state is 'Declined', `false` otherwise
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return bool
     */
    public function isDeclined() {
        return $this->state === self::DECLINED;
    }
    /**
     * Returns `true` if the state cannot be modified, `false` otherwise
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return bool
     */
    public function isUnmodifiable() {
        return $this->state === self::REFUND_INITIATED;
    }
    /**
     * Getter for `state`
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return string
     */
    public function getState() {
        return $this->state;
    }
    /**
     * Getter for `reasonCode`
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return string|null
     */
    public function getReasonCode() {
        return $this->reasonCode;
    }
    /**
     * Getter for `reasonDescription`
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return string|null
     */
    public function getReasonDescription() {
        return $this->reasonDescription;
    }
    /**
     * Getter for `cssClassMap`
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return string[]
     */
    public function getCssClassMap() {
        return $this->cssClassMap;
    }
    /**
     * Returns JSON object when `json_encode` is invoked on an instance of this class
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return array
     */
    public function jsonSerialize() {
        return [
            'state' => $this->state,
            'reasonCode' => $this->reasonCode,
            'reasonDescription' => $this->reasonDescription,
        ];
    }
    /**
     * `Refund` specific errors for a `Declined` state
     *
     * From the docs:
     *
     * **AmazonRejected** - Amazon rejected the refund. You should issue a refund to the buyer
     * in an alternate manner (for example, a gift card or store credit)
     *
     * **ProcessingFailure** - Amazon could not process the transaction because of an internal
     * processing error, or because the buyer has already received a refund from an A-to-z
     * claim, or a chargeback. You should only retry the refund if the Capture object is in
     * the Completed state. Otherwise, you should refund the buyer in an alternative way (for
     * example, a store credit or a check)
     *
     * @author Evan D Shaw <evandanielshaw@gmail.com>
     * @return void
     * @throws InvalidArgumentException Thrown if the `errorcode` is already added.
     */
    public function populate() {
        // Declined
        $this->addError(new GenericError(
            DeclinedReasonCodes::AMAZON_REJECTED,
            'AMAZON_REJECTED',
            403,
            function ($message) {
                return $message;
            },
            __('Amazon rejected the refund. You should issue a refund to the buyer in an alternate manner (for example, a gift card or store credit)', 'wcexaap')
        ));
        $this->addError(new GenericError(
            DeclinedReasonCodes::PROCESSING_FAILURE,
            'PROCESSING_FAILURE',
            500,
            function ($message) {
                return $message;
            },
            __('Amazon could not process the transaction because of an internal processing error, or because the buyer has already received a refund from an A-to-z claim, or a chargeback', 'wcexaap')
        ));
    }
}
- __construct — Initializes a Refund `State` object
 - getCssClass — Returns CSS class for the current state
 - getCssClassMap — Getter for `cssClassMap`
 - getDisplayText — Returns human-readable text representation of current state
 - getErrorResponseFromDeclinedState — Returns `GenericError` instance created from a `Declined` state.
 - getReasonCode — Getter for `reasonCode`
 - getReasonDescription — Getter for `reasonDescription`
 - getState — Getter for `state`
 - getTransactionId — Getter for `chargePermissionId`
 - isDeclined — Returns `true` if state is 'Declined', `false` otherwise
 - isRefunded — Returns `true` if state is 'Refunded', `false` otherwise
 - isRefundInitiated — Returns `true` if state is 'RefundInitiated', `false` otherwise
 - isUnmodifiable — Returns `true` if the state cannot be modified, `false` otherwise
 - jsonSerialize — Returns JSON object when `json_encode` is invoked on an instance of this class
 - populate — `Refund` specific errors for a `Declined` state
 - setChargePermissionId — Setter for `chargePermissionId`