Skip to content

Commit dc72137

Browse files
Merge pull request #28 from leonard1thecoder/sponsors-donate-through-stripe
invoking the stripe api methods
2 parents ed31b17 + 02a63b6 commit dc72137

File tree

3 files changed

+116
-8
lines changed

3 files changed

+116
-8
lines changed

src/main/java/org/airpenthouse/GoTel/controllers/SponsorsController.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package org.airpenthouse.GoTel.controllers;
22

3+
import com.stripe.exception.StripeException;
4+
import com.stripe.model.Customer;
35
import org.airpenthouse.GoTel.dtos.sponsors.SponsorsDonateRequest;
46
import org.airpenthouse.GoTel.dtos.sponsors.SponsorsRequest;
57
import org.airpenthouse.GoTel.services.sponsors.SponsorsService;
68
import org.airpenthouse.GoTel.util.PropertiesUtilManager;
79
import org.airpenthouse.GoTel.util.executors.SponsorsExecutors;
810
import org.airpenthouse.GoTel.util.mappers.SponsorsMapper;
11+
import org.airpenthouse.GoTel.util.payments.SponsorsDonateUsingStripe;
912
import org.springframework.beans.factory.annotation.Autowired;
1013
import org.springframework.http.ResponseEntity;
1114
import org.springframework.web.bind.annotation.*;
@@ -15,28 +18,49 @@
1518

1619
@RequestMapping("/api/sponsors")
1720
@RestController
18-
@CrossOrigin(origins="http://localhost:4200")
21+
@CrossOrigin(origins = "http://localhost:4200")
1922
public class SponsorsController {
2023

2124
@Autowired
2225
public SponsorsMapper mapper;
2326
@Autowired
2427
public SponsorsService service;
28+
@Autowired
29+
public SponsorsDonateUsingStripe stripeApi;
2530

26-
@PostMapping("/sponsorDonote")
31+
@PostMapping("/sponsorDonate")
2732
public ResponseEntity<List<SponsorsRequest>> sponsorsDonate(@RequestBody SponsorsDonateRequest request, UriComponentsBuilder builder) {
2833
var entity = mapper.toEntity(request);
2934
SponsorsExecutors.setMapper(mapper);
3035
SponsorsService.serviceHandle = "DONATE";
36+
Customer customerObj;
37+
try {
38+
customerObj = stripeApi.setCustomer(entity.getSponsorName(), entity.getSponsorSurname(), entity.getSponsorEmailAddress(), entity.getSponsorCellphoneNumber());
39+
entity.setId(customerObj.getId());
40+
} catch (StripeException e) {
41+
throw new RuntimeException(e);
42+
}
3143

3244
var entity2 = service.initializeSponsorsService(false, entity);
3345
if (entity2 == null) {
3446
return ResponseEntity.badRequest().build();
3547
} else if (entity2.isEmpty()) {
3648
return ResponseEntity.notFound().build();
3749
} else {
38-
var uri = builder.path("/api/sponsors/getSponsorByName/{sponsorName}").buildAndExpand(entity.getSponsorName()).toUri();
39-
return ResponseEntity.created(uri).body(entity2);
50+
try {
51+
stripeApi.setPaymentMethod(customerObj, entity.getCardNumber(), entity.getCvv(), Long.parseLong(entity.getCardDate()), Long.parseLong(entity.getCvv()));
52+
var payment = stripeApi.sponsorDonate(customerObj, entity.getDononationAmount(), "used");
53+
54+
if (payment) {
55+
var uri = builder.path("/api/sponsors/getSponsorByName/{sponsorName}").buildAndExpand(entity.getSponsorName()).toUri();
56+
return ResponseEntity.created(uri).body(entity2);
57+
}else {
58+
throw new RuntimeException();
59+
}
60+
} catch (StripeException | RuntimeException e) {
61+
throw new RuntimeException(e);
62+
}
63+
4064
}
4165
}
4266

src/main/java/org/airpenthouse/GoTel/entities/sponsors/SponsorEntity.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
import lombok.AllArgsConstructor;
55
import lombok.Getter;
6+
import lombok.Setter;
7+
import lombok.ToString;
68
import org.airpenthouse.GoTel.util.PropertiesUtilManager;
79
import org.airpenthouse.GoTel.util.executors.SponsorsExecutors;
810

@@ -13,17 +15,19 @@
1315
import java.util.List;
1416
import java.util.concurrent.*;
1517

18+
@ToString
1619
@AllArgsConstructor
1720
public class SponsorEntity extends SponsorsExecutors implements Callable<List<SponsorEntity>> {
1821

1922
@Getter
2023
private String sponsorName, SponsorSurname, sponsorEmailAddress, sponsorCellphoneNumber,
2124
sponsorReasonToDonate;
22-
25+
@Setter
26+
private String id;
2327
@Getter
2428
private String cardNumber, cvv, cardDate;
2529
@Getter
26-
private Double dononationAmount;
30+
private Long dononationAmount;
2731

2832
@Getter
2933
private LocalDateTime paymentDate;
@@ -49,7 +53,7 @@ private SponsorEntity(String sponsorName
4953
, String cardNumber
5054
, String cvv
5155
, String cardDate
52-
, Double dononationAmount
56+
, Long dononationAmount
5357
, LocalDateTime paymentDate) {
5458
this.sponsorName = sponsorName;
5559
SponsorSurname = sponsorSurname;
@@ -132,7 +136,7 @@ private List<SponsorEntity> resultSetData(ResultSet set) throws SQLException {
132136
, set.getString(6)
133137
, set.getString(7)
134138
, set.getString(8)
135-
, set.getDouble(9)
139+
, set.getLong(9)
136140
, LocalDateTime.parse(set.getString(10))));
137141
}
138142
return entities;
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package org.airpenthouse.GoTel.util.payments;
2+
3+
import com.stripe.exception.StripeException;
4+
import com.stripe.model.Charge;
5+
import com.stripe.model.Customer;
6+
import com.stripe.model.PaymentMethod;
7+
import com.stripe.net.RequestOptions;
8+
import com.stripe.param.ChargeCreateParams;
9+
import com.stripe.param.CustomerCreateParams;
10+
import com.stripe.param.PaymentMethodCreateParams;
11+
import org.springframework.stereotype.Component;
12+
13+
@Component
14+
public class SponsorsDonateUsingStripe {
15+
16+
RequestOptions requestOptions;
17+
public SponsorsDonateUsingStripe() {
18+
requestOptions = RequestOptions.builder()
19+
.setApiKey("key")
20+
.build();
21+
}
22+
23+
public Customer setCustomer(String sponsorName
24+
, String sponsorSurname
25+
, String sponsorEmailAddress
26+
, String sponsorCellphoneNumber)
27+
throws StripeException {
28+
CustomerCreateParams params =
29+
CustomerCreateParams.builder()
30+
.setName(sponsorName + " " + sponsorSurname)
31+
.setEmail(sponsorEmailAddress)
32+
.setPhone(sponsorCellphoneNumber)
33+
.build();
34+
return Customer.create(params,requestOptions);
35+
}
36+
37+
public PaymentMethod setPaymentMethod(Customer customer
38+
, String sponsorCardNumber
39+
, String sponsorCvc
40+
, Long expMonth
41+
, Long expYear)
42+
throws StripeException {
43+
44+
PaymentMethodCreateParams params =
45+
PaymentMethodCreateParams.builder()
46+
.setType(PaymentMethodCreateParams.Type.CARD)
47+
.setCustomer(customer.getId())
48+
.setCard(PaymentMethodCreateParams
49+
.CardDetails
50+
.builder()
51+
.setNumber(sponsorCardNumber)
52+
.setCvc(sponsorCvc)
53+
.setExpMonth(expMonth)
54+
.setExpYear(expYear)
55+
.build())
56+
.setBillingDetails(
57+
PaymentMethodCreateParams.BillingDetails.builder().setName("John Doe").build()
58+
)
59+
.build();
60+
61+
return PaymentMethod.create(params,requestOptions);
62+
}
63+
64+
public boolean sponsorDonate(Customer customer
65+
, Long amount
66+
, String currency)
67+
throws StripeException {
68+
ChargeCreateParams params =
69+
ChargeCreateParams.builder()
70+
.setCustomer(customer.getId())
71+
.setAmount(amount)
72+
.setCurrency(currency)
73+
.setSource("tok_visa")
74+
.build();
75+
Charge charge = Charge.create(params,requestOptions);
76+
return charge.getPaid();
77+
}
78+
79+
80+
}

0 commit comments

Comments
 (0)