Plugin Directory

Changeset 3235401


Ignore:
Timestamp:
02/05/2025 01:05:39 PM (12 months ago)
Author:
revolutbusiness
Message:

Update plugin sources to version 4.18.7

Location:
revolut-gateway-for-woocommerce/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • revolut-gateway-for-woocommerce/trunk/client/dist/index.asset.php

    r3230609 r3235401  
    1 <?php return array('dependencies' => array('react', 'wc-blocks-checkout', 'wc-blocks-registry', 'wc-settings', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '68774b484c1101f049fe');
     1<?php return array('dependencies' => array('react', 'wc-blocks-checkout', 'wc-blocks-registry', 'wc-settings', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '7f32dfe181e81b928bde');
  • revolut-gateway-for-woocommerce/trunk/client/dist/index.js

    r3230609 r3235401  
    1 (()=>{"use strict";var e={20:(e,t,r)=>{var n=r(609),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,c=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,a={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)s.call(t,n)&&!i.hasOwnProperty(n)&&(a[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===a[n]&&(a[n]=t[n]);return{$$typeof:o,type:e,key:u,ref:l,props:a,_owner:c.current}}t.Fragment=a,t.jsx=u,t.jsxs=u},848:(e,t,r)=>{e.exports=r(20)},609:e=>{e.exports=window.React}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}(()=>{const e=window.wc.blocksCheckout,t=window.wc.wcBlocksRegistry,n=window.wp.element,o=window.wc.wcSettings,a=window.wp.i18n,s=window.wp.data,c=(0,o.getSetting)("revolut_data"),i=(0,o.getSetting)("revolut_data").revolut_pay_data,u=(0,o.getSetting)("revolut_data").revolut_cc_data,l=(0,o.getSetting)("revolut_data").revolut_payment_request_data,d=e=>(0,a.__)(e,"revolut-gateway-for-woocommerce"),p=({endpoint:e,controller:t="revolut_payment_request_"})=>c.fast_checkout_params.ajax_url.toString().replace("%%wc_revolut_gateway_ajax_endpoint%%",`${t}${e}`);function m(e,t,r){const n=e;if(t&&"object"==typeof t)Object.keys(t).forEach((e=>{m(n,t[e],r?`${r}[${e}]`:e)}));else{const e=null==t?"":t;n.append(r,e)}return n}const _=async({data:e,endpoint:t})=>{const r=m(new FormData,e),n=await fetch(t,{method:"POST",body:r});if(!n.ok)throw new Error("Failed to process your request due to network issue");return await n.json()},y=e=>({countryCode:e.country,region:e.state,city:e.city,streetLine1:e.address_1,streetLine2:e.address_2,postcode:e.postcode}),h=e=>({address_1:e.address||e.addressLine.at(0),address_2:e.address_2||e.addressLine.at(1)||"",city:e.city,state:e.state||e.region,postcode:e.postcode||e.postalCode,country:e.country,phone:e.phone}),v=async()=>{const e=await _({endpoint:p({endpoint:O.GET_EXPRESS_CHECKOUT_PARAMS}),data:{security:c.fast_checkout_params.nonce.get_express_checkout_params}});return e?.success?e.revolut_public_id:Promise.reject(new Error("Something went wrong while creating the payment."))},f=async()=>{const e=await _({endpoint:c.route.create_revolut_order,data:{security:c.nonce.create_revolut_order}});if(e?.success)return e;throw new Error("An unexpected error occurred")},g=async e=>(await _({data:{revolut_public_id:e,security:c.fast_checkout_params.nonce.cancel_order},endpoint:p({endpoint:O.CANCEL_ORDER})})).success,w=async e=>{try{if(await g(e))return{type:"error",message:d("Something went wrong, your order has been cancelled.")};throw new Error("Couldn`t cancel the order")}catch(e){return{type:"failure",message:d("Your order has been completed, but we couldn't redirect you to the confirmation page. Please contact us for assistance.")}}},b=async({response:e,paymentMethod:t,shouldSavePayment:r})=>{try{const{processingResponse:n}=e,{wc_order_id:o,revolut_public_id:a}=n.paymentDetails,s=await(async({revolut_public_id:e,shouldSavePayment:t,wc_order_id:r,paymentMethod:n})=>{try{const o={revolut_gateway:n,security:c.nonce.process_order,revolut_public_id:e,revolut_payment_error:"",wc_order_id:r,reload_checkout:0,revolut_save_payment_method:Number(n===T.REVOLUT_CARD)&&(Number(t)||Number(u.is_save_payment_method_mandatory))},a=await _({data:o,endpoint:c.route.process_order});if("fail"===a?.result)throw new Error(a?.messages||"Something went wrong while trying to charge your card, please try again");if("success"===a?.result)return a;throw new Error("Failed to process your order due to server issue")}catch(e){throw new Error(e.message||"An unexpected error occurred")}})({wc_order_id:o,revolut_public_id:a,shouldSavePayment:r,paymentMethod:t});if(s.redirect)return window.location.href=decodeURI(s.redirect),{type:"success"};throw new Error("Could not redirect you to the confirmation page due to an unexpected error. Please contact the merchant")}catch(e){return{type:"error",message:d(e?.message),retry:!0,messageContext:"wc/checkout/payments"}}},E=async({onSubmit:e,address:t})=>{const{billingAddress:r,shippingAddress:n}=t;let o=r.recipient.indexOf(" "),a=r.recipient.substring(0,o),c=r.recipient.substring(o+1);(0,s.dispatch)(P).setBillingAddress({first_name:a,last_name:c,email:t.email,...h(r)}),(0,s.dispatch)(P).setShippingAddress({first_name:a,last_name:c,...h(n)}),e()},R={channel:"woocommerce-blocks"};let S=null;const k=()=>S||("undefined"!=typeof RevolutUpsell&&(S=RevolutUpsell({locale:c.locale,publicToken:c.merchant_public_key})),S),x=()=>{const e=k();if(!e)return;const t=document.getElementById(A);t&&i.banner.points_banner_enabled&&e.promotionalBanner.mount(t,{amount:c.order.amount,variant:"banner",currency:c.order.currency,__metadata:R})},{CART_STORE_KEY:P,PAYMENT_STORE_KEY:C}=window.wc.wcBlocksData,T={REVOLUT_CARD:"revolut_cc",REVOLUT_PAY:"revolut_pay",REVOLUT_PRB:"revolut_payment_request"},A="revolut-pay-informational-banner",O={GET_EXPRESS_CHECKOUT_PARAMS:"get_express_checkout_params",UPDATE_SHIPPING_METHOD:"update_shipping_method",GET_SHIPPING_OPTIONS:"get_shipping_options",LOAD_ORDER_DATA:"load_order_data",CANCEL_ORDER:"cancel_order",PROCESS_ORDER:"process_payment_result",UPDATE_PAYMENT_TOTAL:"update_payment_total"},j=["error.3ds-failed","error.email-is-not-specified","error.invalid-postcode","error.invalid-email","error.incorrect-cvv-code","error.expired-card","error.do-not-honour","error.insufficient-funds"],L=({paymentOptions:e,onSuccess:t,onError:r},o)=>{const a=(0,n.useRef)(null),s=(0,n.useRef)();return(0,n.useEffect)((()=>((async()=>{const{paymentRequest:n,destroy:o}=await RevolutCheckout.payments({publicToken:c.merchant_public_key,locale:c.locale});if(s.current=o,a.current){const o=n.mount(a.current,{...e,buttonStyle:{action:l.payment_request_button_type,size:l.payment_request_button_size,variant:l.payment_request_button_theme,radius:l.payment_request_button_radius},currency:c.order.currency,shippingOptions:c.fast_checkout_params.free_shipping_option,onSuccess(){t()},onError(e){r(e.message)},onCancel(){r("Payment cancelled!")}});o.canMakePayment().then((e=>{e?o.render():o.destroy()}))}})(),()=>s.current())),o),{revolutPrbRef:a,destroyRef:s}},M=()=>{(0,n.useEffect)((()=>{const e=document.querySelector(".wp-element-button.wc-block-components-checkout-place-order-button");return e&&(e.disabled=!0,e.style.display="none"),()=>{e&&(e.disabled=!1,e.style.display="block")}}),[])},D=({paymentOptions:e,onSuccess:t,onError:r,onCancel:o},a)=>{const s=(0,n.useRef)(null),u=(0,n.useRef)();return(0,n.useEffect)((()=>((async()=>{const{revolutPay:n,destroy:a}=await RevolutCheckout.payments({publicToken:c.merchant_public_key,locale:c.locale});u.current=a,s.current&&n.mount(s.current,{currency:c.order.currency,totalAmount:0,mobileRedirectUrls:{success:i.mobile_redirect_url,failure:i.mobile_redirect_url,cancel:i.mobile_redirect_url},buttonStyle:{cashbackCurrency:c.order.currency,variant:i.revolut_pay_button_theme,size:i.revolut_pay_button_size,radius:i.revolut_pay_button_radius},...e}),n.on("payment",(e=>{switch(e.type){case"cancel":o();break;case"success":t(e.orderId);break;case"error":r(e.error.message)}}))})(),()=>{u.current()})),a),{revolutPayRef:s,destroyRef:u}};var N=r(848);const I=({settings:e})=>(0,N.jsxs)("div",{className:"revolut-payment-method-label-container",children:[(0,N.jsx)("strong",{children:e.title}),(0,N.jsx)(q,{})]}),U=()=>((0,n.useEffect)((()=>{(()=>{const e=k();if(!e)return;const t=document.getElementById("revolut-pay-label-informational-icon");t&&i.banner.label_icon_variant&&e.promotionalBanner.mount(t,{amount:c.order.amount,variant:"cashback"===i.banner.label_icon_variant?"link":i.banner.label_icon_variant,currency:c.order.currency,style:{text:"cashback"===i.banner.label_icon_variant?"cashback":null,color:"blue"},__metadata:R})})()}),[]),(0,N.jsxs)("div",{className:"revolut-payment-method-label-container",children:[(0,N.jsxs)("div",{className:"revolut-pay-label-title-wrapper",children:[(0,N.jsx)("strong",{style:{whiteSpace:"nowrap"},children:i.title}),(0,N.jsx)("div",{style:{marginLeft:"5px",display:"flex"},id:"revolut-pay-label-informational-icon"})]}),(0,N.jsx)(q,{})]})),q=()=>{const{available_card_brands:e,wc_plugin_url:t}=c;return(0,N.jsx)("div",{className:"revolut-payment-method-label-scheme-icons",children:e&&e.filter((e=>"maestro"!==e)).map((e=>(0,N.jsx)("img",{src:`${t}/assets/images/${e}.svg`,style:{marginLeft:2},alt:e},e)))})},B=({inputRef:e})=>{const[t,r]=(0,n.useState)([]),o=(0,n.useRef)(!1),a=()=>{const t=e.current.value.trim().split(/\s+/).length>1;return!t&&o.current?(e.current.classList.add("wc-revolut-cardholder-name-error"),r([{message:"Please provide your full name"}])):(e.current.classList.remove("wc-revolut-cardholder-name-error"),r([])),t};return e.current&&(e.current.isComplete=()=>(o.current=!0,a())),(0,N.jsxs)("div",{className:"form-row validate-required",id:"cardholder-name","data-priority":"10",style:{display:"block",width:"100%",marginBottom:15},children:[(0,N.jsx)("input",{ref:e,type:"text",onChange:a,className:"input-text",name:"wc-revolut-cardholder-name",id:"wc-revolut-cardholder-name",placeholder:"Cardholder name",autoComplete:"cardholder",required:!0}),(0,N.jsx)("div",{style:{marginBottom:10,marginTop:10},children:(0,N.jsx)(Y,{errorList:t})})]})},Y=({errorList:e})=>(0,N.jsx)("div",{children:e.map(((e,t)=>(0,N.jsx)("li",{className:"card-field-error",children:e.message},t)))}),F=({orderToken:e})=>((0,n.useEffect)((()=>{(e=>{const t=k();if(!t)return;const r=document.getElementById("revolut-upsell-banner");r&&u.banner.upsell_banner_enabled&&t.cardGatewayBanner.mount(r,{orderToken:e})})(e)}),[e]),(0,N.jsx)("div",{id:"revolut-upsell-banner"})),V=({eventRegistration:e,billing:t,shippingData:r,shouldSavePayment:o,emitResponse:a,components:i,checkoutStatus:u,settings:l})=>{const{onPaymentSetup:p,onCheckoutSuccess:m}=e,_=(0,n.useRef)(),h=(0,n.useRef)(),[v,g]=(0,n.useState)(!1),[w,E]=(0,n.useState)([]),[R,S]=(0,n.useState)(!1),[k,x]=(0,n.useState)(""),[P,C]=(0,n.useState)(0),{createErrorNotice:A,removeAllNotices:O}=(0,s.dispatch)("core/notices");(0,n.useEffect)((()=>{const e=p(M),t=m(D);return()=>{e(),t()}}),[m,p,w,v,o,t.billingAddress,r.shippingAddress]),(0,n.useEffect)((()=>{(async()=>{t?.cartTotal?.value&&(S(!0),f().then((e=>{x(e.revolut_order_public_id),C(e.revolut_order_amount),S(!1)})).catch((e=>A(d(e.message||"An unexpected error occurred"),{id:"create_order_failed",context:a.noticeContexts.PAYMENTS}))))})()}),[t.cartTotal.value]);const L=(({onMsg:e,publicId:t},r)=>{const o=(0,n.useRef)(e),a=(0,n.useRef)(null),s=(0,n.useRef)(null);return(0,n.useEffect)((()=>{let e=!1;return s.current&&(s.current.destroy(),o.current({type:"instance_destroyed"})),RevolutCheckout(t).then((t=>{!e&&a.current&&(s.current=t.createCardField({locale:c.locale,target:a.current,onSuccess(){o.current({type:"payment_successful"})},onError(e){j.includes(e.type)?o.current({type:"fields_errors_changed",errors:[e]}):o.current({type:"payment_failed",error:e})},onValidation:e=>o.current({type:"fields_errors_changed",errors:e}),onStatusChange:e=>{o.current({type:"fields_status_changed",status:e})},onCancel(){o.current({type:"payment_cancelled"})}}),o.current({type:"instance_mounted",instance:s.current}))})),()=>{e=!0,s.current&&(s.current.destroy(),s.current=null,o.current({type:"instance_destroyed"}))}}),[t,o,...r]),a})({publicId:k,onMsg:e=>{switch(e.type){case"payment_successful":document.dispatchEvent(new Event("payment_successful"));break;case"payment_failed":document.dispatchEvent(new CustomEvent("payment_failed",{detail:e.error.toString()}));break;case"instance_destroyed":_.current=null;break;case"instance_mounted":_.current=e.instance;break;case"fields_errors_changed":E(e.errors);break;case"fields_status_changed":g(e.status)}}},[P]),M=async()=>{O();let e=null;return t?.billingAddress||(e="Please check your billing address, and retry again."),(!v.completed||w.length>0)&&(e="The payment form is not ready for submission.",_.current&&(_.current.validate(),e="The payment form is not ready for submission. please fix the errors below and retry again.")),l.card_holder_name_field_enabled&&(h.current.isComplete()||(e="The payment form is not ready for submission. please fix the errors below and retry again.")),e?{type:a.responseTypes.ERROR,message:d(e),retry:!0,messageContext:a.noticeContexts.PAYMENTS}:{type:a.responseTypes.SUCCESS}},D=async e=>{S(!0);const{billingAddress:n}=t,{shippingAddress:s}=r,c={name:l.card_holder_name_field_enabled&&h.current.value.length>0?h.current.value:`${n.first_name} ${n.last_name}`,email:n.email,phone:n.phone,savePaymentMethodFor:o||l.is_save_payment_method_mandatory?"merchant":""};void 0!==n.country&&void 0!==n.postcode&&(c.billingAddress=y(n),c.shippingAddress=y(n)),s&&void 0!==s.country&&void 0!==s.postcode&&(c.shippingAddress=y(s));const i=await I({paymentData:c});if(!i.success)return i.error?(S(!1),{type:a.responseTypes.ERROR,message:d(i.error||"Unexpected error occurred, please try again later"),retry:!0,messageContext:a.noticeContexts.PAYMENTS}):void S(!1);b({response:e,paymentMethod:T.REVOLUT_CARD,shouldSavePayment:o})},I=async({paymentData:e})=>(_.current.submit(e),new Promise(((e,t)=>{document.addEventListener("payment_successful",(()=>{e({success:!0})})),document.addEventListener("payment_failed",(t=>{e({success:!1,error:t.detail})}))})));return(0,n.useEffect)((()=>{L.current&&(w.length>0?L.current.classList.add("woocommerce-revolut-card-element-error"):L.current.classList.remove("woocommerce-revolut-card-element-error"))}),[w]),(0,N.jsx)(N.Fragment,{children:(0,N.jsx)(i.LoadingMask,{showSpinner:!0,isLoading:u.isProcessing||u.isComplete||R,children:k&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)("div",{children:[(0,N.jsx)("div",{id:"woocommerce-revolut-card-element",ref:L}),w.length>0&&(0,N.jsx)(Y,{errorList:w})]}),l.card_holder_name_field_enabled&&(0,N.jsx)("div",{style:{marginTop:10},children:(0,N.jsx)(B,{inputRef:h})}),l.banner.upsell_banner_enabled&&(0,N.jsx)("div",{children:(0,N.jsx)(F,{orderToken:k})})]})})})},G={name:T.REVOLUT_CARD,label:(0,N.jsx)(I,{settings:u}),content:(0,N.jsx)(V,{settings:u}),edit:(0,N.jsx)("p",{children:d("Revolut Gateway is not available in editor mode")}),ariaLabel:d("Revolut Card`s Gateway"),canMakePayment:()=>u.can_make_payment,supports:{features:["products","subscriptions"],showSavedCards:!0,showSaveOption:!u.is_save_payment_method_mandatory}},$=()=>((0,n.useEffect)((()=>{x()}),[]),(0,N.jsx)("div",{id:A})),H=i.can_make_payment&&i.banner.points_banner_enabled,K={metadata:{name:"revolut-gateway-for-woocommerce/revolut-banner",category:"woocommerce",parent:[e.innerBlockAreas.CHECKOUT_ORDER_SUMMARY],attributes:{lock:{type:"object",default:{remove:!0,move:!0}}}},force:!0,component:()=>H?(0,N.jsx)($,{}):""},z=({billing:e,components:t,checkoutStatus:r,eventRegistration:o,emitResponse:a,onSubmit:c})=>{const{onCheckoutSuccess:i,onCheckoutFail:u}=o,{VALIDATION_STORE_KEY:l}=window.wc.wcBlocksData,[d,p]=(0,n.useState)(!1),m=(0,n.useRef)(null),_=(0,n.useRef)(null),y=(0,n.useRef)(null),{revolutPrbRef:h}=L({paymentOptions:{amount:e.cartTotal.value,validate:()=>new Promise(((e,t)=>{p(!0),(0,s.select)(l).hasValidationErrors()&&(p(!1),t("Checkout form is incomplete")),f().then((r=>{m.current=r.revolut_order_public_id,c(),document.addEventListener("checkout_success",(()=>{e(!0)})),document.addEventListener("checkout_fail",(()=>{p(!1),t("Something went wrong")}))}))})),createOrder:()=>({publicId:m.current})},onSuccess:()=>{p(!0),b({response:_.current,paymentMethod:T.REVOLUT_PRB,shouldSavePayment:0})},onError:e=>{p(!1),y.current&&y.current.resolve((e=>({type:a.responseTypes.ERROR,message:e,retry:!0,messageContext:a.noticeContexts.PAYMENTS}))(e))}},[e.cartTotal.value]);return(0,n.useEffect)((()=>{const e=i((async e=>new Promise((t=>{p(!1),_.current=e,document.dispatchEvent(new CustomEvent("checkout_success")),y.current={resolve:t}})))),t=u((e=>{e&&e.paymentDetails&&e.paymentDetails.wc_order_id||document.dispatchEvent(new CustomEvent("checkout_fail"))}));return()=>{e(),t()}}),[i,u]),M(),(0,N.jsxs)(N.Fragment,{children:[" ",(0,N.jsx)(t.LoadingMask,{showSpinner:!0,isLoading:d||r.isProcessing||r.isComplete,children:(0,N.jsx)("div",{ref:h})})]})},X=({billing:e,setExpressPaymentError:t,eventRegistration:r,onSubmit:o,onClick:a,onClose:s,emitResponse:i})=>{const{onPaymentSetup:u,onCheckoutFail:l}=r,d=(0,n.useRef)(),m=(0,n.useRef)(),{revolutPrbRef:y,destroyRef:h}=L({paymentOptions:{amount:0,requestShipping:!0,validate:()=>(a(),!0),onShippingOptionChange:e=>function(e){let t={security:c.fast_checkout_params.nonce.update_shipping,shipping_method:[e.id],is_product_page:c.fast_checkout_params.is_product_page};return new Promise(((e,r)=>{_({data:t,endpoint:p({endpoint:O.UPDATE_SHIPPING_METHOD})}).then((t=>{e(t)})).catch((e=>{r(e)}))}))}(e),onShippingAddressChange:e=>function(e){let t={security:c.fast_checkout_params.nonce.shipping,country:e.country,state:e.region,postcode:e.postalCode,city:e.city,address:"",address_2:"",is_product_page:c.fast_checkout_params.is_product_page,require_shipping:c.fast_checkout_params.shipping_required};return new Promise(((e,r)=>{_({data:t,endpoint:p({endpoint:O.GET_SHIPPING_OPTIONS})}).then((t=>{e(t)})).catch((e=>{r(e)}))}))}(e),createOrder:()=>new Promise(((e,t)=>{v().then((t=>{m.current=t,e({publicId:t})})).catch((e=>{t(e)}))})),validate(e){d.current=e}},onSuccess:()=>E({onSubmit:o,address:d.current}).catch((e=>{h.current(),g(m.current),t(e)})),onError:e=>{t(e||"Something went wrong while completing your payment"),s()},onCancel:e=>{t(e),s()}},[e.cartTotal.value]);return(0,n.useEffect)((()=>{const e=u((()=>({type:i.responseTypes.SUCCESS,meta:{paymentMethodData:{is_express_checkout:1}}}))),r=l((()=>{w(m.current).then((e=>{t(e.message),"failure"===e.type&&h.current()}))}));return()=>{e(),r()}}),[u,l]),(0,N.jsxs)(N.Fragment,{children:[" ",(0,N.jsx)("div",{ref:y})]})},W={name:"revolut_payment_request",label:(0,N.jsx)(I,{settings:l}),content:(0,N.jsx)(z,{}),edit:(0,N.jsx)("p",{children:d("Google/Apple Pay block is not available in editor mode")}),ariaLabel:"Google Pay/Apple Pay",canMakePayment:()=>l.can_make_payment,paymentMethodId:"revolut_payment_request",supports:{features:["products"]}},J={...W,name:"revolut_payment_request_express_checkout",paymentMethodId:"revolut_payment_request",content:(0,N.jsx)(X,{}),canMakePayment:()=>l.can_make_payment&&l.is_cart},Q=({billing:e,components:t,eventRegistration:r,onSubmit:o,emitResponse:a})=>{const{onCheckoutSuccess:c,onCheckoutFail:i}=r,{VALIDATION_STORE_KEY:u}=window.wc.wcBlocksData,[l,d]=(0,n.useState)(!1),[p,m]=(0,n.useState)(!1),_=(0,n.useRef)(null),y=(0,n.useRef)(null),h=(0,n.useRef)(null),v=e=>({type:a.responseTypes.ERROR,message:e,retry:!0,messageContext:a.noticeContexts.PAYMENTS}),g={totalAmount:e.cartTotal.value,validate:()=>(m(!1),new Promise((e=>{d(!0),(0,s.select)(u).hasValidationErrors()&&(d(!1),e(!1)),f().then((t=>{_.current=t.revolut_order_public_id,o(),document.addEventListener("checkout_success",(()=>{e(!0)})),document.addEventListener("checkout_fail",(()=>{d(!1),e(!1)}))}))}))),createOrder:()=>({publicId:_.current})},{revolutPayRef:w}=D({paymentOptions:g,onSuccess:()=>{d(!0),b({response:y.current,paymentMethod:T.REVOLUT_PAY,shouldSavePayment:0})},onError:e=>{d(!1),h.current&&h.current.resolve(v(e))},onCancel:()=>{m(!0),h.current&&h.current.resolve(v("Payment cancelled!"))}},[e.cartTotal.value]);return(0,n.useEffect)((()=>{const e=c((async e=>new Promise((t=>{if(p)return d(!1),t(v("Payment cancelled!"));d(!1),y.current=e,document.dispatchEvent(new CustomEvent("checkout_success")),h.current={resolve:t}})))),t=i((e=>{e&&e.paymentDetails&&e.paymentDetails.wc_order_id||document.dispatchEvent(new CustomEvent("checkout_fail"))}));return()=>{e(),t()}}),[c,i,p]),M(),(0,N.jsxs)(N.Fragment,{children:[" ",(0,N.jsx)(t.LoadingMask,{showSpinner:!0,isLoading:l,children:(0,N.jsx)("div",{ref:w})})]})},Z=({billing:e,setExpressPaymentError:t,eventRegistration:r,onSubmit:o,onClick:a,onClose:s,emitResponse:i})=>{const{onPaymentSetup:u,onCheckoutFail:l}=r,d=(0,n.useRef)(),m={requestShipping:!0,validate:()=>(a(),!0),createOrder:()=>v().then((e=>(d.current=e,(e=>_({data:{revolut_public_id:e,security:c.fast_checkout_params.nonce.update_order_total},endpoint:p({endpoint:O.UPDATE_PAYMENT_TOTAL})}))(e).then((()=>({publicId:e}))))))},{revolutPayRef:y,destroyRef:h}=D({paymentOptions:m,onSuccess:e=>(async e=>{try{const t=await _({data:{security:c.fast_checkout_params.nonce.load_order_data,revolut_public_id:e},endpoint:p({endpoint:O.LOAD_ORDER_DATA})});if(t)return t;throw new Error("Something went wrong while retrieving the billing address. your payment will be cancelled")}catch(e){throw new Error(e.message||"An unexpected error occurred.")}})(e).then((r=>{E({onSubmit:o,address:r.address_info}).catch((r=>{h.current(),g(e),t(r)}))})).catch((r=>{g(e),t(r)})),onError:e=>{t(e||"Something went wrong while completing your payment"),s()},onCancel:e=>{t(e||"Payment cancelled!"),s()}},[e.cartTotal.value]);return(0,n.useEffect)((()=>{const e=u((()=>({type:i.responseTypes.SUCCESS,meta:{paymentMethodData:{is_express_checkout:1}}}))),r=l((()=>{w(d.current).then((e=>{t(e.message),"failure"===e.type&&h.current()}))}));return()=>{e(),r()}}),[u,l]),(0,n.useEffect)((()=>{x()}),[]),(0,N.jsxs)(N.Fragment,{children:[" ",(0,N.jsx)("div",{id:A}),(0,N.jsx)("div",{ref:y})]})},ee=new URLSearchParams(window.location.search),te=ee.get("_rp_fr"),re=ee.get("_rp_oid"),ne=ee.get("_rp_s");(te||!ne&&re)&&((0,s.dispatch)("core/notices").createErrorNotice(d(te||"Payment Rejected"),{id:"rp-fr",context:"wc/checkout/payments"}),i.is_cart||(0,s.dispatch)(C).__internalSetActivePaymentMethod(T.REVOLUT_PAY));const oe={name:"revolut_pay",label:(0,N.jsx)(U,{}),content:(0,N.jsx)(Q,{}),edit:(0,N.jsx)("p",{children:d("Revolut Pay is not available in editor mode")}),ariaLabel:"Revolut Pay",canMakePayment:()=>i.can_make_payment,paymentMethodId:"revolut_pay",supports:{features:["products"]}},ae={...oe,name:"revolut_pay_express_checkout",paymentMethodId:"revolut_pay",content:(0,N.jsx)(Z,{settings:i}),canMakePayment:()=>i.can_make_payment&&i.is_cart};(0,t.registerPaymentMethod)(G),(0,t.registerExpressPaymentMethod)(ae),(0,t.registerPaymentMethod)(oe),(0,e.registerCheckoutBlock)(K),(0,t.registerExpressPaymentMethod)(J),(0,t.registerPaymentMethod)(W)})()})();
     1(()=>{"use strict";var e={20:(e,t,r)=>{var n=r(609),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,c=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,a={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)s.call(t,n)&&!i.hasOwnProperty(n)&&(a[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===a[n]&&(a[n]=t[n]);return{$$typeof:o,type:e,key:u,ref:l,props:a,_owner:c.current}}t.Fragment=a,t.jsx=u,t.jsxs=u},848:(e,t,r)=>{e.exports=r(20)},609:e=>{e.exports=window.React}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}(()=>{const e=window.wc.blocksCheckout,t=window.wc.wcBlocksRegistry,n=window.wp.element,o=window.wc.wcSettings,a=window.wp.i18n,s=window.wp.data,c=(0,o.getSetting)("revolut_data"),i=(0,o.getSetting)("revolut_data").revolut_pay_data,u=(0,o.getSetting)("revolut_data").revolut_cc_data,l=(0,o.getSetting)("revolut_data").revolut_payment_request_data,d=e=>(0,a.__)(e,"revolut-gateway-for-woocommerce"),p=({endpoint:e,controller:t="revolut_payment_request_"})=>c.fast_checkout_params.ajax_url.toString().replace("%%wc_revolut_gateway_ajax_endpoint%%",`${t}${e}`);function m(e,t,r){const n=e;if(t&&"object"==typeof t)Object.keys(t).forEach((e=>{m(n,t[e],r?`${r}[${e}]`:e)}));else{const e=null==t?"":t;n.append(r,e)}return n}const _=async({data:e,endpoint:t})=>{const r=m(new FormData,e),n=await fetch(t,{method:"POST",body:r});if(!n.ok)throw new Error("Failed to process your request due to network issue");return await n.json()},y=e=>({countryCode:e.country,region:e.state,city:e.city,streetLine1:e.address_1,streetLine2:e.address_2,postcode:e.postcode}),h=e=>({address_1:e.address||e.addressLine.at(0),address_2:e.address_2||e.addressLine.at(1)||"",city:e.city,state:e.state||e.region,postcode:e.postcode||e.postalCode,country:e.country,phone:e.phone}),v=async()=>{const e=await _({endpoint:p({endpoint:O.GET_EXPRESS_CHECKOUT_PARAMS}),data:{security:c.fast_checkout_params.nonce.get_express_checkout_params}});return e?.success?e.revolut_public_id:Promise.reject(new Error("Something went wrong while creating the payment."))},f=async()=>{const e=await _({endpoint:c.route.create_revolut_order,data:{security:c.nonce.create_revolut_order}});if(e?.success)return e;throw new Error("An unexpected error occurred")},g=async e=>(await _({data:{revolut_public_id:e,security:c.fast_checkout_params.nonce.cancel_order},endpoint:p({endpoint:O.CANCEL_ORDER})})).success,w=async e=>{try{if(await g(e))return{type:"error",message:d("Something went wrong, your order has been cancelled.")};throw new Error("Couldn`t cancel the order")}catch(e){return{type:"failure",message:d("Your order has been completed, but we couldn't redirect you to the confirmation page. Please contact us for assistance.")}}},b=async({response:e,paymentMethod:t,shouldSavePayment:r})=>{try{const{processingResponse:n}=e,{wc_order_id:o,revolut_public_id:a}=n.paymentDetails,s=await(async({revolut_public_id:e,shouldSavePayment:t,wc_order_id:r,paymentMethod:n})=>{try{const o={revolut_gateway:n,security:c.nonce.process_order,revolut_public_id:e,revolut_payment_error:"",wc_order_id:r,reload_checkout:0,revolut_save_payment_method:Number(n===T.REVOLUT_CARD)&&(Number(t)||Number(u.is_save_payment_method_mandatory))},a=await _({data:o,endpoint:c.route.process_order});if("fail"===a?.result)throw new Error(a?.messages||"Something went wrong while trying to charge your card, please try again");if("success"===a?.result)return a;throw new Error("Failed to process your order due to server issue")}catch(e){throw new Error(e.message||"An unexpected error occurred")}})({wc_order_id:o,revolut_public_id:a,shouldSavePayment:r,paymentMethod:t});if(s.redirect)return window.location.href=decodeURI(s.redirect),{type:"success"};throw new Error("Could not redirect you to the confirmation page due to an unexpected error. Please contact the merchant")}catch(e){return{type:"error",message:d(e?.message),retry:!0,messageContext:"wc/checkout/payments"}}},E=async({onSubmit:e,address:t})=>{const{billingAddress:r,shippingAddress:n}=t;let o=r.recipient.indexOf(" "),a=r.recipient.substring(0,o),c=r.recipient.substring(o+1);(0,s.dispatch)(P).setBillingAddress({first_name:a,last_name:c,email:t.email,...h(r)}),(0,s.dispatch)(P).setShippingAddress({first_name:a,last_name:c,...h(n)}),e()},R={channel:"woocommerce-blocks"};let S=null;const k=()=>S||("undefined"!=typeof RevolutUpsell&&(S=RevolutUpsell({locale:c.locale,publicToken:c.merchant_public_key})),S),x=()=>{const e=k();if(!e)return;const t=document.getElementById(A);t&&i.banner.points_banner_enabled&&e.promotionalBanner.mount(t,{amount:c.order.amount,variant:"banner",currency:c.order.currency,__metadata:R})},{CART_STORE_KEY:P,PAYMENT_STORE_KEY:C}=window.wc.wcBlocksData,T={REVOLUT_CARD:"revolut_cc",REVOLUT_PAY:"revolut_pay",REVOLUT_PRB:"revolut_payment_request"},A="revolut-pay-informational-banner",O={GET_EXPRESS_CHECKOUT_PARAMS:"get_express_checkout_params",UPDATE_SHIPPING_METHOD:"update_shipping_method",GET_SHIPPING_OPTIONS:"get_shipping_options",LOAD_ORDER_DATA:"load_order_data",CANCEL_ORDER:"cancel_order",PROCESS_ORDER:"process_payment_result",UPDATE_PAYMENT_TOTAL:"update_payment_total"},j=["error.3ds-failed","error.email-is-not-specified","error.invalid-postcode","error.invalid-email","error.incorrect-cvv-code","error.expired-card","error.do-not-honour","error.insufficient-funds"],L=({paymentOptions:e,onSuccess:t,onError:r},o)=>{const a=(0,n.useRef)(null),s=(0,n.useRef)();return(0,n.useEffect)((()=>((async()=>{const{paymentRequest:n,destroy:o}=await RevolutCheckout.payments({publicToken:c.merchant_public_key,locale:c.locale});if(s.current=o,a.current){const o=n.mount(a.current,{...e,buttonStyle:{action:l.payment_request_button_type,size:l.payment_request_button_size,variant:l.payment_request_button_theme,radius:l.payment_request_button_radius},currency:c.order.currency,shippingOptions:c.fast_checkout_params.free_shipping_option,onSuccess(){t()},onError(e){r(e.message)},onCancel(){r("Payment cancelled!")}});o.canMakePayment().then((e=>{e?o.render():o.destroy()}))}})(),()=>s.current())),o),{revolutPrbRef:a,destroyRef:s}},M=()=>{(0,n.useEffect)((()=>{const e=document.querySelector(".wp-element-button.wc-block-components-checkout-place-order-button");return e&&(e.disabled=!0,e.style.display="none"),()=>{e&&(e.disabled=!1,e.style.display="block")}}),[])},D=({paymentOptions:e,onSuccess:t,onError:r,onCancel:o},a)=>{const s=(0,n.useRef)(null),u=(0,n.useRef)();return(0,n.useEffect)((()=>((async()=>{const{revolutPay:n,destroy:a}=await RevolutCheckout.payments({publicToken:c.merchant_public_key,locale:c.locale});u.current=a,s.current&&n.mount(s.current,{currency:c.order.currency,totalAmount:0,mobileRedirectUrls:{success:i.mobile_redirect_url,failure:i.mobile_redirect_url,cancel:i.mobile_redirect_url},buttonStyle:{cashbackCurrency:c.order.currency,variant:i.revolut_pay_button_theme,size:i.revolut_pay_button_size,radius:i.revolut_pay_button_radius},...e}),n.on("payment",(e=>{switch(e.type){case"cancel":o();break;case"success":t(e.orderId);break;case"error":r(e.error.message)}}))})(),()=>{u.current()})),a),{revolutPayRef:s,destroyRef:u}};var N=r(848);const I=({settings:e})=>(0,N.jsxs)("div",{className:"revolut-payment-method-label-container",children:[(0,N.jsx)("strong",{children:e.title}),(0,N.jsx)(q,{})]}),U=()=>((0,n.useEffect)((()=>{(()=>{const e=k();if(!e)return;const t=document.getElementById("revolut-pay-label-informational-icon");t&&i.banner.label_icon_variant&&e.promotionalBanner.mount(t,{amount:c.order.amount,variant:"cashback"===i.banner.label_icon_variant?"link":i.banner.label_icon_variant,currency:c.order.currency,style:{text:"cashback"===i.banner.label_icon_variant?"cashback":null,color:"blue"},__metadata:R})})()}),[]),(0,N.jsxs)("div",{className:"revolut-payment-method-label-container",children:[(0,N.jsxs)("div",{className:"revolut-pay-label-title-wrapper",children:[(0,N.jsx)("strong",{style:{whiteSpace:"nowrap"},children:i.title}),(0,N.jsx)("div",{style:{marginLeft:"5px",display:"flex"},id:"revolut-pay-label-informational-icon"})]}),(0,N.jsx)(q,{})]})),q=()=>{const{available_card_brands:e,wc_plugin_url:t}=c;return(0,N.jsx)("div",{className:"revolut-payment-method-label-scheme-icons",children:e&&e.filter((e=>"maestro"!==e)).map((e=>(0,N.jsx)("img",{src:`${t}/assets/images/${e}.svg`,style:{marginLeft:2},alt:e},e)))})},B=({inputRef:e})=>{const[t,r]=(0,n.useState)([]),o=(0,n.useRef)(!1),a=()=>{const t=e.current.value.trim().split(/\s+/).length>1;return!t&&o.current?(e.current.classList.add("wc-revolut-cardholder-name-error"),r([{message:"Please provide your full name"}])):(e.current.classList.remove("wc-revolut-cardholder-name-error"),r([])),t};return e.current&&(e.current.isComplete=()=>(o.current=!0,a())),(0,N.jsxs)("div",{className:"form-row validate-required",id:"cardholder-name","data-priority":"10",style:{display:"block",width:"100%",marginBottom:15},children:[(0,N.jsx)("input",{ref:e,type:"text",onChange:a,className:"input-text",name:"wc-revolut-cardholder-name",id:"wc-revolut-cardholder-name",placeholder:"Cardholder name",autoComplete:"cardholder",required:!0}),(0,N.jsx)("div",{style:{marginBottom:10,marginTop:10},children:(0,N.jsx)(F,{errorList:t})})]})},F=({errorList:e})=>(0,N.jsx)("div",{children:e.map(((e,t)=>(0,N.jsx)("li",{className:"card-field-error",children:e.message},t)))}),Y=({orderToken:e})=>((0,n.useEffect)((()=>{(e=>{const t=k();if(!t)return;const r=document.getElementById("revolut-upsell-banner");r&&u.banner.upsell_banner_enabled&&t.cardGatewayBanner.mount(r,{orderToken:e})})(e)}),[e]),(0,N.jsx)("div",{id:"revolut-upsell-banner"})),V=({eventRegistration:e,billing:t,shippingData:r,shouldSavePayment:o,emitResponse:a,components:i,checkoutStatus:u,settings:l})=>{const{onPaymentSetup:p,onCheckoutSuccess:m}=e,_=(0,n.useRef)(),h=(0,n.useRef)(),[v,g]=(0,n.useState)(!1),[w,E]=(0,n.useState)([]),[R,S]=(0,n.useState)(!1),[k,x]=(0,n.useState)(""),[P,C]=(0,n.useState)(0),{createErrorNotice:A,removeAllNotices:O}=(0,s.dispatch)("core/notices");(0,n.useEffect)((()=>{const e=p(M),t=m(D);return()=>{e(),t()}}),[m,p,w,v,o,t.billingAddress,r.shippingAddress]),(0,n.useEffect)((()=>{(async()=>{t?.cartTotal?.value&&(S(!0),f().then((e=>{x(e.revolut_order_public_id),C(e.revolut_order_amount),S(!1)})).catch((e=>A(d(e.message||"An unexpected error occurred"),{id:"create_order_failed",context:a.noticeContexts.PAYMENTS}))))})()}),[t.cartTotal.value]);const L=(({onMsg:e,publicId:t},r)=>{const o=(0,n.useRef)(e),a=(0,n.useRef)(null),s=(0,n.useRef)(null);return(0,n.useEffect)((()=>{let e=!1;return s.current&&(s.current.destroy(),o.current({type:"instance_destroyed"})),RevolutCheckout(t).then((t=>{!e&&a.current&&(s.current=t.createCardField({locale:c.locale,target:a.current,hidePostcodeField:!0,onSuccess(){o.current({type:"payment_successful"})},onError(e){j.includes(e.type)?o.current({type:"fields_errors_changed",errors:[e]}):o.current({type:"payment_failed",error:e})},onValidation:e=>o.current({type:"fields_errors_changed",errors:e}),onStatusChange:e=>{o.current({type:"fields_status_changed",status:e})},onCancel(){o.current({type:"payment_cancelled"})}}),o.current({type:"instance_mounted",instance:s.current}))})),()=>{e=!0,s.current&&(s.current.destroy(),s.current=null,o.current({type:"instance_destroyed"}))}}),[t,o,...r]),a})({publicId:k,onMsg:e=>{switch(e.type){case"payment_successful":document.dispatchEvent(new Event("payment_successful"));break;case"payment_failed":document.dispatchEvent(new CustomEvent("payment_failed",{detail:e.error.toString()}));break;case"instance_destroyed":_.current=null;break;case"instance_mounted":_.current=e.instance;break;case"fields_errors_changed":E(e.errors);break;case"fields_status_changed":g(e.status)}}},[P]),M=async()=>{O();let e=null;return t?.billingAddress||(e="Please check your billing address, and retry again."),(!v.completed||w.length>0)&&(e="The payment form is not ready for submission.",_.current&&(_.current.validate(),e="The payment form is not ready for submission. please fix the errors below and retry again.")),l.card_holder_name_field_enabled&&(h.current.isComplete()||(e="The payment form is not ready for submission. please fix the errors below and retry again.")),e?{type:a.responseTypes.ERROR,message:d(e),retry:!0,messageContext:a.noticeContexts.PAYMENTS}:{type:a.responseTypes.SUCCESS}},D=async e=>{S(!0);const{billingAddress:n}=t,{shippingAddress:s}=r,c={name:l.card_holder_name_field_enabled&&h.current.value.length>0?h.current.value:`${n.first_name} ${n.last_name}`,email:n.email,phone:n.phone,savePaymentMethodFor:o||l.is_save_payment_method_mandatory?"merchant":""};void 0!==n.country&&void 0!==n.postcode&&(c.billingAddress=y(n),c.shippingAddress=y(n)),s&&void 0!==s.country&&void 0!==s.postcode&&(c.shippingAddress=y(s));const i=await I({paymentData:c});if(!i.success)return i.error?(S(!1),{type:a.responseTypes.ERROR,message:d(i.error||"Unexpected error occurred, please try again later"),retry:!0,messageContext:a.noticeContexts.PAYMENTS}):void S(!1);b({response:e,paymentMethod:T.REVOLUT_CARD,shouldSavePayment:o})},I=async({paymentData:e})=>(_.current.submit(e),new Promise(((e,t)=>{document.addEventListener("payment_successful",(()=>{e({success:!0})})),document.addEventListener("payment_failed",(t=>{e({success:!1,error:t.detail})}))})));return(0,n.useEffect)((()=>{L.current&&(w.length>0?L.current.classList.add("woocommerce-revolut-card-element-error"):L.current.classList.remove("woocommerce-revolut-card-element-error"))}),[w]),(0,N.jsx)(N.Fragment,{children:(0,N.jsx)(i.LoadingMask,{showSpinner:!0,isLoading:u.isProcessing||u.isComplete||R,children:k&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)("div",{children:[(0,N.jsx)("div",{id:"woocommerce-revolut-card-element",ref:L}),w.length>0&&(0,N.jsx)(F,{errorList:w})]}),l.card_holder_name_field_enabled&&(0,N.jsx)("div",{style:{marginTop:10},children:(0,N.jsx)(B,{inputRef:h})}),l.banner.upsell_banner_enabled&&(0,N.jsx)("div",{children:(0,N.jsx)(Y,{orderToken:k})})]})})})},G={name:T.REVOLUT_CARD,label:(0,N.jsx)(I,{settings:u}),content:(0,N.jsx)(V,{settings:u}),edit:(0,N.jsx)("p",{children:d("Revolut Gateway is not available in editor mode")}),ariaLabel:d("Revolut Card`s Gateway"),canMakePayment:()=>u.can_make_payment,supports:{features:["products","subscriptions"],showSavedCards:!0,showSaveOption:!u.is_save_payment_method_mandatory}},$=()=>((0,n.useEffect)((()=>{x()}),[]),(0,N.jsx)("div",{id:A})),H=i.can_make_payment&&i.banner.points_banner_enabled,K={metadata:{name:"revolut-gateway-for-woocommerce/revolut-banner",category:"woocommerce",parent:[e.innerBlockAreas.CHECKOUT_ORDER_SUMMARY],attributes:{lock:{type:"object",default:{remove:!0,move:!0}}}},force:!0,component:()=>H?(0,N.jsx)($,{}):""},z=({billing:e,components:t,checkoutStatus:r,eventRegistration:o,emitResponse:a,onSubmit:c})=>{const{onCheckoutSuccess:i,onCheckoutFail:u}=o,{VALIDATION_STORE_KEY:l}=window.wc.wcBlocksData,[d,p]=(0,n.useState)(!1),m=(0,n.useRef)(null),_=(0,n.useRef)(null),y=(0,n.useRef)(null),{revolutPrbRef:h}=L({paymentOptions:{amount:e.cartTotal.value,validate:()=>new Promise(((e,t)=>{p(!0),(0,s.select)(l).hasValidationErrors()&&(p(!1),t("Checkout form is incomplete")),f().then((r=>{m.current=r.revolut_order_public_id,c(),document.addEventListener("checkout_success",(()=>{e(!0)})),document.addEventListener("checkout_fail",(()=>{p(!1),t("Something went wrong")}))}))})),createOrder:()=>({publicId:m.current})},onSuccess:()=>{p(!0),b({response:_.current,paymentMethod:T.REVOLUT_PRB,shouldSavePayment:0})},onError:e=>{p(!1),y.current&&y.current.resolve((e=>({type:a.responseTypes.ERROR,message:e,retry:!0,messageContext:a.noticeContexts.PAYMENTS}))(e))}},[e.cartTotal.value]);return(0,n.useEffect)((()=>{const e=i((async e=>new Promise((t=>{p(!1),_.current=e,document.dispatchEvent(new CustomEvent("checkout_success")),y.current={resolve:t}})))),t=u((e=>{e&&e.paymentDetails&&e.paymentDetails.wc_order_id||document.dispatchEvent(new CustomEvent("checkout_fail"))}));return()=>{e(),t()}}),[i,u]),M(),(0,N.jsxs)(N.Fragment,{children:[" ",(0,N.jsx)(t.LoadingMask,{showSpinner:!0,isLoading:d||r.isProcessing||r.isComplete,children:(0,N.jsx)("div",{ref:h})})]})},X=({billing:e,setExpressPaymentError:t,eventRegistration:r,onSubmit:o,onClick:a,onClose:s,emitResponse:i})=>{const{onPaymentSetup:u,onCheckoutFail:l}=r,d=(0,n.useRef)(),m=(0,n.useRef)(),{revolutPrbRef:y,destroyRef:h}=L({paymentOptions:{amount:0,requestShipping:!0,validate:()=>(a(),!0),onShippingOptionChange:e=>function(e){let t={security:c.fast_checkout_params.nonce.update_shipping,shipping_method:[e.id],is_product_page:c.fast_checkout_params.is_product_page};return new Promise(((e,r)=>{_({data:t,endpoint:p({endpoint:O.UPDATE_SHIPPING_METHOD})}).then((t=>{e(t)})).catch((e=>{r(e)}))}))}(e),onShippingAddressChange:e=>function(e){let t={security:c.fast_checkout_params.nonce.shipping,country:e.country,state:e.region,postcode:e.postalCode,city:e.city,address:"",address_2:"",is_product_page:c.fast_checkout_params.is_product_page,require_shipping:c.fast_checkout_params.shipping_required};return new Promise(((e,r)=>{_({data:t,endpoint:p({endpoint:O.GET_SHIPPING_OPTIONS})}).then((t=>{e(t)})).catch((e=>{r(e)}))}))}(e),createOrder:()=>new Promise(((e,t)=>{v().then((t=>{m.current=t,e({publicId:t})})).catch((e=>{t(e)}))})),validate(e){d.current=e}},onSuccess:()=>E({onSubmit:o,address:d.current}).catch((e=>{h.current(),g(m.current),t(e)})),onError:e=>{t(e||"Something went wrong while completing your payment"),s()},onCancel:e=>{t(e),s()}},[e.cartTotal.value]);return(0,n.useEffect)((()=>{const e=u((()=>({type:i.responseTypes.SUCCESS,meta:{paymentMethodData:{is_express_checkout:1}}}))),r=l((()=>{w(m.current).then((e=>{t(e.message),"failure"===e.type&&h.current()}))}));return()=>{e(),r()}}),[u,l]),(0,N.jsxs)(N.Fragment,{children:[" ",(0,N.jsx)("div",{ref:y})]})},W={name:"revolut_payment_request",label:(0,N.jsx)(I,{settings:l}),content:(0,N.jsx)(z,{}),edit:(0,N.jsx)("p",{children:d("Google/Apple Pay block is not available in editor mode")}),ariaLabel:"Google Pay/Apple Pay",canMakePayment:()=>l.can_make_payment,paymentMethodId:"revolut_payment_request",supports:{features:["products"]}},J={...W,name:"revolut_payment_request_express_checkout",paymentMethodId:"revolut_payment_request",content:(0,N.jsx)(X,{}),canMakePayment:()=>l.can_make_payment&&l.is_cart},Q=({billing:e,components:t,eventRegistration:r,onSubmit:o,emitResponse:a})=>{const{onCheckoutSuccess:c,onCheckoutFail:i}=r,{VALIDATION_STORE_KEY:u}=window.wc.wcBlocksData,[l,d]=(0,n.useState)(!1),[p,m]=(0,n.useState)(!1),_=(0,n.useRef)(null),y=(0,n.useRef)(null),h=(0,n.useRef)(null),v=e=>({type:a.responseTypes.ERROR,message:e,retry:!0,messageContext:a.noticeContexts.PAYMENTS}),g={totalAmount:e.cartTotal.value,validate:()=>(m(!1),new Promise((e=>{d(!0),(0,s.select)(u).hasValidationErrors()&&(d(!1),e(!1)),f().then((t=>{_.current=t.revolut_order_public_id,o(),document.addEventListener("checkout_success",(()=>{e(!0)})),document.addEventListener("checkout_fail",(()=>{d(!1),e(!1)}))}))}))),createOrder:()=>({publicId:_.current})},{revolutPayRef:w}=D({paymentOptions:g,onSuccess:()=>{d(!0),b({response:y.current,paymentMethod:T.REVOLUT_PAY,shouldSavePayment:0})},onError:e=>{d(!1),h.current&&h.current.resolve(v(e))},onCancel:()=>{m(!0),h.current&&h.current.resolve(v("Payment cancelled!"))}},[e.cartTotal.value]);return(0,n.useEffect)((()=>{const e=c((async e=>new Promise((t=>{if(p)return d(!1),t(v("Payment cancelled!"));d(!1),y.current=e,document.dispatchEvent(new CustomEvent("checkout_success")),h.current={resolve:t}})))),t=i((e=>{e&&e.paymentDetails&&e.paymentDetails.wc_order_id||document.dispatchEvent(new CustomEvent("checkout_fail"))}));return()=>{e(),t()}}),[c,i,p]),M(),(0,N.jsxs)(N.Fragment,{children:[" ",(0,N.jsx)(t.LoadingMask,{showSpinner:!0,isLoading:l,children:(0,N.jsx)("div",{ref:w})})]})},Z=({billing:e,setExpressPaymentError:t,eventRegistration:r,onSubmit:o,onClick:a,onClose:s,emitResponse:i})=>{const{onPaymentSetup:u,onCheckoutFail:l}=r,d=(0,n.useRef)(),m={requestShipping:!0,validate:()=>(a(),!0),createOrder:()=>v().then((e=>(d.current=e,(e=>_({data:{revolut_public_id:e,security:c.fast_checkout_params.nonce.update_order_total},endpoint:p({endpoint:O.UPDATE_PAYMENT_TOTAL})}))(e).then((()=>({publicId:e}))))))},{revolutPayRef:y,destroyRef:h}=D({paymentOptions:m,onSuccess:e=>(async e=>{try{const t=await _({data:{security:c.fast_checkout_params.nonce.load_order_data,revolut_public_id:e},endpoint:p({endpoint:O.LOAD_ORDER_DATA})});if(t)return t;throw new Error("Something went wrong while retrieving the billing address. your payment will be cancelled")}catch(e){throw new Error(e.message||"An unexpected error occurred.")}})(e).then((r=>{E({onSubmit:o,address:r.address_info}).catch((r=>{h.current(),g(e),t(r)}))})).catch((r=>{g(e),t(r)})),onError:e=>{t(e||"Something went wrong while completing your payment"),s()},onCancel:e=>{t(e||"Payment cancelled!"),s()}},[e.cartTotal.value]);return(0,n.useEffect)((()=>{const e=u((()=>({type:i.responseTypes.SUCCESS,meta:{paymentMethodData:{is_express_checkout:1}}}))),r=l((()=>{w(d.current).then((e=>{t(e.message),"failure"===e.type&&h.current()}))}));return()=>{e(),r()}}),[u,l]),(0,n.useEffect)((()=>{x()}),[]),(0,N.jsxs)(N.Fragment,{children:[" ",(0,N.jsx)("div",{id:A}),(0,N.jsx)("div",{ref:y})]})},ee=new URLSearchParams(window.location.search),te=ee.get("_rp_fr"),re=ee.get("_rp_oid"),ne=ee.get("_rp_s");(te||!ne&&re)&&((0,s.dispatch)("core/notices").createErrorNotice(d(te||"Payment Rejected"),{id:"rp-fr",context:"wc/checkout/payments"}),i.is_cart||(0,s.dispatch)(C).__internalSetActivePaymentMethod(T.REVOLUT_PAY));const oe={name:"revolut_pay",label:(0,N.jsx)(U,{}),content:(0,N.jsx)(Q,{}),edit:(0,N.jsx)("p",{children:d("Revolut Pay is not available in editor mode")}),ariaLabel:"Revolut Pay",canMakePayment:()=>i.can_make_payment,paymentMethodId:"revolut_pay",supports:{features:["products"]}},ae={...oe,name:"revolut_pay_express_checkout",paymentMethodId:"revolut_pay",content:(0,N.jsx)(Z,{settings:i}),canMakePayment:()=>i.can_make_payment&&i.is_cart};(0,t.registerPaymentMethod)(G),(0,t.registerExpressPaymentMethod)(ae),(0,t.registerPaymentMethod)(oe),(0,e.registerCheckoutBlock)(K),(0,t.registerExpressPaymentMethod)(J),(0,t.registerPaymentMethod)(W)})()})();
  • revolut-gateway-for-woocommerce/trunk/gateway-revolut.php

    r3230609 r3235401  
    77 * Author URI: https://www.revolut.com/business/online-payments
    88 * Text Domain: revolut-gateway-for-woocommerce
    9  * Version: 4.18.6
     9 * Version: 4.18.7
    1010 * Requires at least: 4.4
    1111 * Tested up to: 6.7.1
     
    1616defined( 'ABSPATH' ) || exit;
    1717define( 'REVOLUT_PATH', plugin_dir_path( __FILE__ ) );
    18 define( 'WC_GATEWAY_REVOLUT_VERSION', '4.18.6' );
     18define( 'WC_GATEWAY_REVOLUT_VERSION', '4.18.7' );
    1919define( 'WC_GATEWAY_PUBLIC_KEY_ENDPOINT', '/public-key/latest' );
    2020define( 'WC_GATEWAY_REVPAY_INDEX', 'USE_REVOLUT_PAY_2_0' );
  • revolut-gateway-for-woocommerce/trunk/includes/abstract/class-wc-payment-gateway-revolut.php

    r3230609 r3235401  
    7878
    7979    /**
     80     * Advanced plugin settings
     81     *
     82     * @var WC_Revolut_Advanced_Settings
     83     */
     84    public $advanced_settings;
     85
     86    /**
    8087     * Constructor
    8188     */
     
    8390        $this->api_settings         = revolut_wc()->api_settings;
    8491        $this->promotional_settings = revolut_wc()->promotional_settings;
     92        $this->advanced_settings    = revolut_wc()->advanced_settings;
    8593        $this->has_fields           = true;
    8694
     
    231239        $this->maybe_cancel_previous_wc_order( $revolut_public_id, $wc_order_id );
    232240        $revolut_order_id = $this->get_revolut_order_by_public_id( $revolut_public_id );
    233         $this->save_wc_order_id( $revolut_public_id, $revolut_order_id, $wc_order_id );
     241        $this->save_wc_order_id( $revolut_public_id, $revolut_order_id, $wc_order_id, $wc_order->get_order_number() );
    234242        $wc_order->update_meta_data( 'revolut_payment_public_id', $revolut_public_id );
    235243        $wc_order->update_meta_data( 'revolut_payment_order_id', $revolut_order_id );
     
    771779            }
    772780
    773             $this->save_wc_order_id( $revolut_payment_public_id, $revolut_order_id, $wc_order_id );
     781            $this->save_wc_order_id( $revolut_payment_public_id, $revolut_order_id, $wc_order_id, $wc_order->get_order_number() );
    774782            $this->save_payment_token_to_order( $wc_order, $wc_token, get_current_user_id() );
    775783            $this->verify_order_total( $revolut_order_id, $wc_order );
     
    888896     * @param string $revolut_order_id Revolut order id.
    889897     * @param int    $wc_order_id WooCommerce order id.
     898     * @param string $wc_order_number WooCommerce order id.
    890899     *
    891900     * @throws Exception Exception.
    892901     */
    893     protected function save_wc_order_id( $public_id, $revolut_order_id, $wc_order_id ) {
     902    protected function save_wc_order_id( $public_id, $revolut_order_id, $wc_order_id, $wc_order_number ) {
    894903        try {
    895904            global $wpdb;
     
    922931            }
    923932
     933            $merchant_order_ext_ref = $this->advanced_settings->external_order_reference_is_order_id() ? $wc_order_id : $wc_order_number;
     934
    924935            $body = array(
    925                 'merchant_order_ext_ref' => $wc_order_id,
     936                'merchant_order_ext_ref' => $merchant_order_ext_ref,
    926937            );
    927938
  • revolut-gateway-for-woocommerce/trunk/includes/class-wc-revolut-manager.php

    r3170065 r3235401  
    3636     */
    3737    public $promotional_settings;
     38
     39    /**
     40     * Advanced Plugin Settings Class instance.
     41     *
     42     * @var WC_Revolut_Advanced_Settings
     43     */
     44    public $advanced_settings;
    3845
    3946    /**
     
    8996        $this->api_settings         = new WC_Revolut_Settings_API();
    9097        $this->promotional_settings = new WC_Revolut_Promotional_Settings();
     98        $this->advanced_settings    = new WC_Revolut_Advanced_Settings();
    9199        new WC_Revolut_Apple_Pay_OnBoarding();
    92100        new WC_Revolut_Payment_Ajax_Controller();
    93101        new WC_Gateway_Revolut_Payment_Request();
    94102        new WC_Gateway_Revolut_Pay();
    95         new WC_Revolut_Advanced_Settings();
    96103    }
    97104}
  • revolut-gateway-for-woocommerce/trunk/includes/settings/class-wc-revolut-advanced-settings.php

    r2903286 r3235401  
    5252
    5353    /**
     54     * Check External Order Reference
     55     */
     56    public function external_order_reference_is_order_id() {
     57        return $this->get_option( 'external_order_reference' ) === 'order_id';
     58    }
     59
     60    /**
    5461     * Initialize Settings Form Fields
    5562     */
    5663    public function init_form_fields() {
    5764        $this->form_fields = array(
    58             'title'                              => array(
     65            'title'                    => array(
    5966                'type'  => 'title',
    6067                'title' => __( 'Revolut Gateway - Advanced Settings', 'revolut-gateway-for-woocommerce' ),
    6168            ),
    62             'clear_unused_order_records'         => array(
    63                 'title'       => 'Clear unused orders now',
    64                 'type'        => 'text',
    65                 'description' => '<button class="revolut_clear_unused_order_records" style="min-height: 30px;"><span id="span-for-active-button-sandbox">Clear</span></button><br><br><b>What is this?</b> The plugin creates a Revolut order every time a customer is attempting to pay. If you have fast checkout options active, this could mean that an order is created for every site visitor. If you have limited space on your database or you have a lot of site visitors, you might end up with a lot of unused orders. You can use this button to delete unused orders. WARNING: This could also delete orders that customers have not yet paid but have the intention to, so make sure that this is only used when there are no visitors on your website',
     69            'external_order_reference' => array(
     70                'title'       => __( 'Select External WooCommerce Order Reference', 'revolut-gateway-for-woocommerce' ),
     71                'description' => __( 'This configuration allows selecting between using the Order ID (e.g. 1756) or modified Order Numbers (e.g RVLT001756) for the purpose of external references.', 'revolut-gateway-for-woocommerce' ),
     72                'desc_tip'    => true,
     73                'type'        => 'select',
     74                'default'     => 'order_id',
     75                'options'     => array(
     76                    'order_id'     => __( 'WooCommerce Order ID', 'revolut-gateway-for-woocommerce' ),
     77                    'order_number' => __( 'WooCommerce Order Number', 'revolut-gateway-for-woocommerce' ),
     78                ),
    6679            ),
    67             'consent_clear_unused_order_records' => array(
    68                 'title'   => '',
    69                 'label'   => __( 'By ticking this box I understand that unused order IDs stored in my website’s database will be deleted. I understand as well that this is run at my own risk and could cause temporary issues with payments being failed.', 'revolut-gateway-for-woocommerce' ),
    70                 'type'    => 'checkbox',
    71                 'default' => 'no',
    72                 'class'   => 'info_clear_unused_order_records',
    73             ),
    74 
    7580        );
    7681    }
  • revolut-gateway-for-woocommerce/trunk/readme.txt

    r3230609 r3235401  
    44Requires at least: 4.4
    55Tested up to: 6.6.2
    6 Stable tag: 4.18.6
     6Stable tag: 4.18.7
    77Requires PHP: 7.2
    88License: GPLv2 or later
     
    9999
    100100== Changelog ==
     101= 4.18.7 =
     102* Added configuration for order external reference selection
     103* Disabled postcode requirement for card payment on block checkout
     104
    101105= 4.18.6 =
    102106* Fixed an issue where cart block is not loading when payment methods are not available
Note: See TracChangeset for help on using the changeset viewer.