liujie
2023-05-26 f9de931c4457c2a6bfe395879e3b2f2bfd7d9692
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package com.stylefeng.guns.modular.system.utils;
 
import com.alibaba.fastjson.JSON;
import com.stripe.Stripe;
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;
//    }
 
 
}