card is working..

This commit is contained in:
jillingk
2023-05-19 10:56:09 +02:00
parent 15cae99ce9
commit 5c048d1876
8 changed files with 76 additions and 41 deletions

View File

@@ -1 +1 @@
1.5:8c33c12b-0476-4308-a4eb-0a0e3f6e7c04
1.5:1bc4bf70-8db5-474a-b5a2-f8fb2ae33f67

View File

@@ -1 +1 @@
1684332805
1684402767

View File

@@ -1 +1 @@
8c33c12b-0476-4308-a4eb-0a0e3f6e7c04
1bc4bf70-8db5-474a-b5a2-f8fb2ae33f67

View File

@@ -1 +1 @@
f8191b6c631844249c51d3efa644d6e5
ab65842e8fd249f696bf8d5e92f3108d

View File

@@ -1,27 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

View File

@@ -17,6 +17,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
implementation 'com.adyen:adyen-java-api-library:20.0.0'
implementation 'jakarta.ws.rs:jakarta.ws.rs-api:3.1.0'
implementation 'com.google.code.gson:gson:2.10.1'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation('org.springframework.boot:spring-boot-starter-test') {

View File

@@ -16,6 +16,8 @@ import com.adyen.enums.Environment;
import com.adyen.model.checkout.*;
import com.adyen.service.checkout.PaymentsApi;
import com.adyen.service.exception.ApiException;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
/**
* REST controller for using Adyen checkout API
@@ -64,14 +66,32 @@ public class CheckoutResource {
*/
@PostMapping("/initiatePayment")
public ResponseEntity<PaymentResponse> payments(@RequestBody String bodyRequest, HttpServletRequest request) throws IOException, ApiException {
var body = PaymentRequest.fromJson(bodyRequest);
System.out.println(bodyRequest);
log.info(bodyRequest);
// gson
Gson gson = new Gson();
JsonObject obj = gson.fromJson(bodyRequest, JsonObject.class);
com.google.gson.JsonObject method = obj.getAsJsonObject("paymentMethod");
CheckoutPaymentMethod paymentMethod = CheckoutPaymentMethod.fromJson(method.toString());
log.info(paymentMethod.toString());
String type = method.getAsJsonPrimitive("type").toString();
log.info(type);
BrowserInfo browserInfo;
try {
JsonObject obj2 = gson.fromJson(bodyRequest, JsonObject.class);
com.google.gson.JsonObject browser = obj2.getAsJsonObject("browserInfo");
browserInfo = BrowserInfo.fromJson(browser.toString());
} catch (Exception exception){
browserInfo = new BrowserInfo();
}
var paymentRequest = new PaymentRequest();
paymentRequest.setMerchantAccount(merchantAccount); // required
paymentRequest.setChannel(PaymentRequest.ChannelEnum.WEB); // required
var amount = new Amount()
.currency(findCurrency(body.getPaymentMethod().getActualInstance().getClass().getTypeName()))
.currency(findCurrency(type))
.value(1000L); // value is 10€ in minor units
paymentRequest.setAmount(amount);
@@ -85,13 +105,13 @@ public class CheckoutResource {
// required for 3ds2 native flow
paymentRequest.setOrigin("http://localhost:8080");
// required for 3ds2
paymentRequest.setBrowserInfo(body.getBrowserInfo());
paymentRequest.setBrowserInfo(browserInfo);
// required by some issuers for 3ds2
paymentRequest.setShopperIP(request.getRemoteAddr());
paymentRequest.setPaymentMethod(body.getPaymentMethod());
paymentRequest.setPaymentMethod(paymentMethod);
var type = body.getPaymentMethod().getActualInstance().getClass().getTypeName();
//var type2 = body.getPaymentMethod().getActualInstance().getClass().getTypeName();
// required for Klarna
if (type.contains("klarna")) {
paymentRequest.setCountryCode("DE");
@@ -112,6 +132,7 @@ public class CheckoutResource {
log.info("REST request to make Adyen payment {}", paymentRequest);
var response = paymentsApi.payments(paymentRequest);
log.info(response.toJson());
return ResponseEntity.ok()
.body(response);
}
@@ -140,6 +161,7 @@ public class CheckoutResource {
*/
@GetMapping("/handleShopperRedirect")
public RedirectView redirect(@RequestParam(required = false) String payload, @RequestParam(required = false) String redirectResult, @RequestParam String orderRef) throws IOException, ApiException {
log.info("skibidab");
var detailsRequest = new DetailsRequest();
if (redirectResult != null && !redirectResult.isEmpty()) {
PaymentCompletionDetails paymentCompletionDetails = PaymentCompletionDetails.fromJson(redirectResult);

View File

@@ -37,11 +37,15 @@ async function initCheckout() {
},
onSubmit: (state, component) => {
if (state.isValid) {
alert("");
console.info("onSubmit");
console.info(state, component);
handleSubmission(state, component, "/api/initiatePayment");
}
},
onAdditionalDetails: (state, component) => {
console.info("onAdditionalDetails");
console.info(state, component);
handleSubmission(state, component, "/api/submitAdditionalDetails");
},
};
@@ -102,18 +106,26 @@ async function callServer(url, data) {
// Handles responses sent from your server to the client
function handleServerResponse(res, component) {
console.log(res.resultCode);
if (res.action) {
component.handleAction(res.action);
console.log(res.action.actualInstance);
let action = res.action.actualInstance;
if(action.type = "REDIRECT"){
action.type = "redirect"
console.log(action.method);
}
console.log(action);
component.handleAction(action);
} else {
switch (res.resultCode) {
case "Authorised":
case "AUTHORISED":
window.location.href = "/result/success";
break;
case "Pending":
case "Received":
case "PENDING":
case "RECEIVED":
window.location.href = "/result/pending";
break;
case "Refused":
case "REFUSED":
window.location.href = "/result/failed";
break;
default: