@dintero/checkout-web-sdk
Advanced tools
Comparing version 0.3.1 to 0.4.0
@@ -0,1 +1,25 @@ | ||
## [0.4.0] | ||
### Changed | ||
- Changes `lockSession` to return a promise that resolves when the following `SessionLocked` event is returned from the checkout. | ||
- Changes `refreshSession` to return a promise that resolves when the following `SessionUpdated` event is returned from the checkout. | ||
## [0.3.1] | ||
### Bug Fixes | ||
* Add correct package version to url | ||
## [0.3.0] | ||
### Features | ||
* **lock:** Add callback function to `onSessionLocked` | ||
## [0.2.0] | ||
### Features | ||
* Handling of session validation when embedded | ||
## [0.0.17] | ||
@@ -5,3 +29,3 @@ | ||
- Adds `onActivePaymentProductType` callback. | ||
- Adds `onActivePaymentProductType` callback. | ||
- Adds `setActivePaymentProductType` function. | ||
@@ -8,0 +32,0 @@ |
import "native-promise-only"; | ||
import { SessionNotFound, SessionLoaded, SessionUpdated, SessionCancel, SessionPaymentOnHold, SessionPaymentAuthorized, SessionPaymentError, SessionLocked, SessionLockFailed, ActivePaymentProductType, ValidateSession, SessionValidationCallback } from "./checkout"; | ||
import { SessionNotFound, SessionLoaded, SessionUpdated, SessionCancel, SessionPaymentOnHold, SessionPaymentAuthorized, SessionPaymentError, SessionLocked, SessionLockFailed, ActivePaymentProductType, ValidateSession, SessionValidationCallback, SessionEvent } from "./checkout"; | ||
export interface DinteroCheckoutInstance { | ||
@@ -10,4 +10,4 @@ /** | ||
language: string; | ||
lockSession: () => void; | ||
refreshSession: () => void; | ||
lockSession: () => Promise<SessionEvent>; | ||
refreshSession: () => Promise<SessionEvent>; | ||
setActivePaymentProductType: (paymentProductType: string) => void; | ||
@@ -14,0 +14,0 @@ submitValidationResult: (result: SessionValidationCallback) => void; |
@@ -9,3 +9,3 @@ 'use strict'; | ||
name: "@dintero/checkout-web-sdk", | ||
version: "0.3.1", | ||
version: "0.4.0", | ||
description: "Dintero Checkout SDK for web frontends", | ||
@@ -333,2 +333,3 @@ main: "dist/dintero-checkout-web-sdk.cjs.js", | ||
} = options; | ||
let checkout; | ||
const subscriptions = []; // Create iframe | ||
@@ -359,9 +360,49 @@ | ||
}; | ||
/** | ||
* Turn an action into a promise by specifying resolve and | ||
* reject events. | ||
*/ | ||
const promisifyAction = (action, resolveEvent, rejectEvent) => { | ||
if (!checkout) { | ||
throw new Error("Unable to create action promise: checkout is undefined"); | ||
} | ||
return new Promise((resolve, reject) => { | ||
const eventSubscriptions = []; | ||
eventSubscriptions.push(subscribe({ | ||
sid, | ||
endpoint, | ||
handler: sessionEvent => { | ||
eventSubscriptions.forEach(sub => sub.unsubscribe()); | ||
resolve(sessionEvent); | ||
}, | ||
eventTypes: [resolveEvent], | ||
checkout | ||
})); | ||
eventSubscriptions.push(subscribe({ | ||
sid, | ||
endpoint, | ||
handler: () => { | ||
eventSubscriptions.forEach(sub => sub.unsubscribe()); | ||
reject(`Received unexpected event: ${rejectEvent}`); | ||
}, | ||
eventTypes: [rejectEvent], | ||
checkout | ||
})); | ||
action(); | ||
}); | ||
}; | ||
const lockSession = () => { | ||
postSessionLock(iframe, sid); | ||
return promisifyAction(() => { | ||
postSessionLock(iframe, sid); | ||
}, CheckoutEvents.SessionLocked, CheckoutEvents.SessionLockFailed); | ||
}; | ||
const refreshSession = () => { | ||
postSessionRefresh(iframe, sid); | ||
return promisifyAction(() => { | ||
postSessionRefresh(iframe, sid); | ||
}, CheckoutEvents.SessionUpdated, CheckoutEvents.SessionNotFound); | ||
}; | ||
@@ -390,3 +431,3 @@ | ||
const checkout = { | ||
checkout = { | ||
destroy, | ||
@@ -393,0 +434,0 @@ iframe, |
@@ -9,3 +9,3 @@ 'use strict'; | ||
name: "@dintero/checkout-web-sdk", | ||
version: "0.3.1", | ||
version: "0.4.0", | ||
description: "Dintero Checkout SDK for web frontends", | ||
@@ -333,2 +333,3 @@ main: "dist/dintero-checkout-web-sdk.cjs.js", | ||
} = options; | ||
let checkout; | ||
const subscriptions = []; // Create iframe | ||
@@ -359,9 +360,49 @@ | ||
}; | ||
/** | ||
* Turn an action into a promise by specifying resolve and | ||
* reject events. | ||
*/ | ||
const promisifyAction = (action, resolveEvent, rejectEvent) => { | ||
if (!checkout) { | ||
throw new Error("Unable to create action promise: checkout is undefined"); | ||
} | ||
return new Promise((resolve, reject) => { | ||
const eventSubscriptions = []; | ||
eventSubscriptions.push(subscribe({ | ||
sid, | ||
endpoint, | ||
handler: sessionEvent => { | ||
eventSubscriptions.forEach(sub => sub.unsubscribe()); | ||
resolve(sessionEvent); | ||
}, | ||
eventTypes: [resolveEvent], | ||
checkout | ||
})); | ||
eventSubscriptions.push(subscribe({ | ||
sid, | ||
endpoint, | ||
handler: () => { | ||
eventSubscriptions.forEach(sub => sub.unsubscribe()); | ||
reject(`Received unexpected event: ${rejectEvent}`); | ||
}, | ||
eventTypes: [rejectEvent], | ||
checkout | ||
})); | ||
action(); | ||
}); | ||
}; | ||
const lockSession = () => { | ||
postSessionLock(iframe, sid); | ||
return promisifyAction(() => { | ||
postSessionLock(iframe, sid); | ||
}, CheckoutEvents.SessionLocked, CheckoutEvents.SessionLockFailed); | ||
}; | ||
const refreshSession = () => { | ||
postSessionRefresh(iframe, sid); | ||
return promisifyAction(() => { | ||
postSessionRefresh(iframe, sid); | ||
}, CheckoutEvents.SessionUpdated, CheckoutEvents.SessionNotFound); | ||
}; | ||
@@ -390,3 +431,3 @@ | ||
const checkout = { | ||
checkout = { | ||
destroy, | ||
@@ -393,0 +434,0 @@ iframe, |
@@ -5,3 +5,3 @@ import 'native-promise-only'; | ||
name: "@dintero/checkout-web-sdk", | ||
version: "0.3.1", | ||
version: "0.4.0", | ||
description: "Dintero Checkout SDK for web frontends", | ||
@@ -329,2 +329,3 @@ main: "dist/dintero-checkout-web-sdk.cjs.js", | ||
} = options; | ||
let checkout; | ||
const subscriptions = []; // Create iframe | ||
@@ -355,9 +356,49 @@ | ||
}; | ||
/** | ||
* Turn an action into a promise by specifying resolve and | ||
* reject events. | ||
*/ | ||
const promisifyAction = (action, resolveEvent, rejectEvent) => { | ||
if (!checkout) { | ||
throw new Error("Unable to create action promise: checkout is undefined"); | ||
} | ||
return new Promise((resolve, reject) => { | ||
const eventSubscriptions = []; | ||
eventSubscriptions.push(subscribe({ | ||
sid, | ||
endpoint, | ||
handler: sessionEvent => { | ||
eventSubscriptions.forEach(sub => sub.unsubscribe()); | ||
resolve(sessionEvent); | ||
}, | ||
eventTypes: [resolveEvent], | ||
checkout | ||
})); | ||
eventSubscriptions.push(subscribe({ | ||
sid, | ||
endpoint, | ||
handler: () => { | ||
eventSubscriptions.forEach(sub => sub.unsubscribe()); | ||
reject(`Received unexpected event: ${rejectEvent}`); | ||
}, | ||
eventTypes: [rejectEvent], | ||
checkout | ||
})); | ||
action(); | ||
}); | ||
}; | ||
const lockSession = () => { | ||
postSessionLock(iframe, sid); | ||
return promisifyAction(() => { | ||
postSessionLock(iframe, sid); | ||
}, CheckoutEvents.SessionLocked, CheckoutEvents.SessionLockFailed); | ||
}; | ||
const refreshSession = () => { | ||
postSessionRefresh(iframe, sid); | ||
return promisifyAction(() => { | ||
postSessionRefresh(iframe, sid); | ||
}, CheckoutEvents.SessionUpdated, CheckoutEvents.SessionNotFound); | ||
}; | ||
@@ -386,3 +427,3 @@ | ||
const checkout = { | ||
checkout = { | ||
destroy, | ||
@@ -389,0 +430,0 @@ iframe, |
@@ -6,3 +6,3 @@ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).dintero={})}(this,(function(e){"use strict";var n="undefined"!=typeof globalThis?globalThis:"undefined"!="object"?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};!function(e,n,t){e(t={path:n,exports:{},require:function(e,n){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==n&&t.path)}},t.exports),t.exports}((function(e){ | ||
*/ | ||
var t,o,i;i=function(){var e,n,t,o=Object.prototype.toString,i="undefined"!=typeof setImmediate?function(e){return setImmediate(e)}:setTimeout;try{Object.defineProperty({},"x",{}),e=function(e,n,t,o){return Object.defineProperty(e,n,{value:t,writable:!0,configurable:!1!==o})}}catch(n){e=function(e,n,t){return e[n]=t,e}}function r(e,o){t.add(e,o),n||(n=i(t.drain))}function s(e){var n,t=typeof e;return null==e||"object"!=t&&"function"!=t||(n=e.then),"function"==typeof n&&n}function a(){for(var e=0;e<this.chain.length;e++)c(this,1===this.state?this.chain[e].success:this.chain[e].failure,this.chain[e]);this.chain.length=0}function c(e,n,t){var o,i;try{!1===n?t.reject(e.msg):(o=!0===n?e.msg:n.call(void 0,e.msg))===t.promise?t.reject(TypeError("Promise-chain cycle")):(i=s(o))?i.call(o,t.resolve,t.reject):t.resolve(o)}catch(e){t.reject(e)}}function d(e){var n,t=this;if(!t.triggered){t.triggered=!0,t.def&&(t=t.def);try{(n=s(e))?r((function(){var o=new f(t);try{n.call(e,(function(){d.apply(o,arguments)}),(function(){u.apply(o,arguments)}))}catch(e){u.call(o,e)}})):(t.msg=e,t.state=1,t.chain.length>0&&r(a,t))}catch(e){u.call(new f(t),e)}}}function u(e){var n=this;n.triggered||(n.triggered=!0,n.def&&(n=n.def),n.msg=e,n.state=2,n.chain.length>0&&r(a,n))}function l(e,n,t,o){for(var i=0;i<n.length;i++)!function(i){e.resolve(n[i]).then((function(e){t(i,e)}),o)}(i)}function f(e){this.def=e,this.triggered=!1}function h(e){this.promise=e,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function p(e){if("function"!=typeof e)throw TypeError("Not a function");if(0!==this.__NPO__)throw TypeError("Not a promise");this.__NPO__=1;var n=new h(this);this.then=function(e,t){var o={success:"function"!=typeof e||e,failure:"function"==typeof t&&t};return o.promise=new this.constructor((function(e,n){if("function"!=typeof e||"function"!=typeof n)throw TypeError("Not a function");o.resolve=e,o.reject=n})),n.chain.push(o),0!==n.state&&r(a,n),o.promise},this.catch=function(e){return this.then(void 0,e)};try{e.call(void 0,(function(e){d.call(n,e)}),(function(e){u.call(n,e)}))}catch(e){u.call(n,e)}}t=function(){var e,t,o;function i(e,n){this.fn=e,this.self=n,this.next=void 0}return{add:function(n,r){o=new i(n,r),t?t.next=o:e=o,t=o,o=void 0},drain:function(){var o=e;for(e=t=n=void 0;o;)o.fn.call(o.self),o=o.next}}}();var y=e({},"constructor",p,!1);return p.prototype=y,e(y,"__NPO__",0,!1),e(p,"resolve",(function(e){return e&&"object"==typeof e&&1===e.__NPO__?e:new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");n(e)}))})),e(p,"reject",(function(e){return new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");t(e)}))})),e(p,"all",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):0===e.length?n.resolve([]):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");var i=e.length,r=Array(i),s=0;l(n,e,(function(e,n){r[e]=n,++s===i&&t(r)}),o)}))})),e(p,"race",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");l(n,e,(function(e,n){t(n)}),o)}))})),p},(o=n)[t="Promise"]=o[t]||i(),e.exports&&(e.exports=o[t])}));var t="0.3.1";let o,i;!function(e){e.SessionNotFound="SessionNotFound",e.SessionLoaded="SessionLoaded",e.SessionUpdated="SessionUpdated",e.SessionCancel="SessionCancel",e.SessionPaymentOnHold="SessionPaymentOnHold",e.SessionPaymentAuthorized="SessionPaymentAuthorized",e.SessionPaymentError="SessionPaymentError",e.SessionLocked="SessionLocked",e.SessionLockFailed="SessionLockFailed",e.ActivePaymentProductType="ActivePaymentProductType",e.ValidateSession="ValidateSession"}(o||(o={})),function(e){e.HeightChanged="HeightChanged",e.LanguageChanged="LanguageChanged"}(i||(i={}));const r=e=>{window.location.assign(e)},s=e=>{const{sid:n,endpoint:o,language:i,ui:r,shouldCallValidateSession:s}=e;if(!o)throw new Error("Invalid endpoint");const a=[i?`language=${i}`:"",r?`ui=${r}`:"",`sdk=${t}`,s?"client_side_validation=true":void 0].filter((e=>e)).join("&");return`${o}/v1/view/${n}${a?"?"+a:""}`},a=e=>{e.href&&r(e.href)},c=(e,n)=>{(e.height||0===e.height)&&n.iframe.setAttribute("style",`width:100%; height:${e.height}px;`)},d=(e,n)=>{e.language&&(n.language=e.language)},u=(e,n,i)=>(e,r)=>{const s=["sid","merchant_reference","transaction_id","error"].map((n=>[n,e[n]]));e.type!==o.SessionCancel||e.error||s.push(["error","cancelled"]),s.push(["language",r.language]),s.push(["sdk",t]);const a=s.filter((([e,n])=>n)).map((([e,n])=>`${e}=${n}`)).join("&");r.iframe.setAttribute("src",`${n}/embedResult/?${a}`),i(e,r)};e.embed=async e=>{const{container:n,sid:t,language:r,endpoint:l="https://checkout.dintero.com",onSession:f,onSessionCancel:h,onPayment:p,onPaymentAuthorized:y,onPaymentError:g,onSessionNotFound:m,onSessionLocked:v,onSessionLockFailed:w,onActivePaymentType:S,onValidateSession:T}=e,b=[],{iframe:P,initiate:_}=((e,n,t)=>{if(!e||!e.appendChild)throw new Error("Invalid container");const o=document.createElement("iframe");return o.setAttribute("frameborder","0"),o.setAttribute("allowTransparency","true"),o.setAttribute("style","width:100%; height:0;"),o.setAttribute("sandbox","allow-scripts allow-forms allow-same-origin allow-popups"),o.setAttribute("importance","high"),o.setAttribute("src",t),{iframe:o,initiate:async()=>new Promise(((n,t)=>{o.onload=()=>n(),o.onerror=()=>t(),e.appendChild(o)}))}})(n,0,s({sid:t,endpoint:l,language:r,ui:"inline",shouldCallValidateSession:void 0!==T})),E=()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"RefreshSession",sid:n},"*")})(P,t)},A=e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"ValidationResult",sid:n,...t},"*")})(P,t,e)},j={destroy:()=>{P&&(b.forEach((e=>e.unsubscribe())),P.parentElement&&n.removeChild(P))},iframe:P,language:r,lockSession:()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"LockSession",sid:n},"*")})(P,t)},refreshSession:E,setActivePaymentProductType:e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"SetActivePaymentProductType",sid:n,payment_product_type:t},"*")})(P,t,e)},submitValidationResult:A};return[{handler:d,eventTypes:[i.LanguageChanged]},{handler:c,eventTypes:[i.HeightChanged]},{handler:f,eventTypes:[o.SessionLoaded,o.SessionUpdated]},{eventTypes:[o.SessionPaymentOnHold],handler:p?u(0,l,p):a},{eventTypes:[o.SessionPaymentAuthorized],handler:y||p?u(0,l,y||p):a},{handler:h?u(0,l,h):a,eventTypes:[o.SessionCancel]},{handler:g?u(0,l,g):a,eventTypes:[o.SessionPaymentError]},{handler:m,eventTypes:[o.SessionNotFound]},{handler:(e,n)=>{v&&v(e,n,E)},eventTypes:[o.SessionLocked]},{handler:w,eventTypes:[o.SessionLockFailed]},{handler:S,eventTypes:[o.ActivePaymentProductType]},{handler:S,eventTypes:[o.ActivePaymentProductType]},{handler:(e,n)=>{T&&T(e,n,A)},eventTypes:[o.ValidateSession]}].forEach((({handler:e,eventTypes:n})=>{e&&b.push((e=>{const{sid:n,endpoint:t,handler:o,eventTypes:i,checkout:r}=e,s=e=>{const s=e.origin===t,a=e.source===r.iframe.contentWindow,c=e.data&&e.data.sid===n,d=-1!==i.indexOf(e.data&&e.data.type);s&&a&&c&&d&&(((e,n)=>{n.data.mid&&e.contentWindow&&e.contentWindow.postMessage({ack:n.data.mid},n.origin||"*")})(r.iframe,e),o(e.data,r))};return window.addEventListener("message",s,!1),{unsubscribe:()=>{window.removeEventListener("message",s,!1)}}})({sid:t,endpoint:l,handler:e,eventTypes:n,checkout:j}))})),await _(),j},e.redirect=e=>{const{sid:n,language:t,endpoint:o="https://checkout.dintero.com"}=e;r(s({sid:n,endpoint:o,language:t,shouldCallValidateSession:!1}))},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
var t,o,i;i=function(){var e,n,t,o=Object.prototype.toString,i="undefined"!=typeof setImmediate?function(e){return setImmediate(e)}:setTimeout;try{Object.defineProperty({},"x",{}),e=function(e,n,t,o){return Object.defineProperty(e,n,{value:t,writable:!0,configurable:!1!==o})}}catch(n){e=function(e,n,t){return e[n]=t,e}}function r(e,o){t.add(e,o),n||(n=i(t.drain))}function s(e){var n,t=typeof e;return null==e||"object"!=t&&"function"!=t||(n=e.then),"function"==typeof n&&n}function a(){for(var e=0;e<this.chain.length;e++)c(this,1===this.state?this.chain[e].success:this.chain[e].failure,this.chain[e]);this.chain.length=0}function c(e,n,t){var o,i;try{!1===n?t.reject(e.msg):(o=!0===n?e.msg:n.call(void 0,e.msg))===t.promise?t.reject(TypeError("Promise-chain cycle")):(i=s(o))?i.call(o,t.resolve,t.reject):t.resolve(o)}catch(e){t.reject(e)}}function d(e){var n,t=this;if(!t.triggered){t.triggered=!0,t.def&&(t=t.def);try{(n=s(e))?r((function(){var o=new f(t);try{n.call(e,(function(){d.apply(o,arguments)}),(function(){u.apply(o,arguments)}))}catch(e){u.call(o,e)}})):(t.msg=e,t.state=1,t.chain.length>0&&r(a,t))}catch(e){u.call(new f(t),e)}}}function u(e){var n=this;n.triggered||(n.triggered=!0,n.def&&(n=n.def),n.msg=e,n.state=2,n.chain.length>0&&r(a,n))}function l(e,n,t,o){for(var i=0;i<n.length;i++)!function(i){e.resolve(n[i]).then((function(e){t(i,e)}),o)}(i)}function f(e){this.def=e,this.triggered=!1}function h(e){this.promise=e,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function p(e){if("function"!=typeof e)throw TypeError("Not a function");if(0!==this.__NPO__)throw TypeError("Not a promise");this.__NPO__=1;var n=new h(this);this.then=function(e,t){var o={success:"function"!=typeof e||e,failure:"function"==typeof t&&t};return o.promise=new this.constructor((function(e,n){if("function"!=typeof e||"function"!=typeof n)throw TypeError("Not a function");o.resolve=e,o.reject=n})),n.chain.push(o),0!==n.state&&r(a,n),o.promise},this.catch=function(e){return this.then(void 0,e)};try{e.call(void 0,(function(e){d.call(n,e)}),(function(e){u.call(n,e)}))}catch(e){u.call(n,e)}}t=function(){var e,t,o;function i(e,n){this.fn=e,this.self=n,this.next=void 0}return{add:function(n,r){o=new i(n,r),t?t.next=o:e=o,t=o,o=void 0},drain:function(){var o=e;for(e=t=n=void 0;o;)o.fn.call(o.self),o=o.next}}}();var y=e({},"constructor",p,!1);return p.prototype=y,e(y,"__NPO__",0,!1),e(p,"resolve",(function(e){return e&&"object"==typeof e&&1===e.__NPO__?e:new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");n(e)}))})),e(p,"reject",(function(e){return new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");t(e)}))})),e(p,"all",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):0===e.length?n.resolve([]):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");var i=e.length,r=Array(i),s=0;l(n,e,(function(e,n){r[e]=n,++s===i&&t(r)}),o)}))})),e(p,"race",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");l(n,e,(function(e,n){t(n)}),o)}))})),p},(o=n)[t="Promise"]=o[t]||i(),e.exports&&(e.exports=o[t])}));var t="0.4.0";let o,i;!function(e){e.SessionNotFound="SessionNotFound",e.SessionLoaded="SessionLoaded",e.SessionUpdated="SessionUpdated",e.SessionCancel="SessionCancel",e.SessionPaymentOnHold="SessionPaymentOnHold",e.SessionPaymentAuthorized="SessionPaymentAuthorized",e.SessionPaymentError="SessionPaymentError",e.SessionLocked="SessionLocked",e.SessionLockFailed="SessionLockFailed",e.ActivePaymentProductType="ActivePaymentProductType",e.ValidateSession="ValidateSession"}(o||(o={})),function(e){e.HeightChanged="HeightChanged",e.LanguageChanged="LanguageChanged"}(i||(i={}));const r=e=>{window.location.assign(e)},s=e=>{const{sid:n,endpoint:o,language:i,ui:r,shouldCallValidateSession:s}=e;if(!o)throw new Error("Invalid endpoint");const a=[i?`language=${i}`:"",r?`ui=${r}`:"",`sdk=${t}`,s?"client_side_validation=true":void 0].filter((e=>e)).join("&");return`${o}/v1/view/${n}${a?"?"+a:""}`},a=e=>{const{sid:n,endpoint:t,handler:o,eventTypes:i,checkout:r}=e,s=e=>{const s=e.origin===t,a=e.source===r.iframe.contentWindow,c=e.data&&e.data.sid===n,d=-1!==i.indexOf(e.data&&e.data.type);s&&a&&c&&d&&(((e,n)=>{n.data.mid&&e.contentWindow&&e.contentWindow.postMessage({ack:n.data.mid},n.origin||"*")})(r.iframe,e),o(e.data,r))};window.addEventListener("message",s,!1);return{unsubscribe:()=>{window.removeEventListener("message",s,!1)}}},c=e=>{e.href&&r(e.href)},d=(e,n)=>{(e.height||0===e.height)&&n.iframe.setAttribute("style",`width:100%; height:${e.height}px;`)},u=(e,n)=>{e.language&&(n.language=e.language)},l=(e,n,i)=>(e,r)=>{const s=["sid","merchant_reference","transaction_id","error"].map((n=>[n,e[n]]));e.type!==o.SessionCancel||e.error||s.push(["error","cancelled"]),s.push(["language",r.language]),s.push(["sdk",t]);const a=s.filter((([e,n])=>n)).map((([e,n])=>`${e}=${n}`)).join("&");r.iframe.setAttribute("src",`${n}/embedResult/?${a}`),i(e,r)};e.embed=async e=>{const{container:n,sid:t,language:r,endpoint:f="https://checkout.dintero.com",onSession:h,onSessionCancel:p,onPayment:y,onPaymentAuthorized:g,onPaymentError:m,onSessionNotFound:v,onSessionLocked:w,onSessionLockFailed:S,onActivePaymentType:T,onValidateSession:b}=e;let P;const E=[],{iframe:_,initiate:k}=((e,n,t)=>{if(!e||!e.appendChild)throw new Error("Invalid container");const o=document.createElement("iframe");return o.setAttribute("frameborder","0"),o.setAttribute("allowTransparency","true"),o.setAttribute("style","width:100%; height:0;"),o.setAttribute("sandbox","allow-scripts allow-forms allow-same-origin allow-popups"),o.setAttribute("importance","high"),o.setAttribute("src",t),{iframe:o,initiate:async()=>new Promise(((n,t)=>{o.onload=()=>n(),o.onerror=()=>t(),e.appendChild(o)}))}})(n,0,s({sid:t,endpoint:f,language:r,ui:"inline",shouldCallValidateSession:void 0!==b})),A=(e,n,o)=>{if(!P)throw new Error("Unable to create action promise: checkout is undefined");return new Promise(((i,r)=>{const s=[];s.push(a({sid:t,endpoint:f,handler:e=>{s.forEach((e=>e.unsubscribe())),i(e)},eventTypes:[n],checkout:P})),s.push(a({sid:t,endpoint:f,handler:()=>{s.forEach((e=>e.unsubscribe())),r(`Received unexpected event: ${o}`)},eventTypes:[o],checkout:P})),e()}))},j=()=>A((()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"RefreshSession",sid:n},"*")})(_,t)}),o.SessionUpdated,o.SessionNotFound),L=e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"ValidationResult",sid:n,...t},"*")})(_,t,e)};return P={destroy:()=>{_&&(E.forEach((e=>e.unsubscribe())),_.parentElement&&n.removeChild(_))},iframe:_,language:r,lockSession:()=>A((()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"LockSession",sid:n},"*")})(_,t)}),o.SessionLocked,o.SessionLockFailed),refreshSession:j,setActivePaymentProductType:e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"SetActivePaymentProductType",sid:n,payment_product_type:t},"*")})(_,t,e)},submitValidationResult:L},[{handler:u,eventTypes:[i.LanguageChanged]},{handler:d,eventTypes:[i.HeightChanged]},{handler:h,eventTypes:[o.SessionLoaded,o.SessionUpdated]},{eventTypes:[o.SessionPaymentOnHold],handler:y?l(0,f,y):c},{eventTypes:[o.SessionPaymentAuthorized],handler:g||y?l(0,f,g||y):c},{handler:p?l(0,f,p):c,eventTypes:[o.SessionCancel]},{handler:m?l(0,f,m):c,eventTypes:[o.SessionPaymentError]},{handler:v,eventTypes:[o.SessionNotFound]},{handler:(e,n)=>{w&&w(e,n,j)},eventTypes:[o.SessionLocked]},{handler:S,eventTypes:[o.SessionLockFailed]},{handler:T,eventTypes:[o.ActivePaymentProductType]},{handler:T,eventTypes:[o.ActivePaymentProductType]},{handler:(e,n)=>{b&&b(e,n,L)},eventTypes:[o.ValidateSession]}].forEach((({handler:e,eventTypes:n})=>{e&&E.push(a({sid:t,endpoint:f,handler:e,eventTypes:n,checkout:P}))})),await k(),P},e.redirect=e=>{const{sid:n,language:t,endpoint:o="https://checkout.dintero.com"}=e;r(s({sid:n,endpoint:o,language:t,shouldCallValidateSession:!1}))},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=dintero-checkout-web-sdk.umd.min.js.map |
{ | ||
"name": "@dintero/checkout-web-sdk", | ||
"version": "0.3.1", | ||
"version": "0.4.0", | ||
"description": "Dintero Checkout SDK for web frontends", | ||
@@ -5,0 +5,0 @@ "main": "dist/dintero-checkout-web-sdk.cjs.js", |
@@ -181,5 +181,12 @@ # Dintero Checkout JavaScript SDK for frontend applications [![Actions Status](https://github.com/Dintero/Dintero.Checkout.Web.SDK/workflows/CI/badge.svg?branch=master)](https://github.com/Dintero/Dintero.Checkout.Web.SDK/actions?query=branch%3Amaster+workflow%3ACI+) | ||
```js | ||
checkout.lockSession(); | ||
checkout.lockSession().then(function(sessionLockedEvent){ | ||
// initiate server side session update and then refresh the session | ||
}).catch(function(sessionLockFailedEvent) { | ||
// handle failure to lock | ||
});; | ||
``` | ||
`lockSession()` returns a promise that is resolved when the `SessionLocked` event is | ||
received from the checkout or rejected if the SessionLockFailed event is received. | ||
When the session is successfully locked, you'll get a callback at `onSessionLocked`. | ||
@@ -211,4 +218,8 @@ If locking the session fails, there will be a callback at `onSessionLockFailed`. | ||
Editing and paying in the checkout is enabled again. | ||
`refreshSession()` returns a promise that is resolved when the `SessionUpdated` | ||
event is received from the checkout. | ||
Editing and paying in the checkout is enabled again when a session without a `pay_lock` | ||
is loaded by the checkout. | ||
### Validating session before payment | ||
@@ -215,0 +226,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
289301
3082
297