2011-07-05 18 views
6

Używam PayP API NVP, wraz z BMCreateButton API, do generowania zaszyfrowanych przycisków z moim kodem Java.Paypal Przycisk Dodaj do koszyka - jak wygenerować za pomocą Java?

Mam najprostszą formę przycisku wymyślonego. Tak na przykład, dla T-shirt, który kosztuje 8,00, kod, aby wygenerować przycisk jest (należy pamiętać, że jest to fragment części zmiennych przycisk tylko) -

//...  
    NVPEncoder encoder = new NVPEncoder(); 
    encoder.add("METHOD", "BMCreateButton"); 
    encoder.add("BUTTONCODE","ENCRYPTED"); 
    encoder.add("BUTTONTYPE","CART"); 
    encoder.add("L_BUTTONVAR1","amount=8.00"); 
    encoder.add("L_BUTTONVAR2","item_number=6985855"); 
    encoder.add("L_BUTTONVAR3","item_name=T-Shirt"); 
//... 

To dość proste - ale realistycznie, produkty mają inne opcje. T-shirt może mieć opcje koloru i rozmiaru, które pojawią się jako menu na stronie. Dodatkowo każda opcja koloru/rozmiaru ma inną cenę.

To tutaj utknęłam. Pomiędzy stronami PayU na stronie HTML Variable Reference i BMCreateButton API jestem zdezorientowany!

kod HTML, który powinien być wyprowadzany z wybranych opcji menu będzie jak ten -

<input type="hidden" name="on0" value="Color &amp; Size">Color &amp; Size 
<input type="hidden" name="option_select0" value="Pink Small" /> 
<input type="hidden" name="option_amount0" value="6.00" /> 
<input type="hidden" name="option_select1" value="Pink Medium" /> 
<input type="hidden" name="option_amount1" value="7.00" /> 
<input type="hidden" name="option_select2" value="Pink Large" /> 
<input type="hidden" name="option_amount2" value="8.00" /> 

<select name="os0"> 
    <option value="Pink Small">Pink - Small $6.00 - (13)</option> 
    <option value="Pink Medium">Pink - Medium $7.00</option> 
    <option value="Pink Large">Pink - Large $8.00</option> 
</select> 

Jak mogę zakodować, że?

Najlepszym mogę wymyślić - ale nie działa, oczywiście - był to -

//... 
    NVPEncoder encoder = new NVPEncoder(); 
    encoder.add("METHOD", "BMCreateButton"); 
    encoder.add("BUTTONCODE","ENCRYPTED"); 
    encoder.add("BUTTONTYPE","CART"); 
    encoder.add("L_BUTTONVAR1","item_number=6985855"); 
    encoder.add("L_BUTTONVAR2","item_name=Dress"); 
    encoder.add("L_BUTTONVAR3","on0=Color & Size"); 
    encoder.add("L_BUTTONVAR4","option_select0=Pink Small"); 
    encoder.add("L_BUTTONVAR5","option_amount0=6.00"); 
    encoder.add("L_BUTTONVAR6","option_select1=Pink Medium"); 
    encoder.add("L_BUTTONVAR7","option_amount1=7.00"); 
    encoder.add("L_BUTTONVAR8","option_select2=Pink Large"); 
    encoder.add("L_BUTTONVAR9","option_select2=8.00"); 

    encoder.add("OPTION0NAME","Color & Size"); 
    encoder.add("L_OPTION0SELECT0","Pink Small"); 
    encoder.add("L_OPTION0PRICE0","6.00"); 
    encoder.add("L_OPTION0SELECT1","Pink Medium"); 
    encoder.add("L_OPTION0PRICE1","7.00"); 
    encoder.add("L_OPTION0SELECT2","Pink Large"); 
    encoder.add("L_OPTION0PRICE2","8.00"); 
//... 

Czy ktoś mógłby mi pomóc? Dziękuję :)

Odpowiedz

7

Po kilku korespondencjach z Paypal przez ich stronę Merchant Support, w końcu dostałem odpowiedź, której potrzebowałem. Przy okazji, jeśli kiedykolwiek masz problem z API Paypal i po niestrudzonym szukaniu na swojej stronie, wciąż nie znalazłeś odpowiedzi, której potrzebujesz (obwiniasz ich biedną organizację i brak dobrej, dokładnej dokumentacji) - I Zachęcam do skontaktowania się ze wsparciem technicznym i/lub programistą za pośrednictwem strony internetowej Merchant Support. To prawie jedyny sposób, aby uzyskać odpowiedź!

Jeśli jesteś programistą Java takim jak ja, ten kod również powinien ci się przydać.

public static String createEncryptedButton(PrintWriter out) throws Exception {   
    String returnResult = "";   
    NVPEncoder encoder = new NVPEncoder(); 

    encoder.add("METHOD","BMCreateButton"); 

    encoder.add("BUTTONCODE","ENCRYPTED"); 
    encoder.add("BUTTONTYPE","CART"); 
    encoder.add("BUTTONSUBTYPE","PRODUCTS");   
    encoder.add("L_BUTTONVAR0","business="+businessEmail); //use your sandbox or paypal email 
    encoder.add("L_BUTTONVAR1","item_name=Dress"); 
    encoder.add("L_BUTTONVAR2","item_number=100100"); 
    encoder.add("OPTION0NAME","Color and Size"); 
    encoder.add("L_OPTION0SELECT0","Pink Small"); 
    encoder.add("L_OPTION0PRICE0","6.00"); 
    encoder.add("L_OPTION0SELECT1","Pink Medium"); 
    encoder.add("L_OPTION0PRICE1","7.00"); 
    encoder.add("L_OPTION0SELECT2","Pink Large"); 
    encoder.add("L_OPTION0PRICE2","8.00"); 

    String strNVPString = encoder.encode(); 
    String ppresponse = call(strNVPString,out); 
    NVPDecoder results = new NVPDecoder(); 
    results.decode(ppresponse);     

    String buttonCode = results.get("WEBSITECODE"); 

    out.print("the code is :"+buttonCode);    

    return returnResult; 
} 

    public static String call(String payload, PrintWriter out) throws Exception { 

//Remember to setup your API credentials, whether you're using Sandbox 
//for testing or Paypal when you go live 
String USER = "yourUsername"; //API Username 
String PWD = "yourPassword"; //API Password 
String SIGNATURE = "yourSignature"; //API Signature 
String VERSION = "74.0"; //Version numbers differ from Paypal and Sandbox site. Do View > Source and look in source code for current version number under each site. 

StringBuffer request = new StringBuffer(); 
request.append("USER="+USER+"&PWD="+PWD+"&SIGNATURE="+SIGNATURE+"&VERSION="+VERSION); 
request.append("&"); 


//this is for Sandbox testing 
//when you go live with paypal, switch it to 
//https://api-3t.paypal.com/nvp 
URL url = new URL("https://api-3t.sandbox.paypal.com/nvp"); 

     HttpsURLConnection connection = (HttpsURLConnection)url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setUseCaches(false); 
     connection.setRequestProperty("Content-Type", "text/namevalue"); 
     DataOutputStream outst = new DataOutputStream(connection.getOutputStream());   
     outst.write(request.toString().getBytes()); 
     outst.close(); 

     // Read the gateway response 
     BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
     StringBuffer sb = new StringBuffer(); 
     String line; 
     while ((line = in.readLine()) != null) { 
      sb.append(line); 
     } 
     in.close(); 
     return sb.toString(); 
    } // call 
+0

Próbuję użyć interfejsu API BMCreateButton w .Net, dokładnie tak, jak robisz to w java. Konfiguruję konto biznesowe sandbox, mam referencje API, napisałem kod, działa, otrzymuję odpowiedź BMCreateButton, ale kiedy umieszczam kod HTML (generowany przez BMCreateButton) na stronie internetowej: Kiedy klikam przycisk "Kup teraz "Przycisk Jestem zabrany na stronę PayPal, która faktycznie POKAZUJE całą wartość (nazwa przedmiotu, cena produktu ...) ALE mówi:" Wystąpił problem z odszyfrowaniem twojego bezpiecznego zamówienia. Skontaktuj się ze sprzedawcą. " Masz pojęcie, gdzie jest błąd? Nie skonfigurowałem żadnego certyfikatu SSL, czy to ważne? – Max

+0

Oto kod, którego używam http://stackoverflow.com/questions/9939960/how-to-use-the-bmcreatebutton-nvp-paypal-api-to-create-encrypted-paynow-button Próbuję aby utworzyć prosty zaszyfrowany przycisk PayNow. Czy masz pojęcie o tym, co robię źle? – Max

Powiązane problemy