87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace PayWithAmazon;
 | |
| 
 | |
| // Exit if accessed directly
 | |
| defined( 'ABSPATH' ) || exit;
 | |
| 
 | |
| /* ResponseParser
 | |
|  * Methods provided to convert the Response from the POST to XML, Array or JSON
 | |
|  */
 | |
| 
 | |
| require_once 'Interface.php';
 | |
| 
 | |
| class ResponseParser implements ResponseInterface
 | |
| {
 | |
|     public $response = null;
 | |
| 
 | |
|     public function __construct($response=null)
 | |
|     {
 | |
|         $this->response = $response;
 | |
|     }
 | |
| 
 | |
|     /* Returns the XML portion of the response */
 | |
| 
 | |
|     public function toXml()
 | |
|     {
 | |
|         return $this->response['ResponseBody'];
 | |
|     }
 | |
| 
 | |
|     /* toJson - converts XML into Json
 | |
|      * @param $response [XML]
 | |
|      */
 | |
| 
 | |
|     public function toJson()
 | |
|     {
 | |
|         $response = $this->simpleXmlObject();
 | |
| 
 | |
|         return (json_encode($response));
 | |
|     }
 | |
| 
 | |
|     /* toArray - converts XML into associative array
 | |
|      * @param $this->response [XML]
 | |
|      */
 | |
| 
 | |
|     public function toArray()
 | |
|     {
 | |
|         $response = $this->simpleXmlObject();
 | |
| 
 | |
|         // Converting the SimpleXMLElement Object to array()
 | |
|         $response = json_encode($response);
 | |
| 
 | |
|         return (json_decode($response, true));
 | |
|     }
 | |
| 
 | |
|     private function simpleXmlObject()
 | |
|     {
 | |
|         $response = $this->response;
 | |
| 
 | |
|         // Getting the HttpResponse Status code to the output as a string
 | |
|         $status = strval($response['Status']);
 | |
| 
 | |
|         // Getting the Simple XML element object of the XML Response Body
 | |
|         $response = simplexml_load_string((string) $response['ResponseBody']);
 | |
| 
 | |
|         // Adding the HttpResponse Status code to the output as a string
 | |
|         $response->addChild('ResponseStatus', $status);
 | |
| 
 | |
|         return $response;
 | |
|     }
 | |
| 
 | |
|     /* Get the status of the BillingAgreement */
 | |
| 
 | |
|     public function getBillingAgreementDetailsStatus($response)
 | |
|     {
 | |
|        $data= new \SimpleXMLElement($response);
 | |
|         $namespaces = $data->getNamespaces(true);
 | |
|         foreach($namespaces as $key=>$value){
 | |
|             $namespace = $value;
 | |
|         }
 | |
|         $data->registerXPathNamespace('GetBA', $namespace);
 | |
|         foreach ($data->xpath('//GetBA:BillingAgreementStatus') as $value) {
 | |
|             $baStatus = json_decode(json_encode((array)$value), TRUE);
 | |
|         }
 | |
| 
 | |
|         return $baStatus ;
 | |
|     }
 | |
| }
 |