@economist/web-apple-pay 1.7.1 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -685,7 +685,7 @@ var redirectToCheckoutComplete = (params) => {
685
685
  var redirectToCheckoutFallback = (params) => {
686
686
  const url = new URL(window.location.href);
687
687
  url.pathname = "/checkout";
688
- url.searchParams.set("lmo_offer", params.skuId);
688
+ url.searchParams.set("lmo_offer", decodeSku(params.skuId));
689
689
  if (params.inlineError)
690
690
  url.searchParams.set("inlineError", params.inlineError);
691
691
  if (params.email) url.searchParams.set("email", params.email);
@@ -680,7 +680,7 @@ var redirectToCheckoutComplete = (params) => {
680
680
  var redirectToCheckoutFallback = (params) => {
681
681
  const url = new URL(window.location.href);
682
682
  url.pathname = "/checkout";
683
- url.searchParams.set("lmo_offer", params.skuId);
683
+ url.searchParams.set("lmo_offer", decodeSku(params.skuId));
684
684
  if (params.inlineError)
685
685
  url.searchParams.set("inlineError", params.inlineError);
686
686
  if (params.email) url.searchParams.set("email", params.email);
@@ -688,7 +688,7 @@ var redirectToCheckoutComplete = (params) => {
688
688
  var redirectToCheckoutFallback = (params) => {
689
689
  const url = new URL(window.location.href);
690
690
  url.pathname = "/checkout";
691
- url.searchParams.set("lmo_offer", params.skuId);
691
+ url.searchParams.set("lmo_offer", decodeSku(params.skuId));
692
692
  if (params.inlineError)
693
693
  url.searchParams.set("inlineError", params.inlineError);
694
694
  if (params.email) url.searchParams.set("email", params.email);
@@ -1752,6 +1752,24 @@ var createFetchMock = (sessionResponse, sessionStatus = 200) => {
1752
1752
  headers: { "content-type": "application/json" }
1753
1753
  });
1754
1754
  }
1755
+ if (requestUrl.includes("/v1/wallet/payment-options/sku/")) {
1756
+ return new Response(
1757
+ JSON.stringify({
1758
+ options: {
1759
+ apple_pay: {
1760
+ provider: "apple-pay",
1761
+ settings: {
1762
+ supported_networks: ["visa", "masterCard", "amex"]
1763
+ }
1764
+ }
1765
+ }
1766
+ }),
1767
+ {
1768
+ status: 200,
1769
+ headers: { "content-type": "application/json" }
1770
+ }
1771
+ );
1772
+ }
1755
1773
  return new Response("Not Found", {
1756
1774
  status: 404,
1757
1775
  statusText: "Not Found"
@@ -680,7 +680,7 @@ var redirectToCheckoutComplete = (params) => {
680
680
  var redirectToCheckoutFallback = (params) => {
681
681
  const url = new URL(window.location.href);
682
682
  url.pathname = "/checkout";
683
- url.searchParams.set("lmo_offer", params.skuId);
683
+ url.searchParams.set("lmo_offer", decodeSku(params.skuId));
684
684
  if (params.inlineError)
685
685
  url.searchParams.set("inlineError", params.inlineError);
686
686
  if (params.email) url.searchParams.set("email", params.email);
@@ -62,10 +62,17 @@ var validateAppleMerchant = (data) => {
62
62
  };
63
63
 
64
64
  // src/utils/expressCheckoutRedirect.ts
65
+ var decodeSku = (sku) => {
66
+ try {
67
+ return atob(sku.substring(sku.indexOf("-") + 1));
68
+ } catch {
69
+ return sku;
70
+ }
71
+ };
65
72
  var redirectToCheckoutFallback = (params) => {
66
73
  const url = new URL(window.location.href);
67
74
  url.pathname = "/checkout";
68
- url.searchParams.set("lmo_offer", params.skuId);
75
+ url.searchParams.set("lmo_offer", decodeSku(params.skuId));
69
76
  if (params.inlineError)
70
77
  url.searchParams.set("inlineError", params.inlineError);
71
78
  if (params.email) url.searchParams.set("email", params.email);
@@ -262,7 +262,7 @@ var redirectToCheckoutComplete = (params) => {
262
262
  var redirectToCheckoutFallback = (params) => {
263
263
  const url = new URL(window.location.href);
264
264
  url.pathname = "/checkout";
265
- url.searchParams.set("lmo_offer", params.skuId);
265
+ url.searchParams.set("lmo_offer", decodeSku(params.skuId));
266
266
  if (params.inlineError)
267
267
  url.searchParams.set("inlineError", params.inlineError);
268
268
  if (params.email) url.searchParams.set("email", params.email);
package/dist/src/index.js CHANGED
@@ -685,7 +685,7 @@ var redirectToCheckoutComplete = (params) => {
685
685
  var redirectToCheckoutFallback = (params) => {
686
686
  const url = new URL(window.location.href);
687
687
  url.pathname = "/checkout";
688
- url.searchParams.set("lmo_offer", params.skuId);
688
+ url.searchParams.set("lmo_offer", decodeSku(params.skuId));
689
689
  if (params.inlineError)
690
690
  url.searchParams.set("inlineError", params.inlineError);
691
691
  if (params.email) url.searchParams.set("email", params.email);
@@ -32,6 +32,24 @@ var createFetchMock = (sessionResponse, sessionStatus = 200) => {
32
32
  headers: { "content-type": "application/json" }
33
33
  });
34
34
  }
35
+ if (requestUrl.includes("/v1/wallet/payment-options/sku/")) {
36
+ return new Response(
37
+ JSON.stringify({
38
+ options: {
39
+ apple_pay: {
40
+ provider: "apple-pay",
41
+ settings: {
42
+ supported_networks: ["visa", "masterCard", "amex"]
43
+ }
44
+ }
45
+ }
46
+ }),
47
+ {
48
+ status: 200,
49
+ headers: { "content-type": "application/json" }
50
+ }
51
+ );
52
+ }
35
53
  return new Response("Not Found", {
36
54
  status: 404,
37
55
  statusText: "Not Found"
@@ -40,7 +40,11 @@ export declare const redirectToCheckoutComplete: (params: {
40
40
  }) => string;
41
41
  /**
42
42
  * Builds the fallback redirect URL for error scenarios.
43
- * /checkout?lmo_offer={sku}&inlineError=...&returnUrl=...
43
+ * /checkout?lmo_offer={offerPath}&inlineError=...&returnUrl=...
44
+ *
45
+ * The skuId is decoded via decodeSku() before being set as lmo_offer, producing
46
+ * a Limio offer path (e.g. /offers2/UK-UK.DIGITAL.1YAR.X.DISC.30.NYT) as
47
+ * checkout expects. If decoding fails (malformed SKU), the raw skuId is used.
44
48
  *
45
49
  * Builds on top of the current page URL (window.location.href) so that any
46
50
  * existing query params (UTM tags, campaign flags) are preserved — matching
@@ -29,7 +29,7 @@ var redirectToCheckoutComplete = (params) => {
29
29
  var redirectToCheckoutFallback = (params) => {
30
30
  const url = new URL(window.location.href);
31
31
  url.pathname = "/checkout";
32
- url.searchParams.set("lmo_offer", params.skuId);
32
+ url.searchParams.set("lmo_offer", decodeSku(params.skuId));
33
33
  if (params.inlineError)
34
34
  url.searchParams.set("inlineError", params.inlineError);
35
35
  if (params.email) url.searchParams.set("email", params.email);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@economist/web-apple-pay",
3
3
  "description": "Web component package for Apple Pay checkout UI",
4
- "version": "1.7.1",
4
+ "version": "1.7.3",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",