2011-07-05 25 views
6

Java kodumla şifrelenmiş düğmeler oluşturmak için BMCreateButton API ile birlikte Paypal NVP API'sini kullanıyorum.Paypal Sepete Ekle butonu - Java ile nasıl üretilir?

Anlaşılan bir düğmenin en basit biçimini aldım. Yeterince basit

//...  
    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"); 
//... 

- Yani örnek olarak, 8.00 maliyeti bir tişört için, bir düğmeye oluşturmak için kodu (unutmayın, bu düğme değişkenleri bölümünün bir pasajı yalnızca) - ama gerçekçi olarak, ürünlerin başka seçenekleri var. Bir T-Shirt, sayfada html<select> menüleri olarak görünecek renk ve boyut seçeneklerine sahip olabilir. Ayrıca, her renk/boyut seçeneğinin farklı bir fiyatı olur.

Burada sıkışıp kaldım. Paypal'da HTML Variable Reference ve BMCreateButton API sayfaları arasında, kafam karıştı! seçme menü seçenekleri ile çıktılanmasını

HTML kodu böyleolacağını -

<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> 

Bunu nasıl kod?

ben ile gelebilir iyi - ama tabii ki işe yaramadı -

//... 
    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"); 
//... 

biri bana yardım edebilir - bu oldu? Teşekkürler :)

cevap

7

Merchant Support sitesinden Paypal ile birkaç yazışmanın ardından, ihtiyacım olan cevabı elde ettim. Bu arada, Paypal'ın API'larıyla ilgili bir sorun yaşarsanız ve sitelerine yorulmadan baktıktan sonra, ihtiyacınız olan cevabı hala bulamadınız (onların zayıf organizasyonlarını ve iyi, kapsamlı, belgelerinin eksikliğini suçlayın) - I Teknik ve/veya Geliştirici Destek ekibine Merchant Support sitesinden ulaşabilirsiniz. Bir cevap almak için hemen hemen tek yolu!

Benim gibi bir Java geliştiricisiyseniz, bu kod da sizin için kullanışlı gelmelidir.

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

BMCreateButton API'sini .Net'de tam olarak java'da yaptığınız gibi kullanmaya çalışıyorum. Sandbox işletme hesabımı kurdum, API kimlik bilgileri aldım, kodu yazdım, işe yarıyor, BMCreateButton yanıtını alıyorum, ancak bir web sayfasına HTML (BMCreateButton tarafından oluşturulduğunda) koyduğumda: "Şimdi al" ı tıklıyorum "düğmesi aslında tüm değeri (öğe adı, madde fiyatı ...) GÖSTEREMİZ paypal web sitesine götürüldüm ama" Güvenli siparişin şifre çözme ile ilgili bir sorun vardı. Lütfen satıcınıza başvurun. " Hatanın nerede olduğu hakkında bir fikrin var mı? Herhangi bir SSL sertifikası ayarlamadım, bu önemli mi? – Max

+0

İşte kullanıyorum http://stackoverflow.com/questions/9939960/how-to-use-the-bmcreatebutton-nvp-paypal-api-to-create-encrypted-paynow-button kullanıyorum kod Basit şifreli bir PayNow düğmesi oluşturmak için. Neyi yanlış yaptığım hakkında bir fikrin var mı? – Max

İlgili konular