2012-03-30 9 views
8

Ich muss verschlüsselte "PayNow" Paypal Buttons im laufenden Betrieb für eine Website erstellen.
Ich lese alle Dokumente, die ich auf der Paypal-Website finden kann.
Ich habe verstanden, dass ich die BMCreateButton ButtonManager NVP API verwenden muss.
Ich konnte jedoch keine Informationen oder einen einigermaßen einfachen und dokumentierten Beispielcode darüber finden, WIE ich diese API aufrufen soll.Wie erstellt man verschlüsselte PayNow-Schaltfläche "on the fly" für Drittkunden mit Paypal NVP API?

Muss ich meinen Parameter in ein Formular eingeben und auf einer Art Server veröffentlichen?
Muss ich alle Parameter auf eine URL setzen, diese URL aufrufen, ad das Ergebnis verwenden?
Wie authentifiziere ich mich bei diesem Dienst?
Ich werde verschlüsselte Paynow-Taste für verschiedene PayPal-Geschäftskonto erstellen.

Kann mir jemand VB.Net oder C# -Code zeigen, der diese BMCreateButton NVP API aufruft?
Damit kann ich sehen:

  • , wie der Anruf
  • wie in den Dienst
  • wie zu formatieren/verwenden, um die Parameter des API-Aufrufs
  • , wie man die Ergebnisse zu authentifizieren zu tun

Verschiedene Link zu nützliche Ressource
- Dank this answer konnte ich einige nützliche Beispielcode here und there darüber finden, wie Paypal API aufgerufen wird.
- Here ist nützlichere Informationen darüber, wie paypal NVP API funktioniert.
- Here eine interessante Website, die API Call URL für die BMCreateButton API generieren
- Here Sie können Anweisungen zum Abrufen von "Drittanbieter" API-Anmeldeinformationen finden. (Dank this answer)
- Einige weitere nützliche Informationen here über Paypal API-Integration
- Here Sie die aktuelle und aktuelle Versionsnummer der Paypal API

Update 1
Jetzt finden Ich habe habe einen Code erstellt, der eigentlich etwas macht, aber es gibt mir einen Fehler. Dieser Code erstellt eine verschlüsselte Paynow-Schaltfläche mithilfe der BMCreateButton-API. Es scheint zu funktionieren, aber wenn ich auf die Paynow-Taste klicken, zeigt es alle Zahlungsparameter, aber auch den Fehler "Es gab ein Problem mit der Entschlüsselung Ihrer sicheren Bestellung. Bitte wenden Sie sich an Ihren Händler."

Hier ist der Code:

Public Shared Sub PaypalTest3web() 

    Dim NVP As New Dictionary(Of String, String) 

    Dim strUsername As String = "aso_1273063882_biz_api3.megatesto.it" 
    Dim strPassword As String = "1273063582" 
    Dim strSignature As String = "A22sd7623RGUsduDHDSFU57N7dfhfS23DUYVhdf85du8S6FJ6D5bfoh5" 

    Dim strNVPSandboxServer As String = "https://api-3t.sandbox.paypal.com/nvp" 


    NVP.Add("USER", strUsername) 
    NVP.Add("PWD", strPassword) 
    NVP.Add("SIGNATURE", strSignature) 


    Dim bvCount As Integer 
    bvCount = 0 

    NVP.Add("METHOD", "BMCreateButton") 
    NVP.Add("VERSION", "85.0") 

    NVP.Add("BUTTONCODE", "ENCRYPTED") ''CLEARTEXT/ENCRYPTED 
    NVP.Add("BUTTONTYPE", "BUYNOW") 
    NVP.Add("BUTTONSUBTYPE", "PRODUCTS") ''Optional: PRODUCTS/SERVICES 

    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "business=D64TG758HIWj2") ''Merchant ID 

    'bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "cmd=_s-xclick") ''DONT SPECIFY the cmd parameter, if specifien it will generate an error on the decription of the "secure order", I don't know why... 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "lc=IT") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "button_subtype=PRODUCTS") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "item_name=Test_product") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "item_number=123456") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "amount=12.00") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "currency_code=EUR") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "quantity=1") 

    ''build the parameter string 
    Dim paramBuilder As New StringBuilder 
    For Each kv As KeyValuePair(Of String, String) In NVP 
     Dim st As String 
     st = kv.Key & "=" & HttpUtility.UrlEncode(kv.Value) & "&" 
     paramBuilder.Append(st) 
    Next 

    Dim param As String 
    param = paramBuilder.ToString 
    param = param.Substring(0, param.Length - 1) 'remove the last '&' 

    'Create web request and web response objects, make sure you using the correct server (sandbox/live) 
    Dim wrWebRequest As HttpWebRequest = DirectCast(WebRequest.Create(strNVPSandboxServer), HttpWebRequest) 
    wrWebRequest.Method = "POST" 

    Dim requestWriter As New StreamWriter(wrWebRequest.GetRequestStream()) 
    requestWriter.Write(param) 
    requestWriter.Close() 

    '' Get the response. 
    Dim responseReader As StreamReader 
    responseReader = New StreamReader(wrWebRequest.GetResponse().GetResponseStream()) 

    ''and read the response 
    Dim responseData As String 
    responseData = responseReader.ReadToEnd() 
    responseReader.Close() 

    ''url-decode the results 
    Dim result As String 
    result = HttpUtility.UrlDecode(responseData) 

    Dim formattedResult As String 

    formattedResult = "Request on " & strNVPSandboxServer & vbCrLf & 
        HttpUtility.UrlDecode(param.Replace("&", vbCrLf & " ")) & vbCrLf & vbCrLf & 
        "Result:" & vbCrLf & result & vbCrLf & vbCrLf & 
        "--------------------------------------" & vbCrLf 



    ''show the results 
    Trace.WriteLine(result) 
    MessageBox.Show(result) 
End Sub 

Hier ist der HTML-Antwort

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7----- 
"> 
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynow_LG.gif" border="0" name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!"> 
<img alt="" border="0" src="https://www.sandbox.paypal.com/it_IT/i/scr/pixel.gif" width="1" height="1"> 
</form> 

Und hier ist der Fehler, den ich nach dem Einschalten dieser verschlüsselten Pay-Klick erhalten - Jetzt Knopf

enter image description here

Wie Sie sehen können, sind alle Parameter (Artikelname, Preis, Artikel_ID ...) korrekt. Aber ich kann nicht verstehen, warum ich diesen Fehler bekomme.

Wenn Sie diesen Code ausprobieren möchten, sollten Sie Ihren API-Benutzer/Passwort/Signatur ersetzen. Die generierte PayNow-Schaltfläche funktioniert nur, wenn Sie in Ihrem paypal-Sandbox-Konto angemeldet sind.

Haben Sie eine Idee, wie Sie diesen Fehler beheben können?

Hinweis: nach der Lösung dieses Problems, muss ich verstehen, wie verschlüsselte Schaltfläche für ein drittes PayPal-Geschäftskonto erstellen (wir müssen verschlüsselte Schaltfläche für PayPal-Konten unserer Kunden erstellen). Die Verwendung unserer API-Anmeldedaten, des Kunden-Händlercodes und der Konfiguration unserer API-Anmeldedaten in unserem Paypal-Konto ist nicht ausreichend. Es besagt, dass der Händlercode nicht gültig ist. Wahrscheinlich bin ich etwas fehlt ...

Update 2
Es scheint, dass ich gefunden habe, wie die oben genannten Fehler zu beheben: einfach entfernen Sie die "cmd = _s-xclick/_xclick" Parameter. Wenn "cmd" nicht angegeben ist, scheint der Paynow-Button keinen Fehler zu erzeugen. Mehr Tests sind erforderlich ... Wie auch immer, ich habe die Codezeile im Codebeispiel kommentiert.

Jetzt zurück zum Geschäft. Lassen Sie uns einige Tests durchführen, und dann finden Sie die richtige Möglichkeit, PayNow-Schaltfläche für Paypal-Konten von Drittanbietern zu erstellen.

+0

Hallo Max, von der anderen folgenden SO schlecht in das für Sie später heute aussehen Frage, ob niemand sonst . – lethalMango

+0

@lethalMango: Vielen Dank, jede Hilfe wird sehr geschätzt – Max

+0

@lethalMango endlich habe ich die Lösung gefunden :-) – Max

Antwort

9

Ok, endlich habe ich es! :-)

Mein Ziel ist es, verschlüsselte PayNow-Schaltflächen "on the fly" für einige unserer Kunden zu erstellen. Hier ist eine kurze Erklärung, wie PayPal API mit Drittanbieterzugriff funktioniert.

  • erstellen Paypal Sandbox-Konto (here)
  • In diesem Sandbox-Konto erstellen 2 neues Geschäftskonto
    Sie dieses Geschäftskonto eine Kreditkarte anschließen sollte.Dies wird diese Rechnung als „verifiziert“ markiert, es sei denn, es nicht funktioniert
    • Das erste Konto (Konto A) wird unser Unternehmen
    • Das zweite Konto (Konto B) darstellt
    • einen unserer Kunden darstellt
  • Anmeldung Konto A, und fordern Sie die API-Zugangsdaten (instructions here)
  • Anmeldung Konto B und API-Berechtigung erteilen A (instruction here Prüfung den Abschnitt "von Drittanbietern Authentifizierung Konto: Grant Warenkorb die entsprechende API-Authentifizierung ication Berechtigungen „)
  • greifen die Api Anmeldeinformationen des Kontos A, und setzen Sie sie in Ihrem Quellcode
  • ID greifen Händler und Händler E-Mail von Konto B und setzen Sie sie in Ihrem Quellcode
  • den Code ausführen
  • den zurückgegebenen hTML greifen, legte es auf einer Web-Seite, und testen Sie es, sollte es funktioniert
    (Sie müssen auf Ihrem PayPal-Sandbox-Konto angemeldet sein, oder die erzeugte Taste funktioniert gewohnt)

Warum diese einfache und prägnante Wissen timewastingly unter einer unzähligen Anzahl von PayPal-Hilfe-Seiten, PayPal PDF-Handbücher verstreut wird und Dritten Blog-Post ist über mein Verständnis :-) Wie dem auch sei ...

Hier Code ist die Arbeit in VB.Net

Public Shared Sub PaypalThirdPartyPayNowButtonTest() 
    Dim bvCount As Integer = 0 ''L_BUTTONVAR counter 
    Dim NVP As New Dictionary(Of String, String) ''Api Name-Value-Pair parameters 

    ''define paypal SANDBOX server 
    Dim paypalApiServerUrl As String = "https://api-3t.sandbox.paypal.com/nvp" 

    ''define Api credentials of YOUR business paypal account 
    Dim yourApiUsername As String = "aso_1273063882_biz_api3.megatesto.it" 
    Dim yourApiPassword As String = "1273063582" 
    Dim yourApiSignature As String = "A22sd7623RGUsduDHDSFU57N7dfhfS23DUYVhdf85du8S6FJ6D5bfoh5" 

    ''define Your CUSTOMER identification data 
    Dim customerEmailID As String = "[email protected]" 
    Dim customerMerchantID As String = "3S4EF7BI96YHS" 


    ''use YOUR identification data 
    NVP.Add("USER", yourApiUsername) 
    NVP.Add("PWD", yourApiPassword) 
    NVP.Add("SIGNATURE", yourApiSignature) 

    ''use your CUSTOMER identification data 
    NVP.Add("SUBJECT", customerEmailID) 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "business=" & customerMerchantID) ''Merchant ID 


    ''Api method name and version 
    NVP.Add("METHOD", "BMCreateButton") 
    NVP.Add("VERSION", "85.0") 

    ''method specific parameters 
    NVP.Add("BUTTONCODE", "ENCRYPTED") 
    NVP.Add("BUTTONTYPE", "BUYNOW") 
    NVP.Add("BUTTONSUBTYPE", "PRODUCTS") 

    ''Buynow button specific parameters 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "lc=IT") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "button_subtype=PRODUCTS") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "item_name=Test_product") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "item_number=123456") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "amount=12.00") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "currency_code=EUR") 
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "quantity=1") 
    ''bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "cmd=_s-xclick") 'DONT' specify the cmd parameter, if you specify it, it wont work, paypal will give you an error 

    ''build the parameter string 
    Dim paramBuilder As New StringBuilder 
    For Each kv As KeyValuePair(Of String, String) In NVP 
     Dim st As String 
     st = kv.Key & "=" & HttpUtility.UrlEncode(kv.Value) & "&" 
     paramBuilder.Append(st) 
    Next 

    Dim param As String 
    param = paramBuilder.ToString 
    param = param.Substring(0, param.Length - 1) ''remove the last '&' 


    ''Create web request and web response objects, make sure you using the correct server (sandbox/live) 
    Dim wrWebRequest As HttpWebRequest = DirectCast(WebRequest.Create(paypalApiServerUrl), HttpWebRequest) 
    wrWebRequest.Method = "POST" 


    Dim requestWriter As New StreamWriter(wrWebRequest.GetRequestStream()) 
    requestWriter.Write(param) 
    requestWriter.Close() 

    '' Get the responseReader 
    Dim responseReader As StreamReader 
    responseReader = New StreamReader(wrWebRequest.GetResponse().GetResponseStream()) 

    ''read the response 
    Dim responseData As String 
    responseData = responseReader.ReadToEnd() 
    responseReader.Close() 


    ''url-decode the results 
    Dim result As String 
    result = HttpUtility.UrlDecode(responseData) 

    Dim formattedResult As String 

    formattedResult = "Request on " & paypalApiServerUrl & vbCrLf & 
        HttpUtility.UrlDecode(param.Replace("&", vbCrLf & " ")) & vbCrLf & vbCrLf & 
        "Result:" & vbCrLf & HttpUtility.UrlDecode(responseData.Replace("&", vbCrLf & " ")) & vbCrLf & vbCrLf & 
        "--------------------------------------" & vbCrLf 

    ''show the results 
    Trace.WriteLine(formattedResult) 
    MessageBox.Show(formattedResult) 
End Sub 

Und hier ist der gleiche Code in C#

public static void PaypalThirdPartyPayNowButtonTest() 
{ 
    int bvCount = 0; //L_BUTTONVAR counter 
    Dictionary<string, string> NVP = new Dictionary<string, string>(); //Api Name-Value-Pair parameters 

    //paypal SANDBOX server 
    string paypalApiServerUrl = "https://api-3t.sandbox.paypal.com/nvp"; 

    //Api credentials of YOUR business paypal account 
    string yourApiUsername = "aso_1273063882_biz_api3.megatesto.it"; 
    string yourApiPassword = "1273063582"; 
    string yourApiSignature = "A22sd7623RGUsduDHDSFU57N7dfhfS23DUYVhdf85du8S6FJ6D5bfoh5"; 

    //Your CUSTOMER identification data 
    string customerEmailID = "[email protected]"; 
    string customerMerchantID = "3S4EF7BI96YHS"; 

    //use YOUR identification data 
    NVP.Add("USER", yourApiUsername); 
    NVP.Add("PWD", yourApiPassword); 
    NVP.Add("SIGNATURE", yourApiSignature); 

    //use your CUSTOMER identification data 
    NVP.Add("SUBJECT", customerEmailID); 
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "business=" + customerMerchantID); 

    //Api method name and version 
    NVP.Add("METHOD", "BMCreateButton"); 
    NVP.Add("VERSION", "85.0"); 

    //method specific parameters 
    NVP.Add("BUTTONCODE", "ENCRYPTED"); 
    NVP.Add("BUTTONTYPE", "BUYNOW"); 
    NVP.Add("BUTTONSUBTYPE", "PRODUCTS"); 

    //Buynow button specific parameters 
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "lc=IT"); 
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "button_subtype=PRODUCTS"); 
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "item_name=Test_product"); 
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "item_number=123456"); 
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "amount=12.00"); 
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "currency_code=EUR"); 
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "quantity=1"); 
    //bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "cmd=_s-xclick") //DON'T specify the cmd parameter, if you specify it, it wont work, paypal will give you an error 


    //build the parameter string 
    StringBuilder paramBuilder = new StringBuilder(); 
    foreach (KeyValuePair<string, string> kv in NVP) 
    { 
     string st = kv.Key + "=" + System.Web.HttpUtility.UrlEncode(kv.Value) + "&"; 
     paramBuilder.Append(st); 
    } 

    string param = paramBuilder.ToString(); 
    param = param.Substring(0, param.Length - 1); //remove the last '&' 


    //Create web request and web response objects, make sure you using the correct server (sandbox/live) 
    System.Net.HttpWebRequest wrWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(paypalApiServerUrl); 
    wrWebRequest.Method = "POST"; 

    System.IO.StreamWriter requestWriter = new System.IO.StreamWriter(wrWebRequest.GetRequestStream()); 
    requestWriter.Write(param); 
    requestWriter.Close(); 


    //Get the responseReader 
    System.IO.StreamReader responseReader = new System.IO.StreamReader(wrWebRequest.GetResponse().GetResponseStream()); 
    string responseData = responseReader.ReadToEnd(); 
    responseReader.Close(); 

    //url-decode the results 
    string result = System.Web.HttpUtility.UrlDecode(responseData); 

    string formattedResult = "Request on " + paypalApiServerUrl + "\r\n" + System.Web.HttpUtility.UrlDecode(param.Replace("&", "\r\n ")) + "\r\n\r\nResult:\r\n" + System.Web.HttpUtility.UrlDecode(responseData.Replace("&", "\r\n ")) + "\r\n\r\n--------------------------------------\r\n"; 

    //show the results 
    System.Diagnostics.Trace.WriteLine(formattedResult); 
    System.Windows.Forms.MessageBox.Show(formattedResult); 
} 

Ich wünsche allen einen guten Rutsch ins PayPal Integration :-)

Update (für PHP-Coder)
@style ist für ein funktionierendes PHP Beispiel zu fragen ... Ich don Ich kenne PHP nicht, aber ich habe einige Links gefunden, die nützliche Informationen für den PHP - Codierer enthalten können: Sie können in diesen Quelldateien nach BMCreateButton api suchen:

+0

Das Code-Beispiel, das Sie zur Verfügung gestellt fast für mich gearbeitet - Ich hatte die Änderung der Version von 85 bis 65,2, damit es funktioniert. – 79IT

+0

@ 79IT gut zu wissen. Danke für den Ratschlag :-) – Max

+0

@Max von wo ich meine ApiSignature finden kann –