From a8080632ef488d3250353bb0b012c8d6ad1435e4 Mon Sep 17 00:00:00 2001
From: Dominik Hebeler <dominik@hebeler.club>
Date: Thu, 12 Sep 2024 06:32:06 +0200
Subject: [PATCH] 3ds only when required

---
 pass/app/payment_processor/Paypal.js | 42 +++++++++++++++++-----------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/pass/app/payment_processor/Paypal.js b/pass/app/payment_processor/Paypal.js
index 364597c..ee879c0 100644
--- a/pass/app/payment_processor/Paypal.js
+++ b/pass/app/payment_processor/Paypal.js
@@ -117,16 +117,16 @@ class Paypal extends PaymentProcessor {
 
     if (creditcard_payment) {
       paypal_order["payment_source"] = {
-        "card": {
-          "attributes": {
-            "verification": {
-              "method": "SCA_ALWAYS"
-            }
+        card: {
+          attributes: {
+            verification: {
+              method: "SCA_WHEN_REQUIRED",
+            },
           },
-          "experience_context": {
-            "shipping_preference": "NO_SHIPPING",
-          }
-        }
+          experience_context: {
+            shipping_preference: "NO_SHIPPING",
+          },
+        },
       };
     }
 
@@ -169,7 +169,7 @@ class Paypal extends PaymentProcessor {
         if (
           response_data.status !== "COMPLETED" ||
           response_data.purchase_units[0].payments.captures[0].status !==
-          "COMPLETED"
+            "COMPLETED"
         ) {
           throw response_data;
         }
@@ -398,14 +398,25 @@ class Paypal extends PaymentProcessor {
 
   async verify_3D() {
     return this.get_order_details().then((order_details) => {
-      if (order_details.payment_source.card.hasOwnProperty("authentication_result")) {
-        let authentication_result = order_details.payment_source.card.authentication_result;
+      if (
+        order_details.payment_source.card.hasOwnProperty(
+          "authentication_result"
+        )
+      ) {
+        let authentication_result =
+          order_details.payment_source.card.authentication_result;
         let liability_shift = authentication_result.liability_shift;
         let authentication_status = null;
-        if (authentication_result.three_d_secure.hasOwnProperty("authentication_status")) {
-          authentication_status = authentication_result.three_d_secure.authentication_status;
+        if (
+          authentication_result.three_d_secure.hasOwnProperty(
+            "authentication_status"
+          )
+        ) {
+          authentication_status =
+            authentication_result.three_d_secure.authentication_status;
         }
-        let enrollment_status = authentication_result.three_d_secure.enrollment_status;
+        let enrollment_status =
+          authentication_result.three_d_secure.enrollment_status;
         if (enrollment_status == "Y") {
           switch (authentication_status) {
             case "Y":
@@ -474,7 +485,6 @@ class Paypal extends PaymentProcessor {
       } else {
         return true;
       }
-
     });
   }
 
-- 
GitLab