Paypal Toplu Ödeme API kullanarak IPN aracılığıyla mağaza alıcının ayrıntıları yakalamak ve gerek

2 Cevap php

Bu Paypal Toplu Ödeme IPN hakkında bir soru. Benim platformudur PHP & mySQL.

Tüm Paypal destek web sitesi üzerinden, ben sadece yapılan ödemeler için IPN'i bulduk. Ben Toplu Ödeme için benzer çizgilere bir IPN'i gerek ama bulamadım. Ayrıca mevcut Toplu Ödeme GBK kodu ile deneme çalıştı, ancak bu da işe yaramadı.

Ne yapmaya çalışıyorum, tüm alıcılar için ödeme başarıyla benim kendi veritabanı tablosundaki onların e-posta, miktarı ve UNIQUE_ID kaydetmek istediğiniz, Mass Pay üzerinden gönderildiğini kime olmasıdır. Eğer mümkünse, bunu başarısızlık bir başarı olmuştur ve aynı dayalı olup olmadığı, hem de ödeme durumunu yakalamak istiyorum, ben ev işleme bazı yapmanız gerekir.

The existing code Mass pay code is below:

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

?>

Yukarıdaki kodda, nasıl ve nerede ben yukarıda istenen alanları yakalamak için kod eklerim? Çözüm gösteren herhangi bir kod son derece takdir edilmektedir.

Çok teşekkür ederim.

2 Cevap

Ben Düzenli Ödemeler daha aşina değilim, ama ben IPN yanıt arıyorlar değerleri geri göndermek düşünüyorum. Sadece, geri gönderilen dizinin onları yakalamak bazı değişkenler koyun ve veritabanına kaydetmek.

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

Here are the values for the Mass Pay Variables
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_IPNandPDTVariables

Bu verileri almak için iki yolu vardır, bir doğrudan masspay yapmak çağrısından yanıtları bakmaktır, ve diğer hesabınıza IPN'i kuruyor genellikle vardır.

Kurulum küresel IPN var, ben bu çağrı üzerine bir değişken olarak url dinlemek IPN göndermek için bir yol bulamıyorum.

HTH -FT