diff --git a/library/Local/Payment/PayPal/Response.php b/library/Local/Payment/PayPal/Response.php index f610c2c44..3b9301f42 100644 --- a/library/Local/Payment/PayPal/Response.php +++ b/library/Local/Payment/PayPal/Response.php @@ -1,67 +1,67 @@ . **/ class Local_Payment_PayPal_Response { /** * @param array|null $rawResponse * @throws Local_Payment_Exception * @return Local_Payment_ResponseInterface */ public static function buildResponse($rawResponse = null) { if (isset($rawResponse['txn_type']) AND ($rawResponse['txn_type'] == 'masspay')) { return new Local_Payment_PayPal_Masspay_ResponseMasspay($rawResponse); } else if (isset($rawResponse['txn_type']) AND ($rawResponse['txn_type'] == 'subscr_payment')) { return new Local_Payment_PayPal_SubscriptionPayment_Response($rawResponse); } else if (isset($rawResponse['txn_type']) AND ($rawResponse['txn_type'] == 'subscr_signup')) { return new Local_Payment_PayPal_SubscriptionSignup_Response($rawResponse); } else - if (isset($rawResponse['txn_type']) AND ($rawResponse['txn_type'] == 'subscr_cancel')) { + if (isset($rawResponse['txn_type']) AND (($rawResponse['txn_type'] == 'subscr_cancel') || ($rawResponse['txn_type'] == 'subscr_failed') || ($rawResponse['txn_type'] == 'recurring_payment_suspended_due_to_max_failed_paym'))) { return new Local_Payment_PayPal_SubscriptionCancel_Response($rawResponse); } else if (isset($rawResponse['responseEnvelope_ack'])) { return new Local_Payment_PayPal_AdaptivePayment_ResponsePayRequest($rawResponse); } else if (isset($rawResponse['transaction_type']) AND ($rawResponse['transaction_type'] == 'Adaptive Payment PAY')) { return new Local_Payment_PayPal_AdaptivePayment_ResponsePay($rawResponse); } else if (isset($rawResponse['action_type']) AND ($rawResponse['action_type'] == 'PAY')) { return new Local_Payment_PayPal_AdaptivePayment_ResponsePay($rawResponse); } else if (isset($rawResponse['transaction_type']) AND ($rawResponse['transaction_type'] == 'Adjustment')) { return new Local_Payment_PayPal_AdaptivePayment_ResponseAdjustment($rawResponse); } else if (isset($rawResponse['txn_type']) AND ($rawResponse['txn_type'] == 'web_accept')) { return new Local_Payment_PayPal_Support_ResponseSupport($rawResponse); } else if ($rawResponse['transaction_subject'] == '' AND $rawResponse['payment_status'] == 'Refunded') { return new Local_Payment_PayPal_AdaptivePayment_ResponseChargeback($rawResponse); } else { throw new Local_Payment_Exception('Unknown response from PayPal. Raw message:' . print_r($rawResponse, true) . "\n"); } } } \ No newline at end of file