unter Verwendung von Paypal Massen Pay-API zur Erfassung und Speicherung des Empfängers Detail über IPN benötigen

StackOverflow https://stackoverflow.com/questions/2615632

  •  26-09-2019
  •  | 
  •  

Frage

Dies ist eine Frage über Paypal Massen Pay IPN. Meine Plattform ist PHP & MySQL .

Auf der ganzen Paypal-Support-Website, ich habe IPN gefunden für nur Zahlungen. Ich brauche eine IPN auf ähnliche Weise für die Massen Pay konnte es aber nicht finden. Auch versuchte mit bereits vorhandenen Massen Pay NVP Code zu experimentieren, aber das hat nicht funktioniert.

Was ich versuche zu tun, dass für alle Empfänger, an die die Zahlung durch Massen Pay erfolgreich gesendet wurde, möchte ich die E-Mail, Menge und unique_id in meiner eigenen Datenbanktabelle aufzunehmen. Wenn möglich, möchte ich auch den Zahlungsstatus erfassen, ob es ein Erfolg des Scheiterns und basiert auf der gleichen gewesen ist, muss ich einige im Haus Verarbeitung tun.

Der vorhandene Code Massen Pay-Code ist unter:

<?php

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

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

$receiversArray = array();

for($i = 0; $i < 3; $i++) {
    $receiverData = array(  'receiverEmail' => "user$i@paypal.com",
                            'amount' => "example_amount",
                            'uniqueID' => "example_unique_id",
                            'note' => "example_note");
    $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";
}

// 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));
}

?>

In dem obigen Code, wie und wo füge ich Code, um die Felder zu erfassen, dass ich oben angefordert? Jeder Code, der angibt, die Lösung wird sehr geschätzt.

Vielen Dank.

War es hilfreich?

Lösung

Ich bin mehr vertraut mit wiederkehrenden Zahlungen, aber ich denke, die IPN Antwort wird die Werte zurückschicken Sie suchen. erfassen sie nur von dem Array heraus zurückgeschickt, legen Sie sie in einigen Variablen, und in der Datenbank speichern.

$email   = $httpParsedResponseAr["receiver_email"];  
$amount  = $httpParsedResponseAr["mc_currency_x"];

Hier sind die Werte für die Massen Pay Variablen
https://cms.paypal.com/us / cgi-bin /? cmd = _render-Gehalt & content_id = Entwickler / e_howto_html_IPNandPDTVariables

Andere Tipps

Generell gibt es zwei Möglichkeiten, um diese Daten zu bekommen, ist man auf die Antworten von dem Anruf, den Sie direkt an MassPay machen zu suchen, und die andere ist die Einrichtung IPN für Ihr Konto.

Sie haben die globale IPN zu gründen, ich kann nicht einen Weg finden, in der IPN hört URL als Variable zu diesem Aufruf zu senden.

HTH -FT

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top