使用多个产品创建PayPal立即购买按钮(java sdk)

时间:2016-11-09 17:50:03

标签: java paypal

我无法创建PayPal"立即购买"使用Java paypal-sdk的按钮。单个产品似乎工作正常。我希望按钮能够使用产品价格,描述和商品编号进入结帐页面,并且不可编辑。这是我的代码。首先,我创建了我的按钮变量数组。 (此代码剪辑在Groovy中)

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

使用BUYNOW作为按钮类型,该按钮适用于单个产品,但对于多个产品(item_name_1,item_name_2变量等),它似乎无法识别产品,结帐页面的价格和描述可编辑。从文档中我可以看到这可能是因为它无法识别其他产品&#34;如果省略此变量,买家会看到一个可以输入项目名称的字段。&#34;

我也尝试使用适用于单个产品的CART按钮类型,但对于多个产品,会返回错误11929&#34;购物车按钮必须指定商品名称和金额。&#34;

这是在结帐购物车中指定多个产品的正确方法吗?我觉得我一定会错过一些简单的东西。谢谢你的帮助。

编辑1:

我尝试添加购物车上传选项&#34; upload = 1&#34;使用未加密的购物车按钮。如果我然后从代码中的项目按钮变量中删除下划线,然后手动重新添加到生成的按钮(并删除add = 1,上传似乎没有覆盖..)它似乎工作。我显然无法做到这一点,因为我需要加密按钮..但至少我可以看到有办法让它工作。也许我应该放弃Paypal Java Button Manager API?

2 个答案:

答案 0 :(得分:0)

此API看起来非常容易混淆,但我认为PayPal BuyNow按钮,无论您如何生成它们,都是针对单件商品购买 - 这就是他们的全部观点:

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

即使使用添加到购物车按钮 - 目的仍然是您要添加到购物车中的单个商品:

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

然后你去购物车并在那里完成购买 - 但两者都加入购物车并立即购买我认为是专为单品设计的。一旦你到达购物车 - 那么你正在处理多个项目。

答案 1 :(得分:0)

我认为这不可行,但您可以随时为所有符合一次结帐条件的多种产品创建一个Buttons for single purchases

但最好也是最灵活的解决方案是使用Buttons for shopping cart purchases