From f9de931c4457c2a6bfe395879e3b2f2bfd7d9692 Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期五, 26 五月 2023 16:55:34 +0800 Subject: [PATCH] 用户端代码 --- src/main/java/com/stylefeng/guns/modular/system/utils/PaymentProcessor.java | 196 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 128 insertions(+), 68 deletions(-) diff --git a/src/main/java/com/stylefeng/guns/modular/system/utils/PaymentProcessor.java b/src/main/java/com/stylefeng/guns/modular/system/utils/PaymentProcessor.java index 4113b63..4950298 100644 --- a/src/main/java/com/stylefeng/guns/modular/system/utils/PaymentProcessor.java +++ b/src/main/java/com/stylefeng/guns/modular/system/utils/PaymentProcessor.java @@ -1,87 +1,147 @@ package com.stylefeng.guns.modular.system.utils; +import com.alibaba.fastjson.JSON; import com.stripe.Stripe; -import com.stripe.exception.SignatureVerificationException; -import com.stripe.exception.StripeException; +import com.stripe.exception.*; import com.stripe.model.Customer; import com.stripe.model.PaymentIntent; +import com.stripe.model.PaymentMethod; +import com.stripe.model.PaymentMethodCollection; import com.stripe.net.Webhook; import com.stripe.param.CustomerCreateParams; import com.stripe.param.PaymentIntentCreateParams; import com.stripe.param.PaymentIntentUpdateParams; +import com.stripe.param.PaymentMethodListParams; import java.util.HashMap; import java.util.logging.Logger; public class PaymentProcessor { + public static String getMethod(String customer) throws StripeException { + + + PaymentMethodListParams params = + PaymentMethodListParams.builder() + .setCustomer(customer) + .setType(PaymentMethodListParams.Type.CARD) + .build(); + + PaymentMethodCollection paymentMethods = PaymentMethod.list(params); + String s = JSON.toJSONString(paymentMethods); + return s; + } + + + public static Boolean pay(String cus,String method,Long money) throws StripeException { + Stripe.apiKey = "sk_test_51Mu5D0KDN0sswRVwUNL5998QrX1VJkNrLsflVUXkEFH0cY2l9StrCc5O4c9gtzs7tLbVmeaTfyNL6pnrtw1tRClA00ZVfbNb3d"; + PaymentIntentCreateParams params = + PaymentIntentCreateParams.builder() + .setCurrency("usd") + .setAmount(money) + .setCustomer(cus) + .setPaymentMethod(method) + .setErrorOnRequiresAction(true) + .setConfirm(true) + .build(); + try { + PaymentIntent paymentIntent = PaymentIntent.create(params); + return true; + } catch (CardException err) { + // Error code will be authentication_required if authentication is needed + String paymentIntentId = err.getStripeError().getPaymentIntent().getId(); + PaymentIntent paymentIntent = PaymentIntent.retrieve(paymentIntentId); + System.out.println(paymentIntent.getId()); + return false; + }catch (RateLimitException e) { + // Too many requests made to the API too quickly + + return false; + } catch (InvalidRequestException e) { + // Invalid parameters were supplied to Stripe's API + return false; + } catch (AuthenticationException e) { + // Authentication with Stripe's API failed + // (maybe you changed API keys recently) + return false; + } catch (StripeException e) { + // Display a very generic error to the user, and maybe send + // yourself an email + return false; + } catch (Exception e) { + // Something else happened, completely unrelated to Stripe + return false; + } + } + + // 定义 Stripe API 密钥 - private static final String STRIPE_API_KEY = "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"; - - public PaymentProcessor() { - // 初始化 Stripe 对象并设置 API 密钥 - Stripe.apiKey = STRIPE_API_KEY; - } - - /** - * 创建一个 Stripe 客户,并保存他们的信用卡信息,以备将来使用。 - * 支持多种付款方式,例如支付宝、微信等。这里只是演示如何使用信用卡进行支付。 - * - * @param email 客户电子邮件地址 - * @param cardToken 由 Stripe.js 获取的信用卡令牌 - * @return Stripe 客户对象 - * @throws StripeException 如果创建客户或付款交易时出现错误 - */ - public Customer createCustomer(String email, String cardToken) throws StripeException { - - // 构造付款交易参数 - PaymentIntentCreateParams params = PaymentIntentCreateParams.builder() - .setAmount(1000L) // 设置要收取的金额,以美分为单位(例如 $10.00 = 1000 美分) - .setCurrency("usd") // 设置货币类型:USD(美元) - .setPaymentMethod(cardToken) // 设置由 Stripe.js 获取的信用卡令牌 - .build(); - - // 创建付款交易 - PaymentIntent paymentIntent = PaymentIntent.create(params); - - // 创建一个 Stripe 客户,将他们的付款方法与 Stripe 帐户关联在一起 - Customer customer = Customer.create( - CustomerCreateParams.builder() - .setEmail(email) // 设置客户的电子邮件地址 - .setPaymentMethod(paymentIntent.getPaymentMethod()) // 将付款方法与客户端 Stripe 帐户相关联 - .build() - ); - - // 返回创建的 Stripe 客户对象 - return customer; - } - - /** - * 从一个 Stripe 客户处收取付款。 - * - * @param customerId Stripe 客户 ID - * @param amount 要收取的金额,以美分为单位 - * @return Stripe 付款交易对象 - * @throws StripeException 如果捕获到 Stripe API 返回的错误 - */ - public static PaymentIntent charge(String customerId, long amount) throws StripeException { - - // 构造付款交易参数 - PaymentIntentCreateParams params = PaymentIntentCreateParams.builder() - .setCustomer(customerId) // 使用客户 ID 作为付款目标 - .setAmount(amount) // 设置要收取的金额,以美分为单位 - .setCurrency("usd").setDescription("1").setReturnUrl("") // 设置货币类型:USD(美元) - .build(); - - // 创建付款交易 - PaymentIntent paymentIntent = PaymentIntent.create(params); - - // 确认付款 - paymentIntent.confirm(); - - // 返回创建的 Stripe 付款交易对象 - return paymentIntent; - } +// private static final String STRIPE_API_KEY = "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"; +// +// public PaymentProcessor() { +// // 初始化 Stripe 对象并设置 API 密钥 +// Stripe.apiKey = STRIPE_API_KEY; +// } +// +// /** +// * 创建一个 Stripe 客户,并保存他们的信用卡信息,以备将来使用。 +// * 支持多种付款方式,例如支付宝、微信等。这里只是演示如何使用信用卡进行支付。 +// * +// * @param email 客户电子邮件地址 +// * @param cardToken 由 Stripe.js 获取的信用卡令牌 +// * @return Stripe 客户对象 +// * @throws StripeException 如果创建客户或付款交易时出现错误 +// */ +// public Customer createCustomer(String email, String cardToken) throws StripeException { +// +// // 构造付款交易参数 +// PaymentIntentCreateParams params = PaymentIntentCreateParams.builder() +// .setAmount(1000L) // 设置要收取的金额,以美分为单位(例如 $10.00 = 1000 美分) +// .setCurrency("usd") // 设置货币类型:USD(美元) +// .setPaymentMethod(cardToken) // 设置由 Stripe.js 获取的信用卡令牌 +// .build(); +// +// // 创建付款交易 +// PaymentIntent paymentIntent = PaymentIntent.create(params); +// +// // 创建一个 Stripe 客户,将他们的付款方法与 Stripe 帐户关联在一起 +// Customer customer = Customer.create( +// CustomerCreateParams.builder() +// .setEmail(email) // 设置客户的电子邮件地址 +// .setPaymentMethod(paymentIntent.getPaymentMethod()) // 将付款方法与客户端 Stripe 帐户相关联 +// .build() +// ); +// +// // 返回创建的 Stripe 客户对象 +// return customer; +// } +// +// /** +// * 从一个 Stripe 客户处收取付款。 +// * +// * @param customerId Stripe 客户 ID +// * @param amount 要收取的金额,以美分为单位 +// * @return Stripe 付款交易对象 +// * @throws StripeException 如果捕获到 Stripe API 返回的错误 +// */ +// public static PaymentIntent charge(String customerId, long amount) throws StripeException { +// +// // 构造付款交易参数 +// PaymentIntentCreateParams params = PaymentIntentCreateParams.builder() +// .setCustomer(customerId) // 使用客户 ID 作为付款目标 +// .setAmount(amount) // 设置要收取的金额,以美分为单位 +// .setCurrency("usd").setDescription("1").setReturnUrl("") // 设置货币类型:USD(美元) +// .build(); +// +// // 创建付款交易 +// PaymentIntent paymentIntent = PaymentIntent.create(params); +// +// // 确认付款 +// paymentIntent.confirm(); +// +// // 返回创建的 Stripe 付款交易对象 +// return paymentIntent; +// } } \ No newline at end of file -- Gitblit v1.7.1