2016-11-09 78 views
1

使用Java paypal-sdk創建貝寶「立即購買」按鈕時遇到困難。單一產品似乎工作正常。我希望該按鈕能夠通過產品價格,說明和商品編號進入結帳頁面,而不是可編輯的。這是看我的代碼。首先,我創建了一系列按鈕變量。 (此代碼剪斷是在Groovy)使用多種產品創建貝寶立即購買按鈕(java sdk)

List<String> buttonVarList = new ArrayList<String>()  
int count = 1 
int size = priceMap.size() 
double totalPrice = 0.0 

for (Map.Entry<String, PriceInfo> entry : priceMap.entrySet()) 
{ 
    String skuKey = entry.getKey() 
    PriceInfo priceInfo = entry.getValue() 

    String itemNum = (size > 1) ? "_" + String.valueOf(count) + "=" : "=" 
    Product product = Product.findByProductCode(skuKey) 
    buttonVarList.add("item_name" + itemNum + product.productName) 
    buttonVarList.add("item_number" + itemNum + skuKey) 
    buttonVarList.add("amount" + itemNum + priceInfo.unitPrice) 
    buttonVarList.add("quantity" + itemNum + priceInfo.qty) 
    totalPrice += priceInfo.totalPrice 
    count++ 
} 

buttonVarList.add("currency_code=" + currency) 
buttonVarList.add("business=" + grailsApplication.config.grails.paypal.email) 
buttonVarList.add("subtotal=" + totalPrice) 
buttonVarList.add("notify_url=" + grailsApplication.config.grails.paypal.notifyPaypal) 
buttonVarList.add("return=" + grailsApplication.config.grails.paypal.successPaypal) 
buttonVarList.add("cancel_return=" + grailsApplication.config.grails.paypal.cancelPaypal) 
Payment payment = createTransaction(null, priceMap, request.getRemoteAddr(), "PAYPAL") 
buttonVarList.add("transactionId=" + payment.transactionId) 
buttonVarList.add("buyerId=" + payment.buyerId) 
return paypalApi.createButton(buttonVarList) 

後,我創建按鈕VAR列表,創建我的加密的按鍵。

BMCreateButtonRequestType requestType = new BMCreateButtonRequestType(); 
requestType.setButtonType(ButtonTypeType.fromValue("BUYNOW")); 
requestType.setButtonCode(ButtonCodeType.fromValue("ENCRYPTED")); 
requestType.setButtonLanguage("en"); 
requestType.setButtonVar(buttonVarList); 

隨着百腦匯的按鈕類型,按鈕會爲單個產品的工作,但對於多個產品(ITEM_NAME_1,item_name_2變量等),它似乎無法識別產品和結帳頁面有價格和說明編輯。從文檔中我可以看到這可能是因爲它不能識別附加產品「如果省略此變量,買方就會看到一個可以輸入項目名稱的字段。」

我也嘗試使用CART按鈕類型,它適用於單個產品,但對於多個產品會返回錯誤11929「購物車按鈕必須具有指定的項目名稱和數量。」

這是在結帳購物車中指定多個產品的正確方法嗎?我覺得我必須錯過簡單的東西。謝謝您的幫助。

編輯1:

我曾嘗試加入購物車上傳選項「上傳= 1」未加密的購物車按鈕。如果我然後從代碼中的項目按鈕變量中刪除下劃線,然後重新將它們添加到生成的按鈕(並刪除add = 1,上傳似乎不會覆蓋..)它似乎工作。我顯然無法做到這一點,因爲我需要加密按鈕..但至少我可以看到有一種方法來實現它的工作。也許我應該拋棄PayPal Java Button Manager API?

+0

你有意在第一個代碼片段中沒有分號嗎?導致沒有分號的java會導致你的問題... –

+0

對不起,這是在一個Grails應用程序,所以第一個代碼剪切在Groovy中。第二個剪輯是在Java中使用java paypal-sdk – Arbel

+0

我不是你的問題家庭,但你可以在這裏找到一些東西.. http://dreamix.eu/blog/java/integration-with-paypal-java-sdk – user4342532

回答

0

這個API看起來是很容易混淆的記錄,但我認爲,貝寶現在購買按鈕,不管你如何生成它們,僅供單個項目的購買 - 這就是他們的全部要點:

https://www.paypal.com/bm/cgi-bin/webscr?cmd=_singleitem-intro-outside

即使用添加到購物車按鈕 - 的意圖仍然是它是要添加到購物車中的單個項目:

https://www.paypal.com/bm/cgi-bin/webscr?cmd=_shoppingcart-intro-outside

你會然後去到你的購物車和補償lete在那裏購買 - 但既加入購物車,現在購買,看我的目的是爲單件物品設計。一旦你到了購物車 - 那麼你正在處理多個項目。

+0

您可以使用cart upload命令添加多個產品。https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/cart_upload/這是我們在手動創建表單時在我們的現場使用的。問題是java paypal sdk似乎忽略了購物車上傳參數。 – Arbel