Jump to content

[PHP] Pagamentos em massa (MassPay) Paypal


xploit

Recommended Posts

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 moroso, 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

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

acct-api-access

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

acct-request-credentials

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

acct-request-signature

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

acct-review-signature

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 variáveis comentadas no ficheiro PHP, e adaptar este script poderoso aos seus sistemas de pagamentos.

Espero que tenham gostado, qualquer dúvida postem  🙂

Link to comment
Share on other sites

  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.