• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

xploit

Pagamentos em massa (MassPay) Paypal

4 mensagens neste tópico

Este é um tutorial de efectuar pagamentos em massa utilizando a API do paypal, imaginemos que tem uma aplicação que gera receitas, e tem que pagar aos 2000 afiliados que tem no seu sistema via PayPal, se fosse a pagar um a um seria muito complicado e demoroso, graças a API do paypal podemos efectuar pagamentos automáticos da nossa conta master (a nossa conta principal do paypal) para qualquer pessoa, com php e ainda guardar os dados de pagamentos numa base de dados, para além de ficar um sistema de pagamentos automático isso trará imensas vantagens para o seu projecto/empresa.

Para isto primeiramente iremos fazer login na nossa conta paypal.

# 1. clique no menu perfil(profile)

acct_select_profile.gif

# 2. clique em Acesso à API(Acess API)

acct_api_access.gif

# 2. clique onde diz Solicitar credenciais de API(Request API Credentials)

acct_request_credentials.gif

# 3. Agora seleccione a primeira opcção Solicite uma assinatura de API e confirme.

acct_request_signature.gif

# 4. É com estes dados fornecidos que iremos usar na nossa aplicação em php.

acct_review_signature.gif

Agora iremos criar um ficheiro PHP e escrever o seguinte:

PagamentosAutomaticos.php

<?php

$environment = 'sandbox';	// se for 'sandbox' irá utilizar a plataforma de teste da paypal, se puser 'live' irá utilizar a plataforma paypal real.

/
function PPHttpPost($methodName_, $nvpStr_) {
global $environment;


$API_UserName = urlencode('UsernameDaApi');// username de API
$API_Password = urlencode('PasswordDaApi');// password de API
$API_Signature = urlencode('AssinaturaDaApi');// assinatura de API
$API_Endpoint = "https://api-3t.paypal.com/nvp";
if("sandbox" === $environment || "beta-sandbox" === $environment) {
	$API_Endpoint = "https://api-3t.$environment.paypal.com/nvp";
}
$version = urlencode('51.0');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $API_Endpoint);
curl_setopt($ch, CURLOPT_VERBOSE, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

$nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_";


curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);

$httpResponse = curl_exec($ch);

if(!$httpResponse) {
	exit("$methodName_ failed: ".curl_error($ch).'('.curl_errno($ch).')');
}

// Extract the response details.
$httpResponseAr = explode("&", $httpResponse);

$httpParsedResponseAr = array();
foreach ($httpResponseAr as $i => $value) {
	$tmpAr = explode("=", $value);
	if(sizeof($tmpAr) > 1) {
		$httpParsedResponseAr[$tmpAr[0]] = $tmpAr[1];
	}
}

if((0 == sizeof($httpParsedResponseAr)) || !array_key_exists('ACK', $httpParsedResponseAr)) {
	exit("Invalid HTTP Response for POST request($nvpreq) to $API_Endpoint.");
}

return $httpParsedResponseAr;
}

// Set request-specific fields.
$emailSubject =urlencode('TituloDoEmailQueOclienteRecebe');
$receiverType = urlencode('EmailDocliente');
$currency = urlencode('EUR');	// tipo de moeda em que o pagamento e feito ('GBP', 'EUR', 'JPY', 'CAD', 'AUD')

$nvpStr="&EMAILSUBJECT=$emailSubject&RECEIVERTYPE=$receiverType&CURRENCYCODE=$currency";

$receiversArray = array();

for($i = 0; $i < 3; $i++) {
$receiverData = array(	'receiverEmail' => "emailPaypalDoCliente@sim.com",//email do paypal do cliente
						'amount' => "10.10",// total de dinheiro a enviar para o cliente neste caso está €10.10 centimos.
						'uniqueID' => "IdDeCompra",// id unico de compra a sua escolha
						'note' => "NotasParaOCliente");// Notas para o cliente, caso não queira deixe em branco
$receiversArray[$i] = $receiverData;
}

foreach($receiversArray as $i => $receiverData) {
$receiverEmail = urlencode($receiverData['receiverEmail']);
$amount = urlencode($receiverData['amount']);
$uniqueID = urlencode($receiverData['uniqueID']);
$note = urlencode($receiverData['note']);
$nvpStr .= "&L_EMAIL$i=$receiverEmail&L_Amt$i=$amount&L_UNIQUEID$i=$uniqueID&L_NOTE$i=$note";
}


$httpParsedResponseAr = PPHttpPost('MassPay', $nvpStr);

if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])) {



exit('Pagamento feito com sucesso!: '.print_r($httpParsedResponseAr, true));// Caso o pagamento seja feito com sucesso exibe mensagem , e a resposta do servidor do paypal em array.


} else  {



exit('Erro no pagamento: ' . urlencode($httpParsedResponseAr));// Caso o pagamento não seja feito exibe, e a resposta do servidor do paypal em array,
,



}

?>

Basta configurar as variaveis comentadas no ficheiro php, e adaptar este script poderoso aos seus sistemas de pagamentos.

Espero que tenham gostado, qualquer dúvida postem  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva ,

Excelente tutorial....

Sabes se consigo pagar com cartão de crédito pelo meu site através do paypall paymentspro em Portugal?

Já tentei e não consegui, em conversa com eles no forum x da paypall disseram-me que para Portugal não funcionava...

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

Passar a password sem encriptação?  :thumbdown:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora