2010-11-16 21 views
6

He almacenado la dirección de correo electrónico de PayPal de los clientes en la base de datos y quiero enviarles dinero usando esa dirección de correo electrónico. Estoy usando PHP.Cómo enviar dinero a paypal usando php

Cualquiera por favor sugiera cómo hacerlo.

+13

Parece extraño que estés enviando dinero a clientes en lugar de cobrar el dinero. quiero estar en tu lista – stillstanding

+0

Vamos a comenzar con una lista de todo lo que ha intentado? ¿Has googleado al menos? Es mejor si puede dar un problema particular en el que está estancado. Gracias – pinaki

+0

@pinaki: Google no es una respuesta ni útil en SO (la mayoría de las búsquedas nos llevan de vuelta a la pregunta). Pero estoy de acuerdo con usted en que la pregunta es demasiado amplia, y él debería regresar con un problema específico. – Bobby

Respuesta

11

Estaba buscando el mismo problema, esto es lo que funciona para mí. Probado en modo 'sandbox' y usando NVP (en lugar de SOAP). Su servidor debe ser compatible con CURL, con el fin de verificar que utilice:

<?php 
echo 'curl extension/module loaded/installed: '; 
echo (!extension_loaded('curl')) ? 'no' : 'yes'; 
echo "<br />\n"; 
phpinfo(INFO_MODULES); // just to be sure 
?> 

Si no está cargado o instalado pedir que su hostmaster o get it here, de lo contrario seguir adelante:

<?php 
// code modified from source: https://cms.paypal.com/cms_content/US/en_US/files/developer/nvp_MassPay_php.txt 
// documentation: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/howto_api_masspay 
// sample code: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/library_code 

// eMail subject to receivers 
$vEmailSubject = 'PayPal payment'; 

/** MassPay NVP example. 
* 
* Pay one or more recipients. 
*/ 

// For testing environment: use 'sandbox' option. Otherwise, use 'live'. 
// Go to www.x.com (PayPal Integration center) for more information. 
$environment = 'sandbox'; // or 'beta-sandbox' or 'live'. 

/** 
* Send HTTP POST Request 
* 
* @param string The API method name 
* @param string The POST Message fields in &name=value pair format 
* @return array Parsed HTTP Response body 
*/ 
function PPHttpPost($methodName_, $nvpStr_) 
{ 
global $environment; 

// Set up your API credentials, PayPal end point, and API version. 
// How to obtain API credentials: 
// https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_NVPAPIBasics#id084E30I30RO 
$API_UserName = urlencode('my_api_username'); 
$API_Password = urlencode('my_api_password'); 
$API_Signature = urlencode('my_api_signature'); 
$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'); 

// Set the curl parameters. 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $API_Endpoint); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 

// Turn off the server and peer verification (TrustManager Concept). 
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); 

// Set the API operation, version, and API signature in the request. 
$nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_"; 

// Set the request as a POST FIELD for curl. 
curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq); 

// Get response from the server. 
$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($vEmailSubject); 
$receiverType = urlencode('EmailAddress'); 
$currency = urlencode('USD'); // or other currency ('GBP', 'EUR', 'JPY', 'CAD', 'AUD') 

// Receivers 
// Use '0' for a single receiver. In order to add new ones: (0, 1, 2, 3...) 
// Here you can modify to obtain array data from database. 
$receivers = array(
    0 => array(
    'receiverEmail' => "[email protected]", 
    'amount' => "20.00", 
    'uniqueID' => "id_001", // 13 chars max 
    'note' => " payment of commissions"), // I recommend use of space at beginning of string. 
    1 => array(
    'receiverEmail' => "[email protected]", 
    'amount' => "162.38", 
    'uniqueID' => "A47-92w", // 13 chars max, available in 'My Account/Overview/Transaction details' when the transaction is made 
    'note' => " payoff of what I owed you" // space again at beginning. 
) 
); 
$receiversLenght = count($receivers); 

// Add request-specific fields to the request string. 
$nvpStr="&EMAILSUBJECT=$emailSubject&RECEIVERTYPE=$receiverType&CURRENCYCODE=$currency"; 

$receiversArray = array(); 

for($i = 0; $i < $receiversLenght; $i++) 
{ 
$receiversArray[$i] = $receivers[$i]; 
} 

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"; 
} 

// Execute the API operation; see the PPHttpPost function above. 
$httpParsedResponseAr = PPHttpPost('MassPay', $nvpStr); 

if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])) 
{ 
exit('MassPay Completed Successfully: ' . print_r($httpParsedResponseAr, true)); 
} 
else 
{ 
exit('MassPay failed: ' . print_r($httpParsedResponseAr, true)); 
} 

?> 

Buena suerte!

+1

¿Por qué, en la Tierra, usar algún ejemplo de origen desconocido de un tablón de anuncios anónimo, en lugar del ** código de la documentación oficial ** ?! –

+6

Tal vez olvidé mencionar que lo hice desde el código de muestra de PayPal, o puede ser que la primera línea comentada tenga las palabras: 'código modificado desde la fuente'. No quería dar a Deepak u otros solo un enlace a la documentación oficial, le di un código útil. Por cierto, modifiqué el código de muestra oficial porque el proceso de pago original se realiza tres veces, es decir: desea enviar 10 dólares y ese código gasta 30, sin advertencias. – quantme

+4

quantme 1 Col. Shrapnel 0 –

1

Lo que estamos buscando es DoMassPay a partir de los ejemplos de código oficial de PayPal, no es fácil de adivinar que el nombre: P

Cuestiones relacionadas