File indexing completed on 2024-12-22 05:36:23
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_ResponseWebhook implements Local_Payment_Dwolla_ResponseInterface 0024 { 0025 protected $_rawResponse; 0026 0027 protected $_msgBody; 0028 0029 /** 0030 * @param array|null $rawResponse 0031 */ 0032 function __construct($rawResponse = null) 0033 { 0034 if (isset($rawResponse)) { 0035 $this->_rawResponse = $rawResponse; 0036 } 0037 } 0038 0039 /** 0040 * @return string 0041 */ 0042 public function getMsgBody() 0043 { 0044 return $this->_msgBody; 0045 } 0046 0047 /** 0048 * @param string $msgBody 0049 */ 0050 public function setMsgBody($msgBody) 0051 { 0052 $this->_msgBody = $msgBody; 0053 } 0054 0055 public function isSuccessful() 0056 { 0057 if ($this->getStatus() == 'COMPLETED' AND $this->getErrorMessage() == null) { 0058 return true; 0059 } 0060 return false; 0061 } 0062 0063 public function getStatus() 0064 { 0065 return strtoupper($this->_rawResponse['Status']); 0066 } 0067 0068 public function getTransactionId() 0069 { 0070 return $this->_rawResponse['TransactionId']; 0071 } 0072 0073 public function getTransactionStatus() 0074 { 0075 return $this->getStatus(); 0076 } 0077 0078 public function getPaymentId() 0079 { 0080 return $this->_rawResponse['CheckoutId']; 0081 } 0082 0083 public function getRawMessage() 0084 { 0085 return $this->_rawResponse; 0086 } 0087 0088 public function getProviderName() 0089 { 0090 return 'dwolla'; 0091 } 0092 0093 public function verifySignature($secret) 0094 { 0095 // Get Dwolla's signature 0096 $headers = getallheaders(); 0097 $signature = $headers['X-Dwolla-Signature']; 0098 0099 // Calculate hash, and compare to the signature 0100 $hash = hash_hmac('sha1', $this->_msgBody, $secret); 0101 0102 return ($hash == $signature); 0103 0104 } 0105 0106 public function getAmount() 0107 { 0108 return $this->_rawResponse['Transaction']['Amount']; 0109 } 0110 0111 public function getTransactionAmount() 0112 { 0113 return $this->_rawResponse['Transaction']['Amount']; 0114 } 0115 0116 public function getTransactionReceiver() 0117 { 0118 return $this->_rawResponse['Transaction']['Destination']['Id']; 0119 } 0120 0121 }