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