All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ijpay.paypal.accesstoken.AccessTokenKit Maven / Gradle / Ivy


package com.ijpay.paypal.accesstoken;

import cn.hutool.core.util.StrUtil;
import com.ijpay.core.IJPayHttpResponse;
import com.ijpay.core.utils.RetryUtils;
import com.ijpay.paypal.PayPalApi;
import com.ijpay.paypal.PayPalApiConfig;
import com.ijpay.paypal.PayPalApiConfigKit;
import com.ijpay.paypal.cache.DefaultAccessTokenCache;
import com.ijpay.paypal.cache.IAccessTokenCache;

import java.util.concurrent.Callable;

/**
 * 

IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。

* *

不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。

* *

IJPay 交流群: 723992875、864988890

* *

Node.js 版: https://gitee.com/javen205/TNWX

* * @author Javen */ public class AccessTokenKit { private static IAccessTokenCache cache = new DefaultAccessTokenCache(); public static IAccessTokenCache getCache() { return cache; } public static void setCache(IAccessTokenCache cache) { AccessTokenKit.cache = cache; } /** * 获取当前线程中的 AccessToken * * @return {@link AccessToken} */ public static AccessToken get() { return get(PayPalApiConfigKit.getApiConfig().getClientId(), false); } /** * 获取当前线程中的 AccessToken * * @param forceRefresh 是否强制刷新 * @return {@link AccessToken} */ public static AccessToken get(boolean forceRefresh) { return get(PayPalApiConfigKit.getApiConfig().getClientId(), forceRefresh); } /** * 通过 clientId 来获取 AccessToken * * @param clientId 应用编号 * @return {@link AccessToken} */ public static AccessToken get(String clientId) { return get(clientId, false); } /** * 通过 clientId 来获取 AccessToken * * @param clientId 应用编号 * @param forceRefresh 是否强制刷新 * @return {@link AccessToken} */ public static AccessToken get(String clientId, boolean forceRefresh) { IAccessTokenCache accessTokenCache = AccessTokenKit.getCache(); // 从缓存中获取 AccessToken if (!forceRefresh) { String json = accessTokenCache.get(clientId); if (StrUtil.isNotEmpty(json)) { AccessToken accessToken = new AccessToken(json, 200); if (accessToken.isAvailable()) { return accessToken; } } } PayPalApiConfig apiConfig = PayPalApiConfigKit.getApiConfig(clientId); AccessToken result = RetryUtils.retryOnException(3, new Callable() { @Override public AccessToken call() { IJPayHttpResponse response = PayPalApi.getToken(apiConfig); return new AccessToken(response.getBody(), response.getStatus()); } }); // 三次请求如果仍然返回了不可用的 AccessToken 仍然 put 进去,便于上层通过 AccessToken 中的属性判断底层的情况 if (null != result) { // 利用 clientId 与 accessToken 建立关联,支持多账户 accessTokenCache.set(clientId, result.getCacheJson()); } return result; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy