File indexing completed on 2025-02-23 05:32:03

0001 <?php
0002 /**
0003  *  ocs-webserver
0004  *
0005  *  Copyright 2016 by pling GmbH.
0006  *
0007  *    This file is part of ocs-webserver.
0008  *
0009  *    This program is free software: you can redistribute it and/or modify
0010  *    it under the terms of the GNU Affero General Public License as
0011  *    published by the Free Software Foundation, either version 3 of the
0012  *    License, or (at your option) any later version.
0013  *
0014  *    This program is distributed in the hope that it will be useful,
0015  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017  *    GNU Affero General Public License for more details.
0018  *
0019  *    You should have received a copy of the GNU Affero General Public License
0020  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021  **/
0022 
0023 class Local_Payment_Dwolla_Response
0024 {
0025 
0026     /**
0027      * @param array|null $rawResponse
0028      * @throws Local_Payment_Exception
0029      * @return Local_Payment_Dwolla_ResponseInterface
0030      */
0031     public static function buildResponse($rawResponse = null)
0032     {
0033         if (isset($rawResponse['CheckoutId']) AND isset($rawResponse['TransactionId'])) {
0034             return new Local_Payment_Dwolla_ResponseGateway($rawResponse);
0035         }
0036 
0037         if (isset($rawResponse['Type']) AND ($rawResponse['Type'] == 'Transaction') AND isset($rawResponse['Subtype']) AND ($rawResponse['Subtype'] == 'Status')) {
0038             return new Local_Payment_Dwolla_ResponseTransactionStatus($rawResponse);
0039         }
0040 
0041         if (isset($rawResponse['Type']) AND ($rawResponse['Type'] == 'Transaction') AND isset($rawResponse['Subtype']) AND ($rawResponse['Subtype'] == 'Returned')) {
0042             return new Local_Payment_Dwolla_ResponseTransactionStatus($rawResponse);
0043         }
0044 
0045         throw new Local_Payment_Exception('Unknown response from Dwolla. Raw message:' . print_r($rawResponse, true) . "\n");
0046     }
0047 
0048 }