PayWithAmazon\Client::charge PHP Method

charge() public method

* charge convenience method Performs the API calls 1. SetOrderReferenceDetails / SetBillingAgreementDetails 2. ConfirmOrderReference / ConfirmBillingAgreement 3. Authorize (with Capture) / AuthorizeOnBillingAgreeemnt (with Capture)
public charge ( $requestParameters = [] )
    public function charge($requestParameters = array())
    {
        $requestParameters = array_change_key_case($requestParameters, CASE_LOWER);
        $requestParameters = $this->trimArray($requestParameters);
        $setParameters = $authorizeParameters = $confirmParameters = $requestParameters;
        $chargeType = '';
        if (!empty($requestParameters['amazon_order_reference_id'])) {
            $chargeType = 'OrderReference';
        } elseif (!empty($requestParameters['amazon_billing_agreement_id'])) {
            $chargeType = 'BillingAgreement';
        } elseif (!empty($requestParameters['amazon_reference_id'])) {
            switch (substr(strtoupper($requestParameters['amazon_reference_id']), 0, 1)) {
                case 'P':
                case 'S':
                    $chargeType = 'OrderReference';
                    $setParameters['amazon_order_reference_id'] = $requestParameters['amazon_reference_id'];
                    $authorizeParameters['amazon_order_reference_id'] = $requestParameters['amazon_reference_id'];
                    $confirmParameters['amazon_order_reference_id'] = $requestParameters['amazon_reference_id'];
                    break;
                case 'B':
                case 'C':
                    $chargeType = 'BillingAgreement';
                    $setParameters['amazon_billing_agreement_id'] = $requestParameters['amazon_reference_id'];
                    $authorizeParameters['amazon_billing_agreement_id'] = $requestParameters['amazon_reference_id'];
                    $confirmParameters['amazon_billing_agreement_id'] = $requestParameters['amazon_reference_id'];
                    break;
                default:
                    throw new \Exception('Invalid Amazon Reference ID');
            }
        } else {
            throw new \Exception('key amazon_order_reference_id or amazon_billing_agreement_id is null and is a required parameter');
        }
        // Set the other parameters if the values are present
        $setParameters['amount'] = !empty($requestParameters['charge_amount']) ? $requestParameters['charge_amount'] : '';
        $authorizeParameters['authorization_amount'] = !empty($requestParameters['charge_amount']) ? $requestParameters['charge_amount'] : '';
        $setParameters['seller_note'] = !empty($requestParameters['charge_note']) ? $requestParameters['charge_note'] : '';
        $authorizeParameters['seller_authorization_note'] = !empty($requestParameters['charge_note']) ? $requestParameters['charge_note'] : '';
        $authorizeParameters['seller_note'] = !empty($requestParameters['charge_note']) ? $requestParameters['charge_note'] : '';
        $setParameters['seller_order_id'] = !empty($requestParameters['charge_order_id']) ? $requestParameters['charge_order_id'] : '';
        $setParameters['seller_billing_agreement_id'] = !empty($requestParameters['charge_order_id']) ? $requestParameters['charge_order_id'] : '';
        $authorizeParameters['seller_order_id'] = !empty($requestParameters['charge_order_id']) ? $requestParameters['charge_order_id'] : '';
        $authorizeParameters['capture_now'] = !empty($requestParameters['capture_now']) ? $requestParameters['capture_now'] : false;
        $response = $this->makeChargeCalls($chargeType, $setParameters, $confirmParameters, $authorizeParameters);
        return $response;
    }