Alguem sabe como enviar esse xml via POST
<purchaseService xmlns="http://br.com.getnet.ecommerce.ws.service/"> <!--Optional:--> <arg0 xmlns=""> <authentication> <username>string</username> <password>string</password> <merchantID>string</merchantID> </authentication> <purchases> <!--Zero or more repetitions:--> <purchase> <terminalID>string</terminalID> <merchantTrackID>string</merchantTrackID> <amount>string</amount> <currencycode>string</currencycode> <instType>string</instType> <!--Optional:--> <instNum>string</instNum> <card> <number>string</number> <!--Optional:--> <cvv2>string</cvv2> <expiryMonth>string</expiryMonth> <expiryYear>string</expiryYear> <holderName>string</holderName> </card> <!--Optional:--> <userDefinedField> <!--Optional:--> <udf1>string</udf1> <!--Optional:--> <udf2>string</udf2> <!--Optional:--> <udf3>string</udf3> <!--Optional:--> <udf4>string</udf4> <!--Optional:--> <udf5>string</udf5> </userDefinedField> <!--Optional:--> <tranMCC>string</tranMCC> <!--Optional:--> <softDescriptor>string</softDescriptor> </purchase> </purchases> </arg0> </purchaseService>
Ainda assim está um pouco confuso, pois em um momento você fala POST mas no exemplo usa SOAP.
Você deve verificar o arquivo WSDL, pois ele descreve tudo que é necessário passar. Se o XML acima passado é a descrição de um método, indentando-o você encontrará tudo que é necessário:
Para passar os dados, você possui algumas formas, como arrays associativos, standard class ou mapeamento de classes.
Como exemplo vou usar uma standard class, supondo que o nome do método é purchaseService:
$purchaseService = new stdClass();
$authentication = new stdClass();
$authentication->username = "usuario";
$authentication->password = "senha";
$authentication->merchantID = "id";
$purchaseService->arg0->authentication = $authentication;
/** exemplo compacto de várias compras **/
/** é preferível utilizar \ArrayObject ao invés de array() **/
$purchases = new \ArrayObject();
$purchase = new stdClass();
$purchase->terminalID = "string";
$purchase->merchantTrackID = "string";
$purchase->amount = "string";
$purchase->currencycode = "string";
$purchase->instType = "string";
/**
demais configurações
**/
/** adiciona-se o tipo especificado como SoapVar **/
$purchases->append(new \SoapVar($purchase , SOAP_ENC_OBJECT , null , null , 'purchase'));
/** suponha-se que existe $purchase1 e $purchase2 **/
$purchases->append(new \SoapVar($purchase1 , SOAP_ENC_OBJECT , null , null , 'purchase'));
$purchases->append(new \SoapVar($purchase2 , SOAP_ENC_OBJECT , null , null , 'purchase'));
$purchaseService->arg0->purchases = new \SoapVar($purchases , SOAP_ENC_OBJECT , null , null , 'purchases');
/** varíavel criada no seu exemplo **/
$return = $client->purchaseService($purchaseService);
Perceba que somente no momento em que eu criei uma lista de compras, eu fiz uso de SoapVar, e na hora da autenticação não. Isso se faz necessário para uma melhor interpretação da lista no XML, uma vez que em nenhum momento é definido que é uma lista do objeto "purchase", apenas "purchases".É interessante ler sobre o erro da tag BOGUS