java支付可以工作,但用户永远不知道它是订阅还是Paypal页面上的一次性支付
因此,我将Paypal集成到我的支付流程中,结果如下:
- 用户出现在页面上。单击“付款”按钮
- 用户首先被重定向到调用
SetExpressCheckout
的页面,然后被重定向到Paypal。(比如说77美元,他要开一次账单,然后每月开一次账单,为期一年。因此我没有设定初始金额,而是直接扣除。)李> - 返回时,他单击确认按钮,使用
DoExpressCheckout
扣除一次性付款,并创建账单配置文件李>
一切正常。我每个月都收到付款。用户在开始时没有两次计费
问题是:当用户被重定向到Paypal时,他只看到我设置的项目名称和描述。也就是说,Paypal没有说明交易是一次性的还是订阅,就像您使用简单的订阅按钮进行支付一样。Paypal只提到金额,但没有提到交易类型
NVPEncoder encoder = new NVPEncoder();
encoder.add("METHOD","SetExpressCheckout");
encoder.add("RETURNURL",returnURL);
encoder.add("CANCELURL",cancelURL);
encoder.add("CURRENCYCODE","USD");
encoder.add("AMT",amt);
encoder.add("BILLINGPERIOD", "Month");
encoder.add("BILLINGFREQUENCY", "1");
encoder.add("PROFILESTARTDATE",dateFormatGmt.format(new Date()));
encoder.add("L_BILLINGTYPE0", "RecurringPayments");
encoder.add("L_BILLINGAGREEMENTDESCRIPTION0",package_name);
encoder.add("L_NAME0",package_name);
encoder.add("L_AMT0",amt);
encoder.add("L_QTY0","1");
String strNVPRequest = encoder.encode();
String ppresponse = (String) caller.call(strNVPRequest);
NVPDecoder resultValues = new NVPDecoder();
resultValues.decode(ppresponse);
String strAck = resultValues.get("ACK");
if (strAck !=null && !(strAck.equals("Success") ||
strAck.equals("SuccessWithWarning"))) {
response.sendRedirect("APIError.jsp");
} else {
response.sendRedirect(redirectUrl);
}
# 1 楼答案
你是否包括
L_BILLINGTYPE0=RecurringPayments
这就是贝宝登陆页面上应该改变的措辞
重述;使用(至少)以下参数调用以下API调用:
SetExpressCheckout
:和
CreateRecurringPaymentsProfile
与: