【问题标题】:Paypal mobile express checkout with java使用 java 的 Paypal 移动快速结帐
【发布时间】:2012-06-14 23:13:31
【问题描述】:

我开发了一个需要与 paypal 集成的移动应用程序,我的后端服务器是 RESTfull java 服务器。因此,为了与贝宝集成,我从客户端获取“deviceReferenceTokenWithAppId”调用后端服务器上的 servlet 以及其他详细信息(cartId..etc),当请求到达 servlet 时,我执行一些后端操作并调用贝宝获取移动支付所需的特定“SetExpressCheckout”令牌。

StringBuilder postData = new StringBuilder();
        postData.append(USER).append("=").append(Constants.PAYPAL_MERCHANT_USER);
        postData.append("&").append(PASSWORD).append("=").append(Constants.PAYPAL_MERCHANT_PASSWORD);
        postData.append("&").append(SIGNATURE).append("=").append(Constants.PAYPAL_MERCHANT_SIGNATURE);
        postData.append("&").append(METHOD).append("=").append("SetExpressCheckout");
        postData.append("&").append(VERSION).append("=").append("88");
        postData.append("&").append(AMOUNT).append("=").append(amount.toString());
        postData.append("&").append(CANCEL_URL).append("=").append(Constants.PAYPAL_MERCHANT_CANCEL_URL);
        postData.append("&").append(RETURN_URL).append("=").append(Constants.PAYPAL_MERCHANT_RETURN_URL);
        byte[] postDataArr = postData.toString().getBytes(UTF-8);
        // Hit the the URL.

        URL url = new URL("https://api-3t.sandbox.paypal.com/nvp");
        HttpsURLConnection.setDefaultHostnameVerifier(new CustomizedHostnameVerifier());
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setUseCaches(false);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
        conn.setRequestProperty("Content-Length", Integer.toString(postDataArr.length));


        DataOutputStream output = new DataOutputStream( conn.getOutputStream());
        output.write( postDataArr );
        output.flush();
        output.close ();

        rc = conn.getResponseCode();

我的问题是,如果我调用 paypal nvp,我没有得到有效的令牌作为响应,而是出现以下错误,

Key - TIMESTAMP - value : 2012-06-11T18:16:02Z
 Key - CORRELATIONID - value : 207108cab758a
 Key - ACK - value : Failure
 Key - VERSION - value : 88
 Key - BUILD - value : 2975009
 Key - L_ERRORCODE0 - value : 10002
 Key - L_SHORTMESSAGE0 - value : Security error
 Key - L_LONGMESSAGE0 - value : Security header is not valid
 Key - L_SEVERITYCODE0 - value : Error

谁能告诉我为什么会出现这个错误?我错过了什么吗?

如果我能成功获得 TOKEN,接下来我必须将我的 servlet 响应重定向到以下 Url 以获取移动结帐视图到移动应用程序。

https://www.sandbox.paypal.com/webscr?cmd=_express-checkout-mobile&drt="+<deviceReferenceTokenWithAppId>+"&token="+<TOKEN from payal nvp>

如果我在这里做错了,是否有人可以指导我正确的道路..

【问题讨论】:

    标签: paypal


    【解决方案1】:

    这意味着您的 API 凭据对于您正在访问的端点不正确。
    尝试用“密码”替换“密码”;身份验证通过 PayPal 的“USER”、“PWD”和“SIGNATURE”完成。

    【讨论】:

    • 谢谢罗伯特。我发现了错误,我输入的是贝宝商家帐号而不是用户 ID。但是我仍然有一个问题,它没有在贝宝视图中显示要收取的金额,我尝试将“PAYMENTREQUEST_0_AMT”设置为 88.0 版本,将“AMT”设置为 62.0 版本的金额(2 个十进制数字值)。但它没有在贝宝窗口中显示为用户支付的所需金额。
    • 这是一个单独的问题,您最初没有提到。不管怎样,要解决这个问题;将“useraction=commit”附加到您的 PayPal 重定向 URL(因此它显示为 paypal.com/cgi-bin/…
    猜你喜欢
    • 2012-09-13
    • 2014-12-07
    • 1970-01-01
    • 2013-03-05
    • 2017-11-22
    • 2011-08-10
    • 2011-06-16
    • 2016-07-10
    • 2017-07-15
    相关资源
    最近更新 更多