laipower/wp-content/plugins/easy-digital-downloads/includes/gateways/libs/amazon/ResponseParser.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 ;
}
}