【问题标题】:Paypal REST API in Java - getAccessToken returns nullJava 中的 Paypal REST API - getAccessToken 返回 null
【发布时间】:2016-03-18 03:00:58
【问题描述】:

我正在尝试设置 paypal API。但是 getAccessToken() 方法返回 null。在查看它提到使用 Payment.initConfig 或创建 OAuthTokenCredentials 的 API 时。两种方式的 accessToken 都返回为 null。

public static void createPayment() {
    String clientID = "xxxxxx"
    String clientSecret = "xxxxx";
    String paymentID = null;
    OAuthTokenCredential credentials;
    String accessToken;
    Properties prop = new Properties();

    try {
        prop.setProperty("service.Endpoint", "http://api.sandbox.paypal.com");
        prop.setProperty("clientID", clientID);
        prop.setProperty("clientSecret", clientSecret);

        prop.setProperty("http.GoogleAppEngine", "false");
        prop.setProperty("http.UseProxy", "false");

        prop.setProperty("http.ConnectionTimeOut", "5000");
        prop.setProperty("http.Retry", "1");
        prop.setProperty("http.ReadTimeOut", "30000");
        prop.setProperty("http.MaxConnection", "100");

        //tried this way. 
        credentials = Payment.initConfig(prop);

        //also tried this way.
        //accessToken = new OAuthTokenCredential(clientID, clientSecret).getAccessToken();

        accessToken = credentials.getAccessToken();
        Payment.get(accessToken, paymentID);
        APIContext apiContext = new APIContext(accessToken);
        Payment payment = new Payment();
        payment.setIntent("sale");
        payment.create(apiContext);            
    } catch (PayPalRESTException ex) {
        Logger.getLogger(PayPal.class.getName()).log(Level.SEVERE, null, ex);
    }

}

【问题讨论】:

    标签: api paypal


    【解决方案1】:

    在调用“getAccessToken”之前,你必须配置端点:

        // Sandbox (for testing) : https://api.sandbox.paypal.com
        // Live (production) : https://api.paypal.com
    
        Properties properties = new Properties();
        properties.setProperty("service.EndPoint", "https://api.paypal.com");
        ConfigManager.getInstance().load(properties);
    
        OAuthTokenCredential tokenCredential = new OAuthTokenCredential(clientId, clientSecret);
        String accessToken = tokenCredential.getAccessToken();
    

    更多信息请访问:PayPal-Java-SDK / GitHub

    【讨论】:

      【解决方案2】:

      从“sdk_config.properties”获取默认属性 可在 PayPal GitHub 获得:https://github.com/paypal/PayPal-Java-SDK 如果需要,添加或修改任何属性,然后:

      Payment.initConfig(properties);
      OAuthTokenCredential tokenCredential = new OAuthTokenCredential(clientId, clientSecret);
      

      【讨论】:

        【解决方案3】:

        我们最近创建了使用 PayPal Java SDK 的说明。你可以在这里阅读它们:https://github.com/paypal/PayPal-Java-SDK/wiki/Making-First-Call

        使用PayPal-Java-SDK,您不需要单独创建访问令牌。相反,您创建一个 APIContext 对象,并传递您的 clientId、secret 和 mode(sandbox/live)。您将此实例传递给所有 API 操作,SDK 会自动调用 oauth,并获取访问令牌。这还通过缓存访问令牌并重新使用它以供以后使用来提高性能。这只会使网络调用的数量减少一半。

        代码如下所示:

        APIContext context = new APIContext(clientId, clientSecret, "sandbox");
        
        Payment payment = new Payment();
        // Fill in all the details.
        payment.create(context);
        

        这里是解释这一点的 wiki 页面:https://github.com/paypal/PayPal-Java-SDK/wiki/Making-First-Call

        【讨论】:

          猜你喜欢
          • 2021-08-12
          • 2013-03-17
          • 2020-07-30
          • 1970-01-01
          • 1970-01-01
          • 2015-04-25
          • 2013-06-26
          • 1970-01-01
          • 2019-02-09
          相关资源
          最近更新 更多