2011-07-05 43 views
6

Tôi đang sử dụng API NVP Paypal, cùng với BMCreateButton API, để tạo các nút được mã hóa bằng mã Java của tôi.Paypal Thêm vào giỏ hàng nút - làm thế nào để tạo ra với Java?

Tôi có hình thức đơn giản nhất của nút được tìm ra. Ví dụ, đối với áo phông có giá 8,00, mã để tạo nút là (hãy ghi nhớ, đây chỉ là một phần của các nút biến một phần) -

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

Đơn giản là đủ - nhưng thực tế, sản phẩm có các tùy chọn khác. Áo phông có thể có các tùy chọn màu sắc và kích thước, sẽ xuất hiện dưới dạng các menu html<select> trên trang. Ngoài ra, mỗi tùy chọn màu/kích thước sẽ có mức giá khác nhau.

Đây là nơi tôi bị kẹt. Giữa các trang HTML Variable ReferenceBMCreateButton API trên Paypal, tôi đã nhầm lẫn!

Mã Html cần được outputted với chọn tùy chọn trình đơn sẽ như thế này -

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

Làm thế nào để mã hóa đó?

Điều tốt nhất tôi có thể đưa ra - nhưng đã không làm việc, tất nhiên - là này -

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

Ai đó có thể xin vui lòng giúp tôi ra? Cảm ơn bạn :)

Trả lời

7

Sau một vài thư từ với Paypal qua trang web Merchant Support của tôi, cuối cùng tôi đã nhận được câu trả lời tôi cần. Nhân tiện, nếu bạn gặp vấn đề với API của Paypal, và sau khi tìm kiếm không mệt mỏi trên trang web của họ, bạn vẫn chưa tìm thấy câu trả lời mình cần (đổ lỗi cho tổ chức nghèo của họ và thiếu tài liệu, kỹ lưỡng, tốt cho điều đó) - I yêu cầu bạn liên hệ với Bộ phận hỗ trợ kỹ thuật và/hoặc nhà phát triển của họ thông qua trang web Merchant Support của họ. Đó là cách duy nhất để có được câu trả lời!

Nếu bạn là nhà phát triển Java như tôi, mã này cũng có ích cho bạn.

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

Tôi đang cố gắng sử dụng API BMCreateButton trong .Net, chính xác như cách bạn làm trong java. Tôi thiết lập tài khoản business sandbox, tôi nhận được thông tin đăng nhập API, tôi đã viết mã, nó hoạt động, tôi nhận được câu trả lời BMCreateButton, nhưng khi tôi đặt HTML (được tạo bởi BMCreateButton) trên trang web: Khi tôi nhấp vào "Mua ngay bây giờ "nút tôi được đưa đến trang web paypal, thực sự hiển thị tất cả giá trị (tên mục, giá mặt hàng ...) NHƯNG nói rằng" Đã xảy ra sự cố với việc giải mã lệnh bảo mật của bạn. Vui lòng liên hệ với người bán của bạn ". Bất kỳ ý tưởng về nơi là lỗi? Tôi đã không thiết lập bất kỳ chứng chỉ SSL nào, điều này có quan trọng không? – Max

+0

Đây là mã tôi đang sử dụng http://stackoverflow.com/questions/9939960/how-to-use-the-bmcreatebutton-nvp-paypal-api-to-create-encrypted-paynow-button Tôi đang cố gắng để tạo một nút PayNow được mã hóa đơn giản. Bạn có bất kỳ ý tưởng về những gì tôi đang làm sai? – Max

Các vấn đề liên quan