<?php
		$credentials = '94651682.api.allopass.com:LTuUVaclmRnnCuKcQq2JGJ4l';
		$resource = 'https://stage-secure-gateway.allopass.com/rest/v1/order';
		$resourceVault = 'https://stage-secure-vault.allopass.com/rest/v1/token/create';

		/*REQUETE VAULT */
		$curlVault = curl_init();

		$dataVault = array(
				'card_number' => '4111111111111111',
				'card_expiry_month' => '04',
				'card_expiry_year' => '2015',
				'cvc' => '123',
		);

		$optionsVault = array(
				CURLOPT_URL => $resourceVault,
				CURLOPT_USERPWD => $credentials,
				CURLOPT_HTTPHEADER => array('Accept: application/xml'),
				CURLOPT_RETURNTRANSFER => true,
				CURLOPT_FAILONERROR => false,
				CURLOPT_HEADER => false,
				CURLOPT_POST => true,
				CURLOPT_POSTFIELDS => http_build_query($dataVault)
		);

		foreach ($optionsVault as $optionVault => $value) {
			curl_setopt($curlVault, $optionVault, $value);
		}

		if (false === ($resultVault = curl_exec($curlVault))) {
			throw new RuntimeException(curl_error($curlVault), curl_errno($curlVault));
		}
		$responseVault = simplexml_load_string($resultVault);

		$xml = new SimpleXMLElement($resultVault);
		$token= (string)$xml->token;
		var_dump("token créé : " . $token);

		$statusVault = (int)curl_getinfo($curlVault, CURLINFO_HTTP_CODE);

		if (floor($statusVault/100) != 2) {
			throw new RuntimeException($responseVault->message, $responseVault->code);
		}
		curl_close($curlVault);

		/*REQUETE GATEWAY */
		// create a new cURL resource
		$curl = curl_init();

		// request parameters
		$data = array(
				'orderid' => time(),   //au hasard
				'operation' => 'sale',
				'payment_product' => 'visa',
				'description' => 'blabla',
				'amount' => '10.00',
				'currency' => 'EUR',
				'ipaddr' => '172.25.3.101',
				'cid' => 'UID113071209085851dfab8ae0a9b',
				'eci'=> '7',
				'cardtoken' => $token
		);
		var_dump($data);
		$options = array(
				CURLOPT_URL => $resource,
				CURLOPT_USERPWD => $credentials,
				CURLOPT_HTTPHEADER => array('Accept: application/xml'),
				CURLOPT_RETURNTRANSFER => true,
				CURLOPT_FAILONERROR => false,
				CURLOPT_HEADER => false,
				CURLOPT_POST => true,
				CURLOPT_POSTFIELDS => http_build_query($data)
		);

		foreach ($options as $option => $value) {
			curl_setopt($curl, $option, $value);
		}

		// execute the given cURL session
		if (false === ($result = curl_exec($curl))) {
			throw new RuntimeException(curl_error($curl), curl_errno($curl));
		}

		var_dump($result);
		$response = simplexml_load_string($result);
		var_dump($response);
		$status = (int)curl_getinfo($curl, CURLINFO_HTTP_CODE);
		if (floor($status/100) != 2) {
			throw new RuntimeException($response->message, $response->code);
		}

		printf('Payment Reference: %s', $response->transactionReference);

		curl_close($curl);
		
		?>