diff --git a/assets/build/unzer_apple_pay_v2.asset.php b/assets/build/unzer_apple_pay_v2.asset.php index 7068254..867a1a1 100644 --- a/assets/build/unzer_apple_pay_v2.asset.php +++ b/assets/build/unzer_apple_pay_v2.asset.php @@ -1,4 +1,4 @@ array( 'react-jsx-runtime', 'wc-blocks-registry', 'wc-settings', 'wp-element', 'wp-html-entities' ), - 'version' => '11275690762e1158d528', + 'version' => '916afb7af7c9d1103569', ); diff --git a/assets/build/unzer_apple_pay_v2.js b/assets/build/unzer_apple_pay_v2.js index 6c22c1c..5c21ce7 100644 --- a/assets/build/unzer_apple_pay_v2.js +++ b/assets/build/unzer_apple_pay_v2.js @@ -1 +1 @@ -(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,i="apple_pay_v2",p=(0,s.getSetting)("unzer_"+i+"_data",{}),c=p.title||i,a=p.id||i,r=p?.description||"",m=p?.publicKey||"",u=p?.locale||"",d=p.paymentComponentId||a+"-payment-component",R=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const n=document.getElementById(e);n||console.error("unzer payment component does not exist: "+e);const o=await n.submit();if(o.submitResponse){if(!0===o.submitResponse.success){const e={};e.unzer_nonce=s.nonce,e["unzer-apple-pay-v2-id"]=o.submitResponse.data.id;const n={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("submit response: ",o.submitResponse,n),n}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 1"}}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 2"}}catch(e){return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 3"}}}}(d,0,n,p));return e},[s]),(0,t.jsxs)("div",{children:[r&&(0,t.jsx)("p",{children:r}),(0,t.jsx)("unzer-payment",{id:d,publicKey:m,locale:u,children:(0,t.jsx)("unzer-apple-pay",{})})]})};!function(s,o,i){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:i,edit:i,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,c,(0,t.jsx)(R,{}))})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,r="apple_pay_v2",c=(0,s.getSetting)("unzer_"+r+"_data",{}),a=c.title||r,p=c.id||r,i=c?.description||"",m=c?.publicKey||"",d=c?.locale||"",u=c.paymentComponentId||p+"-payment-component",y=c.checkoutComponentId||p+"-checkout-component",l=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const o=document.getElementById(e);if(o||console.error("unzer payment component does not exist: "+e),o.woocommercePaymentTypeId){const e={};e.unzer_nonce=s.nonce,e[n]=o.woocommercePaymentTypeId;const r={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("return previously generated type id (button payment methods)",r),r}const r=await o.submit();if(r.submitResponse){if(!0===r.submitResponse.success){const e={};return e.unzer_nonce=s.nonce,e[n]=r.submitResponse.data.id,{type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}}}return{type:t?.responseTypes?.ERROR,message:r.submitResponse.message||"General Error"}}return{type:t?.responseTypes?.ERROR,message:"General Error 002"}}catch(e){return{type:t?.responseTypes?.ERROR,message:e.message||e.name||"General Error 003"}}}}(u,"unzer-apple-pay-v2-id",n,c));return e},[s]),(0,t.jsxs)("div",{children:[i&&(0,t.jsx)("p",{children:i}),(0,t.jsx)("div",{style:{display:"none"},children:(0,t.jsxs)("div",{id:u+"-container-for-button",children:[(0,t.jsx)("unzer-payment",{id:u,publicKey:m,locale:d,children:(0,t.jsx)("unzer-apple-pay",{})}),(0,t.jsx)("unzer-checkout",{id:y})]})})]})};!function(s,o,r){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:r,edit:r,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(p,a,(0,t.jsx)(l,{}))})(); \ No newline at end of file diff --git a/assets/build/unzer_card.asset.php b/assets/build/unzer_card.asset.php index becffaa..6dfb35f 100644 --- a/assets/build/unzer_card.asset.php +++ b/assets/build/unzer_card.asset.php @@ -1,4 +1,4 @@ array( 'react-jsx-runtime', 'wc-blocks-registry', 'wc-settings', 'wp-element', 'wp-html-entities' ), - 'version' => '3cff6bed3cc968bbf96f', + 'version' => '63fd7aaf04a14116e59a', ); diff --git a/assets/build/unzer_card.js b/assets/build/unzer_card.js index 0080402..c2b6961 100644 --- a/assets/build/unzer_card.js +++ b/assets/build/unzer_card.js @@ -1 +1 @@ -(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,c="card",i=(0,s.getSetting)("unzer_card_data",{}),r=i.title||c,a=i.id||c,p=i?.description||"",d=i?.publicKey||"",m=(i?.locale||"")+(new Date).getMilliseconds(),u=i.paymentComponentId||a+"-payment-component",R=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const n=document.getElementById(e);n||console.error("unzer payment component does not exist: "+e);const o=await n.submit();if(o.submitResponse){if(!0===o.submitResponse.success){const e={};e.unzer_nonce=s.nonce,e["unzer-card-id"]=o.submitResponse.data.id;const n={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("submit response: ",o.submitResponse,n),n}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 1"}}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 2"}}catch(e){return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 3"}}}}(u,0,n,i));return e},[s]),(0,t.jsxs)("div",{children:[p&&(0,t.jsx)("p",{children:p}),(0,t.jsx)("unzer-payment",{id:u,publicKey:d,locale:m,children:(0,t.jsx)("unzer-card",{})})]})};!function(s,o,c){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:c,edit:c,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,r,(0,t.jsx)(R,{}))})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,r="card",c=(0,s.getSetting)("unzer_card_data",{}),a=c.title||r,i=c.id||r,p=c?.description||"",m=c?.publicKey||"",d=(c?.locale||"")+(new Date).getMilliseconds(),u=c.paymentComponentId||i+"-payment-component",y=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const o=document.getElementById(e);if(o||console.error("unzer payment component does not exist: "+e),o.woocommercePaymentTypeId){const e={};e.unzer_nonce=s.nonce,e[n]=o.woocommercePaymentTypeId;const r={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("return previously generated type id (button payment methods)",r),r}const r=await o.submit();if(r.submitResponse){if(!0===r.submitResponse.success){const e={};return e.unzer_nonce=s.nonce,e[n]=r.submitResponse.data.id,{type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}}}return{type:t?.responseTypes?.ERROR,message:r.submitResponse.message||"General Error"}}return{type:t?.responseTypes?.ERROR,message:"General Error 002"}}catch(e){return{type:t?.responseTypes?.ERROR,message:e.message||e.name||"General Error 003"}}}}(u,"unzer-card-id",n,c));return e},[s]),(0,t.jsxs)("div",{children:[p&&(0,t.jsx)("p",{children:p}),(0,t.jsx)("unzer-payment",{id:u,publicKey:m,locale:d,children:(0,t.jsx)("unzer-card",{})})]})};!function(s,o,r){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:r,edit:r,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(i,a,(0,t.jsx)(y,{}))})(); \ No newline at end of file diff --git a/assets/build/unzer_direct_debit.asset.php b/assets/build/unzer_direct_debit.asset.php index 957db10..7a7d798 100644 --- a/assets/build/unzer_direct_debit.asset.php +++ b/assets/build/unzer_direct_debit.asset.php @@ -1,4 +1,4 @@ array( 'react-jsx-runtime', 'wc-blocks-registry', 'wc-settings', 'wp-element', 'wp-html-entities' ), - 'version' => '00adb3a0559cdb92af78', + 'version' => '32d79f5351f92c11ec07', ); diff --git a/assets/build/unzer_direct_debit.js b/assets/build/unzer_direct_debit.js index 66316ee..46addcc 100644 --- a/assets/build/unzer_direct_debit.js +++ b/assets/build/unzer_direct_debit.js @@ -1 +1 @@ -(()=>{"use strict";const e=window.wp.htmlEntities,t=window.wc.wcBlocksRegistry,n=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,i="direct_debit",c=(0,s.getSetting)("unzer_"+i+"_data",{}),r=c.title||i,a=c.id||i,p=c?.description||"",d=c?.publicKey||"",m=c?.locale||"",u=c.paymentComponentId||a+"-payment-component",R=({eventRegistration:e,emitResponse:t})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,t,n,s){return async()=>{try{const t=document.getElementById(e);t||console.error("unzer payment component does not exist: "+e);const o=await t.submit();if(o.submitResponse){if(!0===o.submitResponse.success){const e={};e.unzer_nonce=s.nonce,e["unzer-direct-debit-id"]=o.submitResponse.data.id;const t={type:n?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("submit response: ",o.submitResponse,t),t}return{type:n?.responseTypes?.ERROR,message:"GENERAL ERROR 1"}}return{type:n?.responseTypes?.ERROR,message:"GENERAL ERROR 2"}}catch(e){return{type:n?.responseTypes?.ERROR,message:"GENERAL ERROR 3"}}}}(u,0,t,c));return e},[s]),(0,n.jsxs)("div",{children:[p&&(0,n.jsx)("p",{children:p}),(0,n.jsx)("unzer-payment",{id:u,publicKey:d,locale:m,children:(0,n.jsx)("unzer-sepa-direct-debit",{})})]})};!function(s,o,i){(0,t.registerPaymentMethod)({name:s,label:(0,n.jsx)("div",{children:(0,n.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:i,edit:i,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,r,(0,n.jsx)(R,{}))})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.htmlEntities,t=window.wc.wcBlocksRegistry,n=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,r="direct_debit",c=(0,s.getSetting)("unzer_"+r+"_data",{}),i=c.title||r,a=c.id||r,p=c?.description||"",m=c?.publicKey||"",d=c?.locale||"",u=c.paymentComponentId||a+"-payment-component",y=({eventRegistration:e,emitResponse:t})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,t,n,s){return async()=>{try{const o=document.getElementById(e);if(o||console.error("unzer payment component does not exist: "+e),o.woocommercePaymentTypeId){const e={};e.unzer_nonce=s.nonce,e[t]=o.woocommercePaymentTypeId;const r={type:n?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("return previously generated type id (button payment methods)",r),r}const r=await o.submit();if(r.submitResponse){if(!0===r.submitResponse.success){const e={};return e.unzer_nonce=s.nonce,e[t]=r.submitResponse.data.id,{type:n?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}}}return{type:n?.responseTypes?.ERROR,message:r.submitResponse.message||"General Error"}}return{type:n?.responseTypes?.ERROR,message:"General Error 002"}}catch(e){return{type:n?.responseTypes?.ERROR,message:e.message||e.name||"General Error 003"}}}}(u,"unzer-direct-debit-id",t,c));return e},[s]),(0,n.jsxs)("div",{children:[p&&(0,n.jsx)("p",{children:p}),(0,n.jsx)("unzer-payment",{id:u,publicKey:m,locale:d,children:(0,n.jsx)("unzer-sepa-direct-debit",{})})]})};!function(s,o,r){(0,t.registerPaymentMethod)({name:s,label:(0,n.jsx)("div",{children:(0,n.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:r,edit:r,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,i,(0,n.jsx)(y,{}))})(); \ No newline at end of file diff --git a/assets/build/unzer_direct_debit_secured.asset.php b/assets/build/unzer_direct_debit_secured.asset.php index 6ae7c10..d05763f 100644 --- a/assets/build/unzer_direct_debit_secured.asset.php +++ b/assets/build/unzer_direct_debit_secured.asset.php @@ -1,4 +1,4 @@ array( 'react-jsx-runtime', 'wc-blocks-registry', 'wc-settings', 'wp-element', 'wp-html-entities' ), - 'version' => '85a29053323ec96921e4', + 'version' => 'ce8fb575ec826f41efeb', ); diff --git a/assets/build/unzer_direct_debit_secured.js b/assets/build/unzer_direct_debit_secured.js index 9afa1a7..8fb6b2d 100644 --- a/assets/build/unzer_direct_debit_secured.js +++ b/assets/build/unzer_direct_debit_secured.js @@ -1 +1 @@ -(()=>{"use strict";const e=window.wp.htmlEntities,t=window.wc.wcBlocksRegistry,n=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,i="direct_debit_secured",c=(0,s.getSetting)("unzer_"+i+"_data",{}),r=c.title||i,a=c.id||i,p=c?.description||"",d=c?.publicKey||"",u=c?.locale||"",m=c.paymentComponentId||a+"-payment-component",R=({eventRegistration:e,emitResponse:t})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,t,n,s){return async()=>{try{const t=document.getElementById(e);t||console.error("unzer payment component does not exist: "+e);const o=await t.submit();if(o.submitResponse){if(!0===o.submitResponse.success){const e={};e.unzer_nonce=s.nonce,e["unzer-direct-debit-secured-id"]=o.submitResponse.data.id;const t={type:n?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("submit response: ",o.submitResponse,t),t}return{type:n?.responseTypes?.ERROR,message:"GENERAL ERROR 1"}}return{type:n?.responseTypes?.ERROR,message:"GENERAL ERROR 2"}}catch(e){return{type:n?.responseTypes?.ERROR,message:"GENERAL ERROR 3"}}}}(m,0,t,c));return e},[s]),(0,n.jsxs)("div",{children:[p&&(0,n.jsx)("p",{children:p}),(0,n.jsx)("unzer-payment",{id:m,publicKey:d,locale:u,children:(0,n.jsx)("unzer-paylater-direct-debit",{})})]})};!function(s,o,i){(0,t.registerPaymentMethod)({name:s,label:(0,n.jsx)("div",{children:(0,n.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:i,edit:i,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,r,(0,n.jsx)(R,{}))})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.htmlEntities,t=window.wc.wcBlocksRegistry,n=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,r="direct_debit_secured",c=(0,s.getSetting)("unzer_"+r+"_data",{}),i=c.title||r,a=c.id||r,p=c?.description||"",d=c?.publicKey||"",m=c?.locale||"",u=c.paymentComponentId||a+"-payment-component",y=({eventRegistration:e,emitResponse:t})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,t,n,s){return async()=>{try{const o=document.getElementById(e);if(o||console.error("unzer payment component does not exist: "+e),o.woocommercePaymentTypeId){const e={};e.unzer_nonce=s.nonce,e[t]=o.woocommercePaymentTypeId;const r={type:n?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("return previously generated type id (button payment methods)",r),r}const r=await o.submit();if(r.submitResponse){if(!0===r.submitResponse.success){const e={};return e.unzer_nonce=s.nonce,e[t]=r.submitResponse.data.id,{type:n?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}}}return{type:n?.responseTypes?.ERROR,message:r.submitResponse.message||"General Error"}}return{type:n?.responseTypes?.ERROR,message:"General Error 002"}}catch(e){return{type:n?.responseTypes?.ERROR,message:e.message||e.name||"General Error 003"}}}}(u,"unzer-direct-debit-secured-id",t,c));return e},[s]),(0,n.jsxs)("div",{children:[p&&(0,n.jsx)("p",{children:p}),(0,n.jsx)("unzer-payment",{id:u,publicKey:d,locale:m,children:(0,n.jsx)("unzer-paylater-direct-debit",{})})]})};!function(s,o,r){(0,t.registerPaymentMethod)({name:s,label:(0,n.jsx)("div",{children:(0,n.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:r,edit:r,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,i,(0,n.jsx)(y,{}))})(); \ No newline at end of file diff --git a/assets/build/unzer_global.asset.php b/assets/build/unzer_global.asset.php index 046d159..de580bd 100644 --- a/assets/build/unzer_global.asset.php +++ b/assets/build/unzer_global.asset.php @@ -1,4 +1,4 @@ array( 'wp-data' ), - 'version' => '726a0e254157077b8bec', + 'version' => '8b3cc5a0ca561d16a328', ); diff --git a/assets/build/unzer_global.js b/assets/build/unzer_global.js index 9127424..bcb5c5f 100644 --- a/assets/build/unzer_global.js +++ b/assets/build/unzer_global.js @@ -1 +1 @@ -(()=>{"use strict";const t=window.wp.data;window.unzerCurrentPaymentMethod="",window.unzerCurrentAmount=0,(0,t.subscribe)(()=>{const e=(0,t.select)(window.wc.wcBlocksData.CART_STORE_KEY),n=(0,t.select)(window.wc.wcBlocksData.PAYMENT_STORE_KEY),o=e.getCartData();let a=!1;window.unzerCurrentPaymentMethod!==n.getActivePaymentMethod()&&(a=!0),a||window.unzerCurrentAmount===o.totals.total_price||(a=!0),a&&(console.log("payment method changed to: "+n.getActivePaymentMethod()),window.unzerCurrentPaymentMethod=n.getActivePaymentMethod(),window.unzerCurrentAmount=o.totals.total_price,function(t,e){console.info("updatePaymentMethodData for "+t);const n=window.wc.wcSettings.getSetting(t+"_data",{});console.log(n,e),setTimeout(async()=>{const o=document.getElementById(n.paymentComponentId);o&&Promise.all([customElements.whenDefined("unzer-payment")]).then(()=>{try{const a=new FormData;a.append("data",JSON.stringify(e)),a.append("payment_method",t),a.append("unzer_nonce",n.nonce),fetch(n.getCustomerDataUrl,{method:"POST",body:a}).then(t=>t.json()).then(t=>{const n=t.customer;if(console.log("set customer data",n),n&&o.setCustomerData(n),t.publicKey!==o.publicKey&&(o.publicKey=t.publicKey,o.initOnFirstUpdate()),o.setBasketData){o.setBasketData({amount:e.totals.total_price/100,currencyType:e.totals.currency_code,country:e.billingAddress.country});const t=document.getElementById("unzer-paylater-installment-component");t&&t.reloadPlansWithRetainedData&&(t.updateDataFromStore(),console.log(t.basketDetails),t.onDataReady())}})}catch(t){console.error(t)}})},100)}(window.unzerCurrentPaymentMethod,o))},"wc/store/cart")})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.data;function t(e,t){e.woocommercePaymentTypeId=t;const o=document.querySelectorAll(".wc-block-components-checkout-place-order-button");o[o.length-1].click(),e.style.display="none",setTimeout(()=>{n(!0)},3e3)}window.unzerCurrentPaymentMethod="",window.unzerIsInitial=!0,window.unzerCurrentAmount=0,window.unzerInitiatePaymentMethod=(e,o,n)=>{const a=document.getElementById(o.paymentComponentId),c=document.getElementById(o.paymentComponentId+"-container-for-button"),r=document.querySelectorAll(".wc-block-components-checkout-place-order-button");r.forEach(e=>{e.classList.remove("unzer-place-order-button-hidden")}),document.querySelectorAll(".unzer-payment-method-checkout-button-container").forEach(e=>{e.remove()}),a&&(a.style.display="",Promise.all([customElements.whenDefined("unzer-payment")]).then(()=>{try{if(r.length&&c){r.forEach(e=>{e.classList.add("unzer-place-order-button-hidden")});const e=r[r.length-1];c.classList.add("unzer-payment-method-checkout-button-container"),e.after(c)}if("unzer_google_pay"===e&&a.setGooglePayData){const e=o.options,c={gatewayMerchantId:e.gatewayMerchantId,merchantInfo:e.merchantInfo,transactionInfo:{currencyCode:n.totals.currency_code,countryCode:n.billingAddress.country,totalPriceStatus:"ESTIMATED",totalPrice:(n.totals.total_price/100).toFixed(2)},buttonOptions:e.buttonOptions,allowedCardNetworks:e.allowedCardNetworks,allowCreditCards:e.allowCreditCards,allowPrepaidCards:e.allowPrepaidCards};setTimeout(function(){a.setGooglePayData(c)},1e3);const r=document.getElementById("unzer-google-pay-checkout-component");r&&(r.onPaymentSubmit=function(e){e.submitResponse&&e.submitResponse.success?t(a,e.submitResponse.data.id):console.error(e)})}if("unzer_apple_pay_v2"===e&&a.setApplePayData){const e={countryCode:o.storeCountry,currencyCode:n.totals.currency_code,supportedNetworks:["visa","masterCard"],merchantCapabilities:["supports3DS"],total:{label:o.storeName,amount:n.totals.total_price/100}};setTimeout(function(){a.setApplePayData(e)},1e3);const c=document.getElementById("unzer-apple-pay-v2-checkout-component");c&&(c.onPaymentSubmit=function(e){e.submitResponse&&e.submitResponse.data&&e.submitResponse.data.id&&-1===e.submitResponse.data.id.indexOf("-apl-")||(e.submitResponse&&e.submitResponse.success?t(a,e.submitResponse.data.id):console.error(e))})}const s=new FormData;s.append("data",JSON.stringify(n)),s.append("payment_method",e),s.append("unzer_nonce",o.nonce),fetch(o.getCustomerDataUrl,{method:"POST",body:s}).then(e=>e.json()).then(e=>{const t=e.customer;if(t&&a.setCustomerData(t),e.publicKey!==a.publicKey&&(a.publicKey=e.publicKey,a.initOnFirstUpdate()),a.setBasketData){a.setBasketData({amount:n.totals.total_price/100,currencyType:n.totals.currency_code,country:n.billingAddress.country});const e=document.getElementById("unzer-paylater-installment-component");e&&e.reloadPlansWithRetainedData&&(e.updateDataFromStore(),e.onDataReady())}})}catch(e){console.error(e)}}))};const o=function(e,t){const o=window.wc.wcSettings.getSetting(e+"_data",{});if(console.log(o,t),window.unzerIsInitial){const n=()=>{document.querySelector(".wc-block-components-checkout-place-order-button")&&document.querySelector(".wp-block-woocommerce-checkout-payment-block .wc-block-components-radio-control-accordion-option")?setTimeout(async()=>{window.unzerInitiatePaymentMethod(e,o,t)},1e3):setTimeout(n,100)};n()}else setTimeout(async()=>{window.unzerInitiatePaymentMethod(e,o,t)},1e3)};function n(t=!1){(0,e.select)(window.wc.wcBlocksData.CHECKOUT_STORE_KEY);const n=(0,e.select)(window.wc.wcBlocksData.CART_STORE_KEY),a=(0,e.select)(window.wc.wcBlocksData.PAYMENT_STORE_KEY),c=n.getCartData();let r=!1;window.unzerCurrentPaymentMethod!==a.getActivePaymentMethod()&&(r=!0),r||window.unzerCurrentAmount===c.totals.total_price||(r=!0),(r||t)&&(console.log("payment method changed to: "+a.getActivePaymentMethod()),window.unzerCurrentPaymentMethod=a.getActivePaymentMethod(),window.unzerCurrentAmount=c.totals.total_price,o(window.unzerCurrentPaymentMethod,c))}(0,e.subscribe)(n,"wc/store/cart")})(); \ No newline at end of file diff --git a/assets/build/unzer_google_pay.asset.php b/assets/build/unzer_google_pay.asset.php index 5540647..649f38f 100644 --- a/assets/build/unzer_google_pay.asset.php +++ b/assets/build/unzer_google_pay.asset.php @@ -1,4 +1,4 @@ array( 'react-jsx-runtime', 'wc-blocks-registry', 'wc-settings', 'wp-element', 'wp-html-entities' ), - 'version' => 'f61e770ae45bf7883391', + 'version' => 'ed95cfcadf7c4c532301', ); diff --git a/assets/build/unzer_google_pay.js b/assets/build/unzer_google_pay.js index 0725272..5d8c331 100644 --- a/assets/build/unzer_google_pay.js +++ b/assets/build/unzer_google_pay.js @@ -1 +1 @@ -(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,i="google_pay",c=(0,s.getSetting)("unzer_"+i+"_data",{}),r=c.title||i,a=c.id||i,p=c?.description||"",m=c?.publicKey||"",u=c?.locale||"",d=c.paymentComponentId||a+"-payment-component",R=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const n=document.getElementById(e);n||console.error("unzer payment component does not exist: "+e);const o=await n.submit();if(o.submitResponse){if(!0===o.submitResponse.success){const e={};e.unzer_nonce=s.nonce,e["unzer-google-pay-id"]=o.submitResponse.data.id;const n={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("submit response: ",o.submitResponse,n),n}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 1"}}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 2"}}catch(e){return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 3"}}}}(d,0,n,c));return e},[s]),(0,t.jsxs)("div",{children:[p&&(0,t.jsx)("p",{children:p}),(0,t.jsx)("unzer-payment",{id:d,publicKey:m,locale:u,children:(0,t.jsx)("unzer-google-pay",{})})]})};!function(s,o,i){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:i,edit:i,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,r,(0,t.jsx)(R,{}))})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,r="google_pay",c=(0,s.getSetting)("unzer_"+r+"_data",{}),a=c.title||r,i=c.id||r,p=c?.description||"",m=c?.publicKey||"",d=c?.locale||"",u=c.paymentComponentId||i+"-payment-component",y=c.checkoutComponentId||i+"-checkout-component",l=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const o=document.getElementById(e);if(o||console.error("unzer payment component does not exist: "+e),o.woocommercePaymentTypeId){const e={};e.unzer_nonce=s.nonce,e[n]=o.woocommercePaymentTypeId;const r={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("return previously generated type id (button payment methods)",r),r}const r=await o.submit();if(r.submitResponse){if(!0===r.submitResponse.success){const e={};return e.unzer_nonce=s.nonce,e[n]=r.submitResponse.data.id,{type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}}}return{type:t?.responseTypes?.ERROR,message:r.submitResponse.message||"General Error"}}return{type:t?.responseTypes?.ERROR,message:"General Error 002"}}catch(e){return{type:t?.responseTypes?.ERROR,message:e.message||e.name||"General Error 003"}}}}(u,"unzer-google-pay-id",n,c));return e},[s]),(0,t.jsxs)("div",{children:[p&&(0,t.jsx)("p",{children:p}),(0,t.jsx)("div",{style:{display:"none"},children:(0,t.jsxs)("div",{id:u+"-container-for-button",children:[(0,t.jsx)("unzer-payment",{id:u,publicKey:m,locale:d,children:(0,t.jsx)("unzer-google-pay",{})}),(0,t.jsx)("unzer-checkout",{id:y})]})})]})};!function(s,o,r){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:r,edit:r,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(i,a,(0,t.jsx)(l,{}))})(); \ No newline at end of file diff --git a/assets/build/unzer_installment.asset.php b/assets/build/unzer_installment.asset.php index 4722795..fb0a52f 100644 --- a/assets/build/unzer_installment.asset.php +++ b/assets/build/unzer_installment.asset.php @@ -1,4 +1,4 @@ array( 'react-jsx-runtime', 'wc-blocks-registry', 'wc-settings', 'wp-element', 'wp-html-entities' ), - 'version' => '60224e45e2089f765739', + 'version' => '10ed83671a1cfe909449', ); diff --git a/assets/build/unzer_installment.js b/assets/build/unzer_installment.js index 286bf0f..eb26be7 100644 --- a/assets/build/unzer_installment.js +++ b/assets/build/unzer_installment.js @@ -1 +1 @@ -(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,i="installment",c=(0,s.getSetting)("unzer_"+i+"_data",{}),a=c.title||i,r=c.id||i,p=c?.description||"",m=c?.publicKey||"",l=c?.locale||"",u=c.paymentComponentId||r+"-payment-component",d=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const n=document.getElementById(e);n||console.error("unzer payment component does not exist: "+e);const o=await n.submit();if(o.submitResponse){if(!0===o.submitResponse.success){const e={};e.unzer_nonce=s.nonce,e["unzer-installment-id"]=o.submitResponse.data.id;const n={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("submit response: ",o.submitResponse,n),n}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 1"}}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 2"}}catch(e){return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 3"}}}}(u,0,n,c));return e},[s]),(0,t.jsxs)("div",{children:[p&&(0,t.jsx)("p",{children:p}),(0,t.jsx)("unzer-payment",{id:u,publicKey:m,locale:l,children:(0,t.jsx)("unzer-paylater-installment",{id:"unzer-paylater-installment-component"})})]})};!function(s,o,i){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:i,edit:i,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(r,a,(0,t.jsx)(d,{}))})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,r="installment",a=(0,s.getSetting)("unzer_"+r+"_data",{}),c=a.title||r,i=a.id||r,p=a?.description||"",m=a?.publicKey||"",l=a?.locale||"",d=a.paymentComponentId||i+"-payment-component",u=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const o=document.getElementById(e);if(o||console.error("unzer payment component does not exist: "+e),o.woocommercePaymentTypeId){const e={};e.unzer_nonce=s.nonce,e[n]=o.woocommercePaymentTypeId;const r={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("return previously generated type id (button payment methods)",r),r}const r=await o.submit();if(r.submitResponse){if(!0===r.submitResponse.success){const e={};return e.unzer_nonce=s.nonce,e[n]=r.submitResponse.data.id,{type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}}}return{type:t?.responseTypes?.ERROR,message:r.submitResponse.message||"General Error"}}return{type:t?.responseTypes?.ERROR,message:"General Error 002"}}catch(e){return{type:t?.responseTypes?.ERROR,message:e.message||e.name||"General Error 003"}}}}(d,"unzer-installment-id",n,a));return e},[s]),(0,t.jsxs)("div",{children:[p&&(0,t.jsx)("p",{children:p}),(0,t.jsx)("unzer-payment",{id:d,publicKey:m,locale:l,children:(0,t.jsx)("unzer-paylater-installment",{id:"unzer-paylater-installment-component"})})]})};!function(s,o,r){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:r,edit:r,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(i,c,(0,t.jsx)(u,{}))})(); \ No newline at end of file diff --git a/assets/build/unzer_invoice.asset.php b/assets/build/unzer_invoice.asset.php index e31cbbd..a8a211b 100644 --- a/assets/build/unzer_invoice.asset.php +++ b/assets/build/unzer_invoice.asset.php @@ -1,4 +1,4 @@ array( 'react-jsx-runtime', 'wc-blocks-registry', 'wc-settings', 'wp-element', 'wp-html-entities' ), - 'version' => '09fccfb7c08f267db209', + 'version' => 'f3d80eedde3556f6c679', ); diff --git a/assets/build/unzer_invoice.js b/assets/build/unzer_invoice.js index a027d8c..ff9a280 100644 --- a/assets/build/unzer_invoice.js +++ b/assets/build/unzer_invoice.js @@ -1 +1 @@ -(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,i="invoice",c=(0,s.getSetting)("unzer_"+i+"_data",{}),r=c.title||i,a=c.id||i,p=c?.description||"",m=c?.publicKey||"",u=c?.locale||"",d=c.paymentComponentId||a+"-payment-component",R=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const n=document.getElementById(e);n||console.error("unzer payment component does not exist: "+e);const o=await n.submit();if(o.submitResponse){if(!0===o.submitResponse.success){const e={};e.unzer_nonce=s.nonce,e["unzer-invoice-id"]=o.submitResponse.data.id;const n={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("submit response: ",o.submitResponse,n),n}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 1"}}return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 2"}}catch(e){return{type:t?.responseTypes?.ERROR,message:"GENERAL ERROR 3"}}}}(d,0,n,c));return e},[s]),(0,t.jsxs)("div",{children:[p&&(0,t.jsx)("p",{children:p}),(0,t.jsx)("unzer-payment",{id:d,publicKey:m,locale:u,children:(0,t.jsx)("unzer-paylater-invoice",{})})]})};!function(s,o,i){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:i,edit:i,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,r,(0,t.jsx)(R,{}))})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.htmlEntities,n=window.wc.wcBlocksRegistry,t=window.ReactJSXRuntime,s=window.wc.wcSettings,o=window.wp.element,r="invoice",c=(0,s.getSetting)("unzer_"+r+"_data",{}),i=c.title||r,a=c.id||r,p=c?.description||"",m=c?.publicKey||"",d=c?.locale||"",u=c.paymentComponentId||a+"-payment-component",y=({eventRegistration:e,emitResponse:n})=>{const{onPaymentSetup:s}=e;return(0,o.useEffect)(()=>{const e=s(function(e,n,t,s){return async()=>{try{const o=document.getElementById(e);if(o||console.error("unzer payment component does not exist: "+e),o.woocommercePaymentTypeId){const e={};e.unzer_nonce=s.nonce,e[n]=o.woocommercePaymentTypeId;const r={type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}};return console.log("return previously generated type id (button payment methods)",r),r}const r=await o.submit();if(r.submitResponse){if(!0===r.submitResponse.success){const e={};return e.unzer_nonce=s.nonce,e[n]=r.submitResponse.data.id,{type:t?.responseTypes?.SUCCESS,meta:{paymentMethodData:e}}}return{type:t?.responseTypes?.ERROR,message:r.submitResponse.message||"General Error"}}return{type:t?.responseTypes?.ERROR,message:"General Error 002"}}catch(e){return{type:t?.responseTypes?.ERROR,message:e.message||e.name||"General Error 003"}}}}(u,"unzer-invoice-id",n,c));return e},[s]),(0,t.jsxs)("div",{children:[p&&(0,t.jsx)("p",{children:p}),(0,t.jsx)("unzer-payment",{id:u,publicKey:m,locale:d,children:(0,t.jsx)("unzer-paylater-invoice",{})})]})};!function(s,o,r){(0,n.registerPaymentMethod)({name:s,label:(0,t.jsx)("div",{children:(0,t.jsx)("span",{className:"wc-block-components-payment-method-label",children:o})}),content:r,edit:r,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(o),supports:{features:["products"]}})}(a,i,(0,t.jsx)(y,{}))})(); \ No newline at end of file diff --git a/assets/build/unzer_simple.asset.php b/assets/build/unzer_simple.asset.php index 854eda9..3141f4f 100644 --- a/assets/build/unzer_simple.asset.php +++ b/assets/build/unzer_simple.asset.php @@ -1,4 +1,4 @@ array( 'react-jsx-runtime', 'wc-blocks-registry', 'wc-settings', 'wp-html-entities' ), - 'version' => 'aa971fc6a6cdf5615f0c', + 'version' => '61276055c948fa0fa3b2', ); diff --git a/assets/build/unzer_simple.js b/assets/build/unzer_simple.js index 557a514..11fba18 100644 --- a/assets/build/unzer_simple.js +++ b/assets/build/unzer_simple.js @@ -1 +1 @@ -(()=>{"use strict";const e=window.wp.htmlEntities,t=window.wc.wcBlocksRegistry,n=window.ReactJSXRuntime,i=window.wc.wcSettings;function c(c){const a=(0,i.getSetting)("unzer_"+c+"_data",{}),s=a.title||c,o=a.id||c,d=a?.description||"",r=()=>(0,n.jsx)("div",{children:d&&(0,n.jsx)("p",{children:d})});!function(i,c,a){(0,t.registerPaymentMethod)({name:i,label:(0,n.jsx)("div",{children:(0,n.jsx)("span",{className:"wc-block-components-payment-method-label",children:c})}),content:a,edit:a,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(c),supports:{features:["products"]}})}(o,s,(0,n.jsx)(r,{}))}const a=["alipay","bancontact","eps","ideal","klarna","postfinance_card","postfinance_efinance","prepayment","przelewy24","twint","wechatpay","wero"];for(const e of a)c(e)})(); \ No newline at end of file +(()=>{"use strict";const e=window.wp.htmlEntities,t=window.wc.wcBlocksRegistry,n=window.ReactJSXRuntime,a=window.wc.wcSettings;function c(c){const i=(0,a.getSetting)("unzer_"+c+"_data",{}),s=i.title||c,o=i.id||c,l=i?.description||"",d=()=>l?(0,n.jsx)("p",{children:l}):null;!function(a,c,i){(0,t.registerPaymentMethod)({name:a,label:(0,n.jsx)("div",{children:(0,n.jsx)("span",{className:"wc-block-components-payment-method-label",children:c})}),content:i,edit:i,canMakePayment:()=>!0,ariaLabel:(0,e.decodeEntities)(c),supports:{features:["products"]}})}(o,s,(0,n.jsx)(d,{}))}const i=["alipay","bancontact","eps","ideal","klarna","postfinance_card","postfinance_efinance","paypal","prepayment","przelewy24","twint","wechatpay","wero"];for(const e of i)c(e)})(); \ No newline at end of file diff --git a/assets/css/admin.css b/assets/css/admin.css index 6e76845..d3fcbf7 100755 --- a/assets/css/admin.css +++ b/assets/css/admin.css @@ -132,3 +132,15 @@ .unzer-payment-navigation{ display:none; } + +.unzer-alert-info-row td{ + padding:0; +} + +.unzer-alert-info{ + padding: 10px 15px; + background: #e7f5fe; + border-left: 4px solid #2196f3; + color: #1a3e5c; + margin: 10px 0; +} diff --git a/assets/css/block-checkout.css b/assets/css/block-checkout.css new file mode 100644 index 0000000..9f9e601 --- /dev/null +++ b/assets/css/block-checkout.css @@ -0,0 +1,3 @@ +.unzer-place-order-button-hidden{ + display:none !important; +} \ No newline at end of file diff --git a/assets/js/admin_webhook_management.js b/assets/js/admin_webhook_management.js index acbb42d..01beb36 100644 --- a/assets/js/admin_webhook_management.js +++ b/assets/js/admin_webhook_management.js @@ -3,6 +3,7 @@ function unzerWebhookRefreshData(slug) { const formData = new FormData(); formData.append( 'slug', slug ); formData.append( 'unzer_nonce', window.unzerWebhookNonce ); + formData.append( 'unzer_payment_method', window.unzerWebhookPaymentMethod ); fetch( window.unzerWebhookAjaxUrl, { @@ -56,6 +57,7 @@ function unzerAddCurrentWebhook(slug) { formData.append( 'action', 'add' ); formData.append( 'slug', slug ); formData.append( 'unzer_nonce', window.unzerWebhookNonce ); + formData.append( 'unzer_payment_method', window.unzerWebhookPaymentMethod ); fetch( window.unzerWebhookAjaxUrl, { @@ -85,6 +87,7 @@ function unzerDeleteWebhook(id, slug) { formData.append( 'id', id ); formData.append( 'slug', slug ); formData.append( 'unzer_nonce', window.unzerWebhookNonce ); + formData.append( 'unzer_payment_method', window.unzerWebhookPaymentMethod ); fetch( window.unzerWebhookAjaxUrl, { @@ -127,8 +130,9 @@ document.addEventListener( document.querySelectorAll( '.unzer-webhook-container' ).forEach( function (element) { if (element.getAttribute( 'data-url' ) && element.getAttribute( 'data-nonce' )) { - window.unzerWebhookAjaxUrl = element.getAttribute( 'data-url' ); - window.unzerWebhookNonce = element.getAttribute( 'data-nonce' ); + window.unzerWebhookAjaxUrl = element.getAttribute( 'data-url' ); + window.unzerWebhookNonce = element.getAttribute( 'data-nonce' ); + window.unzerWebhookPaymentMethod = element.getAttribute( 'data-payment-method' ); unzerWebhookRefreshData( element.getAttribute( 'data-slug' ) ); } } diff --git a/assets/js/checkout.js b/assets/js/checkout.js index eea8d19..83d4d8a 100755 --- a/assets/js/checkout.js +++ b/assets/js/checkout.js @@ -197,6 +197,7 @@ const UnzerManager = { // for some reason this does not get applied without timeout? setTimeout( function () { + console.log(unzerPaymentElement, paymentDataRequestObject); unzerPaymentElement.setGooglePayData(paymentDataRequestObject); }, 100 @@ -250,7 +251,7 @@ const UnzerManager = { ); const unzerCheckout = document.getElementById('unzer-apple-pay-checkout-component'); unzerCheckout.onPaymentSubmit = function (response) { - if (response.submitResponse && response.submitResponse.data && response.submitResponse.data.id && response.submitResponse.data.id.indexOf('apple') === -1) { + if (response.submitResponse && response.submitResponse.data && response.submitResponse.data.id && response.submitResponse.data.id.indexOf('-apl-') === -1) { return } if (response.submitResponse && response.submitResponse.success) { @@ -495,9 +496,6 @@ const UnzerManager = { return false; }, - supportsApplePay() { - return window.ApplePaySession && window.ApplePaySession.canMakePayments() && window.ApplePaySession.supportsVersion(6); - }, _setCustomerDataToPaymentComponent(selector) { const paymentElement = document.querySelector(selector); if (paymentElement) { @@ -588,11 +586,8 @@ jQuery( const applePayContainer = document.querySelector('.payment_method_unzer_apple_pay_v2'); if (applePayContainer) { const applePayButton = document.getElementById('unzer_apple_pay_v2_place_order'); - if (!UnzerManager.supportsApplePay()) { - applePayContainer.style.display = 'none'; - } if (applePayButton && placeOrderButton) { - if (document.getElementById('payment_method_unzer_apple_pay_v2').checked && UnzerManager.supportsApplePay()) { + if (document.getElementById('payment_method_unzer_apple_pay_v2').checked) { applePayButton.style.display = ''; showPlaceOrderButton = false; } else { @@ -624,4 +619,3 @@ jQuery( ); } ); - diff --git a/assets/src/payment_methods/unzer_apple_pay_v2.jsx b/assets/src/payment_methods/unzer_apple_pay_v2.jsx index e64b764..4d3b2b2 100644 --- a/assets/src/payment_methods/unzer_apple_pay_v2.jsx +++ b/assets/src/payment_methods/unzer_apple_pay_v2.jsx @@ -1,6 +1,6 @@ import unzerRegisterMethod from "../util/register-method"; import {getSetting} from '@woocommerce/settings' -import { useEffect, useState } from '@wordpress/element' +import {useEffect} from '@wordpress/element' import onPaymentSetupFactory from "../util/on-payment-setup-factory"; const nameInSnakeCase = 'apple_pay_v2'; @@ -11,7 +11,7 @@ const gatewayDescription = settings?.description || '' const publicKey = settings?.publicKey || ''; const locale = settings?.locale || ''; const paymentComponentId = settings.paymentComponentId || (gatewayName + '-payment-component'); - +const checkoutComponentId = settings.checkoutComponentId || (gatewayName + '-checkout-component'); const PaymentContent = ({eventRegistration, emitResponse}) => { const {onPaymentSetup} = eventRegistration; @@ -23,13 +23,18 @@ const PaymentContent = ({eventRegistration, emitResponse}) => { return (
{gatewayDescription &&

{gatewayDescription}

} - - - +
+
+ + + + +
+
) } diff --git a/assets/src/payment_methods/unzer_google_pay.jsx b/assets/src/payment_methods/unzer_google_pay.jsx index 7857dd4..e2578fd 100644 --- a/assets/src/payment_methods/unzer_google_pay.jsx +++ b/assets/src/payment_methods/unzer_google_pay.jsx @@ -1,6 +1,6 @@ import unzerRegisterMethod from "../util/register-method"; import {getSetting} from '@woocommerce/settings' -import { useEffect, useState } from '@wordpress/element' +import {useEffect} from '@wordpress/element' import onPaymentSetupFactory from "../util/on-payment-setup-factory"; const nameInSnakeCase = 'google_pay'; @@ -11,6 +11,7 @@ const gatewayDescription = settings?.description || '' const publicKey = settings?.publicKey || ''; const locale = settings?.locale || ''; const paymentComponentId = settings.paymentComponentId || (gatewayName + '-payment-component'); +const checkoutComponentId = settings.checkoutComponentId || (gatewayName + '-checkout-component'); const PaymentContent = ({eventRegistration, emitResponse}) => { const {onPaymentSetup} = eventRegistration; @@ -22,13 +23,18 @@ const PaymentContent = ({eventRegistration, emitResponse}) => { return (
{gatewayDescription &&

{gatewayDescription}

} - - - +
+
+ + + + +
+
) } diff --git a/assets/src/unzer_global.jsx b/assets/src/unzer_global.jsx index 08dd815..ecfb1f1 100644 --- a/assets/src/unzer_global.jsx +++ b/assets/src/unzer_global.jsx @@ -1,135 +1,221 @@ import {select, subscribe} from '@wordpress/data'; window.unzerCurrentPaymentMethod = ''; +window.unzerIsInitial = true; window.unzerCurrentAmount = 0; -const updatePaymentMethodData = function (longNameInSnakeCase, cartData) { - console.info('updatePaymentMethodData for ' + longNameInSnakeCase); - const settings = window.wc.wcSettings.getSetting(longNameInSnakeCase + '_data', {}) - console.log(settings, cartData); - setTimeout(async () => { - const paymentComponent = document.getElementById(settings.paymentComponentId); - if (paymentComponent) { - Promise.all([customElements.whenDefined('unzer-payment')]).then( - () => { - try { - const data = new FormData(); - data.append('data', JSON.stringify(cartData)); - data.append('payment_method', longNameInSnakeCase); - data.append('unzer_nonce', settings.nonce); - fetch(settings.getCustomerDataUrl, { - method: 'POST', - body: data - - }).then((response) => response.json()) - .then((responseData)=>{ - const customerData = responseData.customer; - console.log( - 'set customer data', - customerData - ); - if (customerData) { - paymentComponent.setCustomerData( - customerData - ); - } - if(responseData.publicKey !== paymentComponent.publicKey) { - paymentComponent.publicKey = responseData.publicKey; - paymentComponent.initOnFirstUpdate(); - } +function triggerSubmitForPaymentTypeId(paymentComponent, paymentTypeId) { + paymentComponent.woocommercePaymentTypeId = paymentTypeId; + const originalCheckoutButtons = document.querySelectorAll('.wc-block-components-checkout-place-order-button'); + const lastOriginalCheckoutButton = originalCheckoutButtons[originalCheckoutButtons.length - 1]; + lastOriginalCheckoutButton.click(); + paymentComponent.style.display = 'none'; + setTimeout(() => { + unzerCheckForPaymentMethodChanges(true); + }, 3000); - if (paymentComponent.setBasketData) { - paymentComponent.setBasketData( - { - amount: cartData.totals.total_price/100, - currencyType: cartData.totals.currency_code, - country: cartData.billingAddress.country - } - ); - const installmentComponent = document.getElementById('unzer-paylater-installment-component'); - if (installmentComponent && installmentComponent.reloadPlansWithRetainedData) { - installmentComponent.updateDataFromStore(); - console.log(installmentComponent.basketDetails); - installmentComponent.onDataReady(); - } - } +} + +window.unzerInitiatePaymentMethod = ( + longNameInSnakeCase, + settings, + cartData +) => { + const paymentComponent = document.getElementById(settings.paymentComponentId); + const paymentMethodCheckoutButtonContainer = document.getElementById(settings.paymentComponentId + '-container-for-button'); + const originalCheckoutButtons = document.querySelectorAll('.wc-block-components-checkout-place-order-button'); + originalCheckoutButtons.forEach(originalCheckoutButton => { + originalCheckoutButton.classList.remove('unzer-place-order-button-hidden'); + }); + document.querySelectorAll('.unzer-payment-method-checkout-button-container').forEach(container => { + container.remove(); + }); + if (paymentComponent) { + paymentComponent.style.display = ''; + Promise.all([customElements.whenDefined('unzer-payment')]).then( + () => { + try { + + // move buttons to place order section + if (originalCheckoutButtons.length) { + if (paymentMethodCheckoutButtonContainer) { + //is button payment method + originalCheckoutButtons.forEach(originalCheckoutButton => { + originalCheckoutButton.classList.add('unzer-place-order-button-hidden'); + }); + const lastOriginalCheckoutButton = originalCheckoutButtons[originalCheckoutButtons.length - 1]; + paymentMethodCheckoutButtonContainer.classList.add('unzer-payment-method-checkout-button-container'); + lastOriginalCheckoutButton.after(paymentMethodCheckoutButtonContainer); + } + } + + if (longNameInSnakeCase === 'unzer_google_pay' && paymentComponent.setGooglePayData) { + const options = settings.options; + const paymentDataRequestObject = { + gatewayMerchantId: options.gatewayMerchantId, + merchantInfo: options.merchantInfo, + transactionInfo: { + currencyCode: cartData.totals.currency_code, + countryCode: cartData.billingAddress.country, + totalPriceStatus: 'ESTIMATED', + totalPrice: (cartData.totals.total_price / 100).toFixed(2), + }, + buttonOptions: options.buttonOptions, + allowedCardNetworks: options.allowedCardNetworks, + allowCreditCards: options.allowCreditCards, + allowPrepaidCards: options.allowPrepaidCards + }; + // for some reason this does not get applied without timeout? + setTimeout( + function () { + paymentComponent.setGooglePayData(paymentDataRequestObject); + }, + 1000 + ); + + const unzerCheckout = document.getElementById('unzer-google-pay-checkout-component'); + if (unzerCheckout) { + unzerCheckout.onPaymentSubmit = function (response) { + if (response.submitResponse && response.submitResponse.success) { + triggerSubmitForPaymentTypeId(paymentComponent, response.submitResponse.data.id); + } else { + console.error(response); + } + }; + } + } - }); + if (longNameInSnakeCase === 'unzer_apple_pay_v2' && paymentComponent.setApplePayData) { + const applePayPaymentRequest = { + countryCode: settings.storeCountry, + currencyCode: cartData.totals.currency_code, + supportedNetworks: ['visa', 'masterCard'], + merchantCapabilities: ['supports3DS'], + total: { + label: settings.storeName, + amount: cartData.totals.total_price / 100 + } + }; + // for some reason this does not get applied without timeout? + setTimeout( + function () { + paymentComponent.setApplePayData(applePayPaymentRequest); + }, + 1000 + ); - } catch (e) { - console.error(e); + const unzerCheckout = document.getElementById('unzer-apple-pay-v2-checkout-component'); + if (unzerCheckout) { + unzerCheckout.onPaymentSubmit = function (response) { + if (response.submitResponse && response.submitResponse.data && response.submitResponse.data.id && response.submitResponse.data.id.indexOf('-apl-') === -1) { + return + } + if (response.submitResponse && response.submitResponse.success) { + triggerSubmitForPaymentTypeId(paymentComponent, response.submitResponse.data.id); + } else { + console.error(response); + } + }; } } - ); + const data = new FormData(); + data.append('data', JSON.stringify(cartData)); + data.append('payment_method', longNameInSnakeCase); + data.append('unzer_nonce', settings.nonce); + fetch(settings.getCustomerDataUrl, { + method: 'POST', + body: data + + }).then((response) => response.json()) + .then((responseData) => { + const customerData = responseData.customer; + if (customerData) { + paymentComponent.setCustomerData( + customerData + ); + } + + if (responseData.publicKey !== paymentComponent.publicKey) { + paymentComponent.publicKey = responseData.publicKey; + paymentComponent.initOnFirstUpdate(); + } + + if (paymentComponent.setBasketData) { + paymentComponent.setBasketData( + { + amount: cartData.totals.total_price / 100, + currencyType: cartData.totals.currency_code, + country: cartData.billingAddress.country + } + ); + const installmentComponent = document.getElementById('unzer-paylater-installment-component'); + if (installmentComponent && installmentComponent.reloadPlansWithRetainedData) { + installmentComponent.updateDataFromStore(); + installmentComponent.onDataReady(); + } + } + + + }); + + } catch (e) { + console.error(e); + } } - }, 100 - ) + ); + } } -subscribe(() => { +const updatePaymentMethodData = function (longNameInSnakeCase, cartData) { + const settings = window.wc.wcSettings.getSetting(longNameInSnakeCase + '_data', {}) + console.log(settings, cartData); + + if (window.unzerIsInitial) { + const initializeLoopFunction = () => { + if (!document.querySelector('.wc-block-components-checkout-place-order-button') || !document.querySelector('.wp-block-woocommerce-checkout-payment-block .wc-block-components-radio-control-accordion-option')) { + setTimeout(initializeLoopFunction, 100); + } else { + setTimeout(async () => { + window.unzerInitiatePaymentMethod(longNameInSnakeCase, settings, cartData); + }, 1000 + ) + } + } + initializeLoopFunction(); + } else { + setTimeout(async () => { + window.unzerInitiatePaymentMethod(longNameInSnakeCase, settings, cartData); + }, 1000 + ) + } + + +} + +function unzerCheckForPaymentMethodChanges(force = false) { + + const checkoutStore = select(window.wc.wcBlocksData.CHECKOUT_STORE_KEY); const cartStore = select(window.wc.wcBlocksData.CART_STORE_KEY); const paymentStore = select(window.wc.wcBlocksData.PAYMENT_STORE_KEY); + const cartData = cartStore.getCartData(); let hasChanged = false; if (window.unzerCurrentPaymentMethod !== paymentStore.getActivePaymentMethod()) { -hasChanged = true; + hasChanged = true; } - if(!hasChanged && window.unzerCurrentAmount !== cartData.totals.total_price){ + if (!hasChanged && window.unzerCurrentAmount !== cartData.totals.total_price) { hasChanged = true; } - if(hasChanged) { + if (hasChanged || force) { console.log('payment method changed to: ' + paymentStore.getActivePaymentMethod()); window.unzerCurrentPaymentMethod = paymentStore.getActivePaymentMethod(); window.unzerCurrentAmount = cartData.totals.total_price; updatePaymentMethodData(window.unzerCurrentPaymentMethod, cartData); } -}, 'wc/store/cart'); - - -// -// const paymentMethodUpdateCallbacks = function (shortNameInSnakeCase) { -// const settings = window.wc.wcSettings.getSetting('unzer_' + shortNameInSnakeCase + '_data', {}) -// console.log(shortNameInSnakeCase, settings); -// const {checkoutStore} = window.wc.wcBlocksData; -// console.log('checkoutStore', checkoutStore); -// const paymentComponent = document.getElementById(settings.paymentComponentId); -// if (paymentComponent) { -// console.log('PPPCCCCC', paymentComponent); -// } -// -// -// } -// -// //we actually don't need this any more, but keep it in case a use case pops up -// const unzerIsPaymentMethodAllowed = (shortNameInSnakeCase, arg) => { -// console.log(arg); -// paymentMethodUpdateCallbacks(shortNameInSnakeCase); -// // console.log(shortNameInSnakeCase); -// // console.trace(); -// // const settings = window.wc.wcSettings.getSetting('unzer_' + shortNameInSnakeCase + '_data', {}) -// // const currency = arg.cart.cartTotals.currency_code; -// // const country = arg.billingAddress.country; -// // if(settings.allowedCountries){ -// // if(!settings.allowedCountries.includes(country)){ -// // return false; -// // } -// // } -// // if(settings.allowedCurrencies){ -// // if(!settings.allowedCurrencies.includes(currency)){ -// // return false; -// // } -// // } -// return true; -// }; -// -// const callbackCollection = {}; -// for (const simpleMethod of simpleMethods) { -// callbackCollection['unzer_' + simpleMethod] = (arg) => { -// return unzerIsPaymentMethodAllowed(simpleMethod, arg); -// } -// } -// console.log(callbackCollection); -// registerPaymentMethodExtensionCallbacks('unzer-payments', callbackCollection); \ No newline at end of file + +} + +subscribe(unzerCheckForPaymentMethodChanges, 'wc/store/cart'); \ No newline at end of file diff --git a/assets/src/util/on-payment-setup-factory.jsx b/assets/src/util/on-payment-setup-factory.jsx index 970d8cc..7b1bc47 100644 --- a/assets/src/util/on-payment-setup-factory.jsx +++ b/assets/src/util/on-payment-setup-factory.jsx @@ -6,6 +6,25 @@ export default function onPaymentSetupFactory(paymentComponentId, paymentTypeIdF if(!unzerPaymentComponent) { console.error('unzer payment component does not exist: ' + paymentComponentId); } + + if(unzerPaymentComponent.woocommercePaymentTypeId){ + const paymentMethodData = {}; + paymentMethodData['unzer_nonce'] = settings.nonce; + paymentMethodData[paymentTypeIdFieldName] = unzerPaymentComponent.woocommercePaymentTypeId; + const returnValue = { + type: emitResponse?.responseTypes?.SUCCESS, + meta: { + paymentMethodData + } + }; + console.log( + 'return previously generated type id (button payment methods)', + returnValue + ); + + return returnValue; + } + const response = await unzerPaymentComponent.submit(); if (response.submitResponse) { if (response.submitResponse.success === true) { @@ -19,29 +38,24 @@ export default function onPaymentSetupFactory(paymentComponentId, paymentTypeIdF paymentMethodData } }; - console.log( - 'submit response: ', - response.submitResponse, - returnValue - ); return returnValue; } else { return { type: emitResponse?.responseTypes?.ERROR, - message: 'GENERAL ERROR 1' + message: response.submitResponse.message || 'General Error' } } } else { return { type: emitResponse?.responseTypes?.ERROR, - message: 'GENERAL ERROR 2' + message: 'General Error 002' } } - } catch (err) { + } catch (error) { return { type: emitResponse?.responseTypes?.ERROR, - message: 'GENERAL ERROR 3' + message: error.message || error.name || 'General Error 003' } } diff --git a/assets/src/util/register-simple-method.jsx b/assets/src/util/register-simple-method.jsx index a5881c6..6619e28 100644 --- a/assets/src/util/register-simple-method.jsx +++ b/assets/src/util/register-simple-method.jsx @@ -8,11 +8,7 @@ export default function unzerRegisterSimpleMethod(nameInSnakeCase) { const gatewayDescription = settings?.description || '' const PaymentContent = () => { - return ( -
- {gatewayDescription &&

{gatewayDescription}

} -
- ) + return gatewayDescription ?

{gatewayDescription}

: null; } unzerRegisterMethod(gatewayName, gatewayTitle, ); } diff --git a/assets/src/util/simple-methods.jsx b/assets/src/util/simple-methods.jsx index d8683b9..bd8867b 100644 --- a/assets/src/util/simple-methods.jsx +++ b/assets/src/util/simple-methods.jsx @@ -6,6 +6,7 @@ export default [ 'klarna', 'postfinance_card', 'postfinance_efinance', + 'paypal', 'prepayment', 'przelewy24', 'twint', diff --git a/html/admin/webhooks.php b/html/admin/webhooks.php index 142ad7a..8ce4bf4 100755 --- a/html/admin/webhooks.php +++ b/html/admin/webhooks.php @@ -9,7 +9,7 @@ $slug = isset( $slug ) ? $slug : ''; $ajaxUrl = WC()->api_request_url( AdminController::WEBHOOK_MANAGEMENT_ROUTE_SLUG ); ?> -
+

Webhooks

diff --git a/includes/Main.php b/includes/Main.php index a2a6d3d..97fc635 100755 --- a/includes/Main.php +++ b/includes/Main.php @@ -99,7 +99,7 @@ public function registerEvents(): void { add_action( 'woocommerce_update_options_payment_gateways_unzer_apple_pay_v2', array( $this, 'savePaymentMethodSettingsApplePayV2' ) ); add_action( 'woocommerce_update_options_checkout_unzer_general', array( $this, 'saveGeneralSettings' ) ); add_action( 'admin_notices', array( new DashboardService(), 'showNotifications' ) ); - // add_action( 'woocommerce_blocks_loaded', array( $this, 'addCheckoutBlocks' ) ); + add_action( 'woocommerce_blocks_loaded', array( $this, 'addCheckoutBlocks' ) ); add_action( 'before_woocommerce_pay_form', array( $this, 'orderPayPaymentMethod' ), 20, 4 ); add_action( 'admin_enqueue_scripts', diff --git a/includes/controllers/AdminController.php b/includes/controllers/AdminController.php index ca5e850..184c23d 100644 --- a/includes/controllers/AdminController.php +++ b/includes/controllers/AdminController.php @@ -143,9 +143,10 @@ public function doCharge() { public function webhookManagement() { try { - $slug = Util::getNonceCheckedPostValue( 'slug' ); - $action = Util::getNonceCheckedPostValue( 'action' ); - $service = new WebhookManagementService( $slug ); + $slug = Util::getNonceCheckedPostValue( 'slug' ); + $action = Util::getNonceCheckedPostValue( 'action' ); + $paymentMethod = Util::getNonceCheckedPostValue( 'unzer_payment_method' ); + $service = new WebhookManagementService( $slug, $paymentMethod ); if ( empty( $action ) ) { $this->renderJson( array( diff --git a/includes/gateways/AbstractGateway.php b/includes/gateways/AbstractGateway.php index ce460bd..c2e8743 100644 --- a/includes/gateways/AbstractGateway.php +++ b/includes/gateways/AbstractGateway.php @@ -326,20 +326,38 @@ public function admin_options() { echo '
'; } + public function generate_unzer_additional_key_info_html( $key, $data ) { + return ' + + +
+ ' . esc_html__( 'In the section below you may enter additional key pairs. If you leave fields empty, the main key pair will be used by default.' ) . ' +
+ + + '; + } + public function generate_key_check_html( $key, $data ) { $slug = $data['slug']; $title = $data['title'] ?? ''; + + if ( empty( $this->get_option( 'private_key_' . $slug ) ) || empty( $this->get_option( 'public_key_' . $slug ) ) ) { + return ''; + } + wp_enqueue_script( 'unzer_admin_key_management_js', UNZER_PLUGIN_URL . '/assets/js/admin_key_management.js', array(), UNZER_VERSION, array( 'in_footer' => false ) ); wp_enqueue_script( 'unzer_admin_webhook_management_js', UNZER_PLUGIN_URL . '/assets/js/admin_webhook_management.js', array(), UNZER_VERSION, array( 'in_footer' => false ) ); $webhookHtml = ''; - if ( $this->get_option( 'private_key_' . $slug ) && $this->get_option( 'public_key_' . $slug ) ) { - ob_start(); - include UNZER_PLUGIN_PATH . 'html/admin/webhooks.php'; - $webhookHtml = ob_get_contents(); - ob_end_clean(); - } + + ob_start(); + $paymentMethod = static::GATEWAY_ID; + include UNZER_PLUGIN_PATH . 'html/admin/webhooks.php'; + $webhookHtml = ob_get_contents(); + ob_end_clean(); + $ajaxUrl = WC()->api_request_url( AdminController::KEY_VALIDATION_ROUTE_SLUG ); return ' @@ -446,11 +464,11 @@ function ( $tag, $handle, $src ) { 10, 3 ); - wp_enqueue_script( 'unzer_ui_v2_js', 'https://static.test.unzer.com/v2/ui-components/index.js', array(), UNZER_VERSION, array( 'in_footer' => true ) ); // https://static-v2.unzer.com/v2/ui-components/index.js + wp_enqueue_script( 'unzer_ui_v2_js', 'https://static-v2.unzer.com/v2/ui-components/index.js', array(), UNZER_VERSION, array( 'in_footer' => true ) ); // https://static-v2.unzer.com/v2/ui-components/index.js wp_enqueue_style( 'woocommerce_unzer_css', UNZER_PLUGIN_URL . '/assets/css/checkout.css', array(), UNZER_VERSION ); if ( ( $this instanceof GooglePay ) && empty( $this->get_description() ) ) { - wp_add_inline_style( 'woocommerce_unzer_css', '.payment_box.payment_method_unzer_google_pay{display:none !important;}' ); + wp_add_inline_style( 'woocommerce_unzer_css', '.payment_box.payment_method_unzer_google_pay{display:none !important;}' ); } elseif ( ( $this instanceof ApplePayV2 ) && empty( $this->get_description() ) ) { wp_add_inline_style( 'woocommerce_unzer_css', '.payment_box.payment_method_unzer_apple_pay_v2{display:none !important;}' ); } @@ -480,23 +498,7 @@ function ( $tag, $handle, $src ) { 'store_country' => strtoupper( substr( get_option( 'woocommerce_default_country' ), 0, 2 ) ), 'is_order_pay' => self::isOrderPay() ? 'true' : 'false', 'currency' => get_woocommerce_currency(), - 'google_pay_options' => array( - 'gatewayMerchantId' => $googlePayGateway->get_option( 'channel_id' ), - 'merchantInfo' => array( - 'merchantName' => $googlePayGateway->get_option( 'merchant_name' ), - 'merchantId' => $googlePayGateway->get_option( 'merchant_id' ), - ), - 'transactionInfo' => array( - 'countryCode' => $googlePayGateway->get_option( 'country_code' ), - ), - 'buttonOptions' => array( - 'buttonColor' => $googlePayGateway->get_option( 'button_color' ), - 'buttonSizeMode' => $googlePayGateway->get_option( 'button_size_mode' ), - ), - 'allowCreditCards' => $googlePayGateway->get_option( 'credit_cards_allowed' ) === 'yes', - 'allowPrepaidCards' => $googlePayGateway->get_option( 'prepaid_cards_allowed' ) === 'yes', - 'allowedCardNetworks' => (array) $googlePayGateway->get_option( 'card_networks' ), - ), + 'google_pay_options' => $googlePayGateway->getPublicOptions(), ) ); wp_localize_script( diff --git a/includes/gateways/Blocks/AbstractBlock.php b/includes/gateways/Blocks/AbstractBlock.php index dc8981a..b7b96c0 100644 --- a/includes/gateways/Blocks/AbstractBlock.php +++ b/includes/gateways/Blocks/AbstractBlock.php @@ -60,7 +60,10 @@ public function get_payment_method_data() { 'publicKey' => $gateway->get_public_key(), 'locale' => get_locale(), 'nonce' => Util::getNonce(), + 'storeName' => get_bloginfo( 'name' ), + 'storeCountry' => strtoupper( substr( get_option( 'woocommerce_default_country' ), 0, 2 ) ), 'paymentComponentId' => str_replace( '_', '-', static::GATEWAY_ID ) . '-payment-component', + 'checkoutComponentId' => str_replace( '_', '-', static::GATEWAY_ID ) . '-checkout-component', 'getCustomerDataUrl' => WC()->api_request_url( CheckoutController::GET_UNZER_CUSTOMER_SLUG ), ); } @@ -92,6 +95,10 @@ public function get_payment_method_script_handles() { return array( $this->get_identifier() . '-block-checkout' ); } + public function get_payment_method_script_handles_for_admin() { + return array(); + } + public function initialize() { if ( ! $this->should_enqueue_assets() || is_admin() ) { @@ -112,8 +119,9 @@ function ( $tag, $handle, $src ) { 10, 3 ); - wp_enqueue_script( 'unzer_ui_v2_js', 'https://static.test.unzer.com/v2/ui-components/index.js', array(), UNZER_VERSION, array( 'in_footer' => true ) ); // https://static-v2.unzer.com/v2/ui-components/index.js + wp_enqueue_script( 'unzer_ui_v2_js', 'https://static-v2.unzer.com/v2/ui-components/index.js', array(), UNZER_VERSION, array( 'in_footer' => true ) ); // https://static-v2.unzer.com/v2/ui-components/index.js wp_register_script( 'unzer_global-block-checkout', UNZER_PLUGIN_URL . '/assets/build/unzer_global.js', array( 'wc-blocks-registry' ), UNZER_VERSION, array( 'in_footer' => true ) ); + wp_enqueue_style( 'woocommerce_unzer_block_checkout_css', UNZER_PLUGIN_URL . '/assets/css/block-checkout.css', array(), UNZER_VERSION ); wp_enqueue_script( 'unzer_global-block-checkout' ); $this->settings = array( 'title' => $this->get_setting( 'title' ), diff --git a/includes/gateways/Blocks/GooglePayBlock.php b/includes/gateways/Blocks/GooglePayBlock.php index 8f98b56..d81cfb0 100644 --- a/includes/gateways/Blocks/GooglePayBlock.php +++ b/includes/gateways/Blocks/GooglePayBlock.php @@ -11,7 +11,15 @@ class GooglePayBlock extends AbstractBlock { + public const GATEWAY_ID = GooglePay::GATEWAY_ID; public const GATEWAY_CLASS = GooglePay::class; protected $name = self::GATEWAY_ID; + + public function get_payment_method_data() { + $gatewayClass = self::GATEWAY_CLASS; + return parent::get_payment_method_data() + array( + 'options' => ( new $gatewayClass() )->getPublicOptions(), + ); + } } diff --git a/includes/gateways/Blocks/PaypalBlock.php b/includes/gateways/Blocks/PaypalBlock.php index 3db3c3e..f496c10 100644 --- a/includes/gateways/Blocks/PaypalBlock.php +++ b/includes/gateways/Blocks/PaypalBlock.php @@ -9,8 +9,6 @@ } class PaypalBlock extends AbstractBlock { - - public const GATEWAY_ID = Paypal::GATEWAY_ID; public const GATEWAY_CLASS = Paypal::class; protected $name = self::GATEWAY_ID; diff --git a/includes/gateways/DirectDebitSecured.php b/includes/gateways/DirectDebitSecured.php index 2dbbd84..f2bbc86 100644 --- a/includes/gateways/DirectDebitSecured.php +++ b/includes/gateways/DirectDebitSecured.php @@ -96,6 +96,9 @@ public function get_form_fields() { 'description' => __( 'This controls the description which the user sees during checkout.', 'unzer-payments' ), 'default' => '', ), + 'additional_key_info' => array( + 'type' => 'unzer_additional_key_info', + ), 'public_key_eur_b2c' => array( 'title' => __( 'Public Key EUR/B2C', 'unzer-payments' ), 'type' => 'text', diff --git a/includes/gateways/GooglePay.php b/includes/gateways/GooglePay.php index aad8762..a9ab1b6 100644 --- a/includes/gateways/GooglePay.php +++ b/includes/gateways/GooglePay.php @@ -37,6 +37,26 @@ public function admin_options() { parent::admin_options(); } + public function getPublicOptions() { + return array( + 'gatewayMerchantId' => $this->get_option( 'channel_id' ), + 'merchantInfo' => array( + 'merchantName' => $this->get_option( 'merchant_name' ), + 'merchantId' => $this->get_option( 'merchant_id' ), + ), + 'transactionInfo' => array( + 'countryCode' => $this->get_option( 'country_code' ), + ), + 'buttonOptions' => array( + 'buttonColor' => $this->get_option( 'button_color' ), + 'buttonSizeMode' => $this->get_option( 'button_size_mode' ), + ), + 'allowCreditCards' => $this->get_option( 'credit_cards_allowed' ) === 'yes', + 'allowPrepaidCards' => $this->get_option( 'prepaid_cards_allowed' ) === 'yes', + 'allowedCardNetworks' => (array) $this->get_option( 'card_networks' ), + ); + } + public function fetchAndSaveChannelId() { if ( ! $this->get_private_key() ) { $this->update_option( 'channel_id', '' ); diff --git a/includes/gateways/Installment.php b/includes/gateways/Installment.php index b33d8af..43e1f3d 100644 --- a/includes/gateways/Installment.php +++ b/includes/gateways/Installment.php @@ -104,6 +104,9 @@ public function get_form_fields() { 'description' => __( 'This controls the description which the user sees during checkout.', 'unzer-payments' ), 'default' => '', ), + 'additional_key_info' => array( + 'type' => 'unzer_additional_key_info', + ), 'public_key_eur_b2c' => array( 'title' => __( 'Public Key EUR/B2C', 'unzer-payments' ), 'type' => 'text', diff --git a/includes/gateways/Invoice.php b/includes/gateways/Invoice.php index 5c19294..9e9c1df 100644 --- a/includes/gateways/Invoice.php +++ b/includes/gateways/Invoice.php @@ -65,6 +65,9 @@ public function get_form_fields() { 'description' => __( 'This controls the description which the user sees during checkout.', 'unzer-payments' ), 'default' => '', ), + 'additional_key_info' => array( + 'type' => 'unzer_additional_key_info', + ), 'public_key_eur_b2c' => array( 'title' => __( 'Public Key EUR/B2C', 'unzer-payments' ), 'type' => 'text', diff --git a/includes/gateways/Paypal.php b/includes/gateways/Paypal.php index c3d92a3..d94ad3c 100644 --- a/includes/gateways/Paypal.php +++ b/includes/gateways/Paypal.php @@ -81,7 +81,7 @@ public function get_form_fields() { 'default' => 'charge', ), AbstractGateway::SETTINGS_KEY_SAVE_INSTRUMENTS => array( - 'title' => __( 'Save PayPAl account for registered customers', 'unzer-payments' ), + 'title' => __( 'Save PayPal account for registered customers', 'unzer-payments' ), 'label' => __( ' ', 'unzer-payments' ), 'type' => 'select', 'description' => '', diff --git a/includes/gateways/Wero.php b/includes/gateways/Wero.php index 0ca317f..311aca3 100644 --- a/includes/gateways/Wero.php +++ b/includes/gateways/Wero.php @@ -33,25 +33,26 @@ public function get_form_fields() { 'wc_unzer_settings', array( - 'enabled' => array( + 'enabled' => array( 'title' => __( 'Enable/Disable', 'unzer-payments' ), 'label' => __( 'Enable Unzer Wero', 'unzer-payments' ), 'type' => 'checkbox', 'description' => '', 'default' => 'no', ), - 'title' => array( + 'title' => array( 'title' => __( 'Title', 'unzer-payments' ), 'type' => 'text', 'description' => __( 'This controls the title which the user sees during checkout.', 'unzer-payments' ), 'default' => __( 'Wero', 'unzer-payments' ), ), - 'description' => array( + 'description' => array( 'title' => __( 'Description', 'unzer-payments' ), 'type' => 'text', 'description' => __( 'This controls the description which the user sees during checkout.', 'unzer-payments' ), 'default' => '', ), + /* 'transaction_type' => array( 'title' => __( 'Charge or Authorize', 'unzer-payments' ), 'label' => '', @@ -63,6 +64,7 @@ public function get_form_fields() { ), 'default' => 'charge', ), + */ ) ); } @@ -71,11 +73,11 @@ public function process_payment( $order_id ) { $return = array( 'result' => 'success', ); - if ( $this->get_option( 'transaction_type' ) === AbstractGateway::TRANSACTION_TYPE_AUTHORIZE ) { - $transaction = ( new PaymentService() )->performAuthorizationForOrder( $order_id, $this, $this->paymentTypeResource ); - } else { - $transaction = ( new PaymentService() )->performChargeForOrder( $order_id, $this, $this->paymentTypeResource ); - } + // if ( $this->get_option( 'transaction_type' ) === AbstractGateway::TRANSACTION_TYPE_AUTHORIZE ) { + // $transaction = ( new PaymentService() )->performAuthorizationForOrder( $order_id, $this, $this->paymentTypeResource ); + // } else { + $transaction = ( new PaymentService() )->performChargeForOrder( $order_id, $this, $this->paymentTypeResource ); + // } $this->before_payment_redirect( $order_id ); diff --git a/includes/services/WebhookManagementService.php b/includes/services/WebhookManagementService.php index 0b51d08..d44f0de 100644 --- a/includes/services/WebhookManagementService.php +++ b/includes/services/WebhookManagementService.php @@ -4,6 +4,7 @@ use UnzerPayments\Controllers\WebhookController; use UnzerPayments\Gateways\Invoice; +use UnzerPayments\Main; use UnzerSDK\Constants\WebhookEvents; use UnzerSDK\Exceptions\UnzerApiException; use UnzerSDK\Resources\Webhook; @@ -16,11 +17,15 @@ class WebhookManagementService { */ private $unzerManager; - public function __construct( $slug = null ) { + public function __construct( $slug = null, $paymentMethod = null ) { $paymentService = new PaymentService(); if ( ! empty( $slug ) ) { - $invoiceGateway = new Invoice(); - $privateKey = $invoiceGateway->get_option( 'private_key_' . $slug ); + + $gateway = Main::getInstance()->getPaymentGateway( (string) $paymentMethod ); + if ( empty( $gateway ) ) { + throw new \Exception( 'No gateway found: ' . $paymentMethod ); + } + $privateKey = $gateway->get_option( 'private_key_' . $slug ); if ( empty( $privateKey ) ) { throw new \Exception( 'Private key not found' ); } diff --git a/languages/unzer-payments-de_AT.mo b/languages/unzer-payments-de_AT.mo index 2e55757..911c429 100644 Binary files a/languages/unzer-payments-de_AT.mo and b/languages/unzer-payments-de_AT.mo differ diff --git a/languages/unzer-payments-de_AT.po b/languages/unzer-payments-de_AT.po index 30c0ff5..5f0279c 100644 --- a/languages/unzer-payments-de_AT.po +++ b/languages/unzer-payments-de_AT.po @@ -697,7 +697,7 @@ msgid "PayPal" msgstr "PayPal" #: includes/gateways/Paypal.php:84 -msgid "Save PayPAl account for registered customers" +msgid "Save PayPal account for registered customers" msgstr "PayPal-Konto für registrierte Kunden speichern" #: includes/gateways/Pis.php:35 diff --git a/languages/unzer-payments-de_DE.l10n.php b/languages/unzer-payments-de_DE.l10n.php index 309fa02..336451c 100644 --- a/languages/unzer-payments-de_DE.l10n.php +++ b/languages/unzer-payments-de_DE.l10n.php @@ -150,7 +150,7 @@ 'Direct Bank Transfer' => 'Direktüberweisung', 'Enable Unzer PayPal' => 'Aktivieren Sie Unzer PayPal', 'PayPal' => 'PayPal', - 'Save PayPAl account for registered customers' => 'PayPal-Konto für registrierte Kunden speichern', + 'Save PayPal account for registered customers' => 'PayPal-Konto für registrierte Kunden speichern', 'Enable Unzer Bank Transfer' => 'Unzer Banküberweisung aktivieren', 'Bank Transfer' => 'Banküberweisung', 'Enable Unzer Post Finance Card' => 'Unzer Post Finance Card aktivieren', diff --git a/languages/unzer-payments-de_DE.mo b/languages/unzer-payments-de_DE.mo index 1792da4..ed3cd14 100755 Binary files a/languages/unzer-payments-de_DE.mo and b/languages/unzer-payments-de_DE.mo differ diff --git a/languages/unzer-payments-de_DE.po b/languages/unzer-payments-de_DE.po index 9c161d7..0deeed4 100755 --- a/languages/unzer-payments-de_DE.po +++ b/languages/unzer-payments-de_DE.po @@ -1,15 +1,15 @@ msgid "" msgstr "" "Project-Id-Version: Unzer Payments\n" -"POT-Creation-Date: 2025-09-30 22:36+0200\n" -"PO-Revision-Date: 2025-09-30 22:37+0200\n" +"POT-Creation-Date: 2026-02-25 17:34+0100\n" +"PO-Revision-Date: 2026-02-25 17:35+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.7\n" +"X-Generator: Poedit 3.8\n" "X-Poedit-Basepath: ..\n" "X-Poedit-Flags-xgettext: --add-comments=translators:\n" "X-Poedit-WPHeader: unzer-payments.php\n" @@ -19,167 +19,102 @@ msgstr "" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPathExcluded-0: *.min.js\n" "X-Poedit-SearchPathExcluded-1: vendor\n" +"X-Poedit-SearchPathExcluded-2: node_modules\n" #: html/admin/global-settings-start.php:10 msgid "General settings" msgstr "Allgemeine Einstellungen" #: html/admin/global-settings-start.php:29 -#: includes/gateways/AbstractGateway.php:317 +#: includes/Gateways/AbstractGateway.php:368 msgid "Keys are not valid" msgstr "Schlüssel sind nicht gültig" #: html/admin/global-settings-start.php:31 -#: includes/gateways/AbstractGateway.php:318 +#: includes/Gateways/AbstractGateway.php:369 msgid "Keys are valid" msgstr "Schlüssel sind gültig" -#: html/admin/transactions.php:34 -msgid "Payment Instructions" -msgstr "Zahlungsanweisungen" - -#: html/admin/transactions.php:39 -msgid "Totals" -msgstr "Gesamt" - -#: html/admin/transactions.php:46 -msgid "Detailed Transactions" -msgstr "Detaillierte Transaktionen" - -#: html/admin/transactions.php:50 +#: html/admin/transactions.php:48 msgid "Time" msgstr "Zeit" -#: html/admin/transactions.php:51 +#: html/admin/transactions.php:49 msgid "Type" msgstr "Typ" -#: html/admin/transactions.php:53 +#: html/admin/transactions.php:51 msgid "Amount" msgstr "Menge" -#: html/admin/transactions.php:54 +#: html/admin/transactions.php:52 msgid "Status" msgstr "Status" -#: html/admin/transactions.php:63 -msgid "Show Debug Information" -msgstr "Debug-Informationen anzeigen" - -#: html/admin/transactions.php:109 -msgid "Capture Amount" -msgstr "Betrag einziehen" +#: html/admin/transactions.php:59 +msgid "Debug" +msgstr "" -#: html/admin/transactions.php:114 -msgid "Total amount" -msgstr "Gesamtbetrag" +#: html/admin/transactions.php:103 +#, fuzzy +#| msgid "Totals" +msgid "Total" +msgstr "Gesamt" -#: html/admin/transactions.php:115 -msgid "Charged amount" -msgstr "Eingezogener Betrag" +#: html/admin/transactions.php:104 +#, fuzzy +#| msgid "charge" +msgid "Charged" +msgstr "Belastung" -#: html/admin/transactions.php:116 -msgid "Cancelled amount" +#: html/admin/transactions.php:105 +#, fuzzy +#| msgid "Cancelled amount" +msgid "Cancelled" msgstr "Erstatteter Betrag" -#: html/admin/transactions.php:117 -msgid "Remaining amount" +#: html/admin/transactions.php:106 +#, fuzzy +#| msgid "Remaining amount" +msgid "Remaining" msgstr "Verbleibender Betrag" -#: includes/Main.php:149 includes/Main.php:182 -msgid "Chargeback" -msgstr "Chargeback" - -#: includes/Main.php:159 includes/Main.php:183 -msgid "Ready to Capture" -msgstr "Bereit zum Zahlungseinzug" - -#: includes/Main.php:169 includes/Main.php:184 -msgid "Waiting for payment" -msgstr "Warten auf Zahlung" - -#: includes/Main.php:253 -msgid "Unzer Transactions" -msgstr "Unzer-Transaktionen" - -#: includes/Main.php:257 -msgid "Unzer API settings" -msgstr "Unzer API-Einstellungen" - -#: includes/Main.php:276 -msgid "Public Key" -msgstr "Öffentlicher Schlüssel" - -#: includes/Main.php:284 -msgid "Private Key" -msgstr "Privater Schlüssel" - -#: includes/Main.php:292 -msgid "Order status for authorized payments" -msgstr "Auftragsstatus für Aufträge mit autorisierter Zahlung" - -#: includes/Main.php:295 -msgid "This status is assigned for orders, that are authorized" -msgstr "Dieser Status wird für autorisierte Aufträge vergeben" - -#: includes/Main.php:296 includes/Main.php:306 -#: includes/gateways/Prepayment.php:58 -msgid "[Use WooC default status]" -msgstr "[WooC-Standardstatus verwenden]" - -#: includes/Main.php:302 -msgid "Order status for captured payments" -msgstr "Auftragsstatus für Aufträge mit eingezogener Zahlung" - -#: includes/Main.php:305 -msgid "This status is assigned for orders, that are captured" -msgstr "" -"Dieser Status wird für Aufträge vergeben, deren Zahlung eingezogen wurde" - -#: includes/Main.php:312 -msgid "Order status for chargebacks" -msgstr "Auftragsstatus für Aufträge mit Chargeback" - -#: includes/Main.php:315 -msgid "This status is assigned for orders with chargebacks" -msgstr "" -"Dieser Status wird für Aufträge vergeben, bei denen ein Chargeback " -"stattgefunden hat" - -#: includes/Main.php:316 -msgid "[No status change]" -msgstr "[Status nicht ändern]" +#: html/admin/transactions.php:113 +#, fuzzy +#| msgid "Capture Amount" +msgid "Capture" +msgstr "Betrag einziehen" -#: includes/controllers/AccountController.php:58 +#: includes/Controllers/AccountController.php:52 msgid "Delete" msgstr "Löschen" -#: includes/controllers/AccountController.php:64 +#: includes/Controllers/AccountController.php:59 msgid "Your saved payment means" msgstr "Ihre gespeicherten Zahlungsarten" -#: includes/controllers/CheckoutController.php:35 -#: includes/controllers/CheckoutController.php:45 -#: includes/controllers/CheckoutController.php:83 +#: includes/Controllers/CheckoutController.php:48 +#: includes/Controllers/CheckoutController.php:59 +#: includes/Controllers/CheckoutController.php:100 msgid "Payment error" msgstr "Zahlungsfehler" -#: includes/controllers/CheckoutController.php:60 +#: includes/Controllers/CheckoutController.php:75 msgid "Payment cancelled" msgstr "Zahlung storniert" -#: includes/controllers/WebhookController.php:134 +#: includes/Controllers/WebhookController.php:134 msgid "Chargeback received" msgstr "Chargeback" -#: includes/gateways/AbstractGateway.php:104 +#: includes/Gateways/AbstractGateway.php:105 #, php-format msgid "The Unzer API settings can be adjusted here" msgstr "" "Die Einstellungen der Unzer API können hier angepasst " "werden" -#: includes/gateways/AbstractGateway.php:106 +#: includes/Gateways/AbstractGateway.php:107 #, php-format msgid "" "To start using Unzer payment methods, please enter your credentials first. " @@ -189,7 +124,7 @@ msgstr "" "Anmeldedaten ein
API-" "Einstellungen" -#: includes/gateways/AbstractGateway.php:275 +#: includes/Gateways/AbstractGateway.php:309 msgid "" "Turning off this feature will delete all stored payment instruments of your " "customers. Change this setting back to \"yes\" if you want to keep your " @@ -199,15 +134,23 @@ msgstr "" "Zahlungsmittel Ihrer Kunden gelöscht. Ändern Sie diese Einstellung wieder " "auf \"ja\", wenn Sie die Zahlungsmittel Ihrer Kunden behalten möchten." -#: includes/gateways/AbstractGateway.php:282 +#: includes/Gateways/AbstractGateway.php:316 msgid "Select another Unzer payment method" msgstr "Wählen Sie eine andere Unzer-Zahlungsmethode" -#: includes/gateways/AbstractGateway.php:283 +#: includes/Gateways/AbstractGateway.php:317 msgid "Return to payments" msgstr "Zurück zu den Zahlungen" -#: includes/gateways/AbstractGateway.php:436 +#: includes/Gateways/AbstractGateway.php:334 +msgid "" +"In the section below you may enter additional key pairs. If you leave fields " +"empty, the main key pair will be used by default." +msgstr "" +"Im folgenden Abschnitt können Sie zusätzliche Schlüsselpaare eingeben. Wenn " +"Sie Felder leer lassen, wird standardmäßig das Hauptschlüsselpaar verwendet." + +#: includes/Gateways/AbstractGateway.php:494 msgid "" "An error occurred while processing your payment. Please try another payment " "method." @@ -215,122 +158,109 @@ msgstr "" "Bei der Bearbeitung Ihrer Zahlung ist ein Fehler aufgetreten. Bitte " "versuchen Sie eine andere Zahlungsmethode." -#: includes/gateways/AbstractGateway.php:465 -msgid "Please enter your date of birth" -msgstr "Bitte geben Sie Ihr Geburtsdatum ein" - -#: includes/gateways/AbstractGateway.php:466 includes/gateways/Invoice.php:215 -msgid "Please enter your company type" -msgstr "Bitte geben Sie Ihren Unternehmenstyp ein" - -#: includes/gateways/AbstractGateway.php:467 +#: includes/Gateways/AbstractGateway.php:507 msgid "Please accept the SEPA mandate" msgstr "Bitte akzeptieren Sie das SEPA Mandat" -#: includes/gateways/Alipay.php:34 includes/gateways/ApplePayV2.php:60 -#: includes/gateways/Bancontact.php:34 includes/gateways/Card.php:70 -#: includes/gateways/DirectDebit.php:85 -#: includes/gateways/DirectDebitSecured.php:78 includes/gateways/Eps.php:35 -#: includes/gateways/Giropay.php:35 includes/gateways/GooglePay.php:94 -#: includes/gateways/Ideal.php:34 includes/gateways/Installment.php:83 -#: includes/gateways/Invoice.php:47 includes/gateways/Klarna.php:140 -#: includes/gateways/OpenBanking.php:65 includes/gateways/Paypal.php:51 -#: includes/gateways/Pis.php:32 includes/gateways/PostFinanceCard.php:32 -#: includes/gateways/PostFinanceEfinance.php:32 -#: includes/gateways/Prepayment.php:35 includes/gateways/Przelewy24.php:34 -#: includes/gateways/Sofort.php:32 includes/gateways/Twint.php:32 -#: includes/gateways/WeChatPay.php:34 includes/gateways/Wero.php:32 +#: includes/Gateways/Alipay.php:37 includes/Gateways/ApplePayV2.php:69 +#: includes/Gateways/Bancontact.php:36 includes/Gateways/Card.php:73 +#: includes/Gateways/DirectDebit.php:88 +#: includes/Gateways/DirectDebitSecured.php:81 includes/Gateways/Eps.php:37 +#: includes/Gateways/GooglePay.php:117 includes/Gateways/Ideal.php:36 +#: includes/Gateways/Installment.php:89 includes/Gateways/Invoice.php:50 +#: includes/Gateways/Klarna.php:143 includes/Gateways/OpenBanking.php:63 +#: includes/Gateways/Paypal.php:54 includes/Gateways/PostFinanceCard.php:35 +#: includes/Gateways/PostFinanceEfinance.php:35 +#: includes/Gateways/Prepayment.php:39 includes/Gateways/Przelewy24.php:36 +#: includes/Gateways/Twint.php:35 includes/Gateways/WeChatPay.php:36 +#: includes/Gateways/Wero.php:37 msgid "Enable/Disable" msgstr "Aktivieren/Deaktivieren" -#: includes/gateways/Alipay.php:35 +#: includes/Gateways/Alipay.php:38 msgid "Enable Unzer Alipay" msgstr "Unzer Alipay aktivieren" -#: includes/gateways/Alipay.php:41 includes/gateways/ApplePayV2.php:67 -#: includes/gateways/Bancontact.php:41 includes/gateways/Card.php:77 -#: includes/gateways/DirectDebit.php:92 -#: includes/gateways/DirectDebitSecured.php:85 includes/gateways/Eps.php:42 -#: includes/gateways/Giropay.php:42 includes/gateways/GooglePay.php:101 -#: includes/gateways/Ideal.php:41 includes/gateways/Installment.php:90 -#: includes/gateways/Invoice.php:54 includes/gateways/Klarna.php:147 -#: includes/gateways/OpenBanking.php:72 includes/gateways/Paypal.php:58 -#: includes/gateways/Pis.php:39 includes/gateways/PostFinanceCard.php:39 -#: includes/gateways/PostFinanceEfinance.php:39 -#: includes/gateways/Prepayment.php:42 includes/gateways/Przelewy24.php:41 -#: includes/gateways/Sofort.php:39 includes/gateways/Twint.php:39 -#: includes/gateways/WeChatPay.php:41 includes/gateways/Wero.php:39 +#: includes/Gateways/Alipay.php:44 includes/Gateways/ApplePayV2.php:76 +#: includes/Gateways/Bancontact.php:43 includes/Gateways/Card.php:80 +#: includes/Gateways/DirectDebit.php:95 +#: includes/Gateways/DirectDebitSecured.php:88 includes/Gateways/Eps.php:44 +#: includes/Gateways/GooglePay.php:124 includes/Gateways/Ideal.php:43 +#: includes/Gateways/Installment.php:96 includes/Gateways/Invoice.php:57 +#: includes/Gateways/Klarna.php:150 includes/Gateways/OpenBanking.php:70 +#: includes/Gateways/Paypal.php:61 includes/Gateways/PostFinanceCard.php:42 +#: includes/Gateways/PostFinanceEfinance.php:42 +#: includes/Gateways/Prepayment.php:46 includes/Gateways/Przelewy24.php:43 +#: includes/Gateways/Twint.php:42 includes/Gateways/WeChatPay.php:43 +#: includes/Gateways/Wero.php:44 msgid "Title" msgstr "Titel" -#: includes/gateways/Alipay.php:43 includes/gateways/ApplePayV2.php:69 -#: includes/gateways/Bancontact.php:43 includes/gateways/Card.php:79 -#: includes/gateways/DirectDebit.php:94 -#: includes/gateways/DirectDebitSecured.php:87 includes/gateways/Eps.php:44 -#: includes/gateways/Giropay.php:44 includes/gateways/GooglePay.php:103 -#: includes/gateways/Ideal.php:43 includes/gateways/Installment.php:92 -#: includes/gateways/Invoice.php:56 includes/gateways/Klarna.php:149 -#: includes/gateways/OpenBanking.php:74 includes/gateways/Paypal.php:60 -#: includes/gateways/Pis.php:41 includes/gateways/PostFinanceCard.php:41 -#: includes/gateways/PostFinanceEfinance.php:41 -#: includes/gateways/Prepayment.php:44 includes/gateways/Przelewy24.php:43 -#: includes/gateways/Sofort.php:41 includes/gateways/Twint.php:41 -#: includes/gateways/WeChatPay.php:43 includes/gateways/Wero.php:41 +#: includes/Gateways/Alipay.php:46 includes/Gateways/ApplePayV2.php:78 +#: includes/Gateways/Bancontact.php:45 includes/Gateways/Card.php:82 +#: includes/Gateways/DirectDebit.php:97 +#: includes/Gateways/DirectDebitSecured.php:90 includes/Gateways/Eps.php:46 +#: includes/Gateways/GooglePay.php:126 includes/Gateways/Ideal.php:45 +#: includes/Gateways/Installment.php:98 includes/Gateways/Invoice.php:59 +#: includes/Gateways/Klarna.php:152 includes/Gateways/OpenBanking.php:72 +#: includes/Gateways/Paypal.php:63 includes/Gateways/PostFinanceCard.php:44 +#: includes/Gateways/PostFinanceEfinance.php:44 +#: includes/Gateways/Prepayment.php:48 includes/Gateways/Przelewy24.php:45 +#: includes/Gateways/Twint.php:44 includes/Gateways/WeChatPay.php:45 +#: includes/Gateways/Wero.php:46 msgid "This controls the title which the user sees during checkout." msgstr "Dies steuert den Titel, den der Kunde während des Zahlvorgangs sieht." -#: includes/gateways/Alipay.php:44 +#: includes/Gateways/Alipay.php:47 msgid "Alipay" msgstr "Alipay" -#: includes/gateways/Alipay.php:47 includes/gateways/ApplePayV2.php:73 -#: includes/gateways/Bancontact.php:47 includes/gateways/Card.php:83 -#: includes/gateways/DirectDebit.php:98 -#: includes/gateways/DirectDebitSecured.php:91 includes/gateways/Eps.php:48 -#: includes/gateways/Giropay.php:48 includes/gateways/GooglePay.php:107 -#: includes/gateways/Ideal.php:47 includes/gateways/Installment.php:96 -#: includes/gateways/Invoice.php:60 includes/gateways/Klarna.php:153 -#: includes/gateways/OpenBanking.php:78 includes/gateways/Paypal.php:64 -#: includes/gateways/Pis.php:45 includes/gateways/PostFinanceCard.php:45 -#: includes/gateways/PostFinanceEfinance.php:45 -#: includes/gateways/Prepayment.php:48 includes/gateways/Przelewy24.php:47 -#: includes/gateways/Sofort.php:45 includes/gateways/Twint.php:45 -#: includes/gateways/WeChatPay.php:47 includes/gateways/Wero.php:45 +#: includes/Gateways/Alipay.php:50 includes/Gateways/ApplePayV2.php:82 +#: includes/Gateways/Bancontact.php:49 includes/Gateways/Card.php:86 +#: includes/Gateways/DirectDebit.php:101 +#: includes/Gateways/DirectDebitSecured.php:94 includes/Gateways/Eps.php:50 +#: includes/Gateways/GooglePay.php:130 includes/Gateways/Ideal.php:49 +#: includes/Gateways/Installment.php:102 includes/Gateways/Invoice.php:63 +#: includes/Gateways/Klarna.php:156 includes/Gateways/OpenBanking.php:76 +#: includes/Gateways/Paypal.php:67 includes/Gateways/PostFinanceCard.php:48 +#: includes/Gateways/PostFinanceEfinance.php:48 +#: includes/Gateways/Prepayment.php:52 includes/Gateways/Przelewy24.php:49 +#: includes/Gateways/Twint.php:48 includes/Gateways/WeChatPay.php:49 +#: includes/Gateways/Wero.php:50 msgid "Description" msgstr "Beschreibung" -#: includes/gateways/Alipay.php:49 includes/gateways/ApplePayV2.php:75 -#: includes/gateways/Bancontact.php:49 includes/gateways/Card.php:85 -#: includes/gateways/DirectDebit.php:100 -#: includes/gateways/DirectDebitSecured.php:93 includes/gateways/Eps.php:50 -#: includes/gateways/Giropay.php:50 includes/gateways/GooglePay.php:109 -#: includes/gateways/Ideal.php:49 includes/gateways/Installment.php:98 -#: includes/gateways/Invoice.php:62 includes/gateways/Klarna.php:155 -#: includes/gateways/OpenBanking.php:80 includes/gateways/Paypal.php:66 -#: includes/gateways/Pis.php:47 includes/gateways/PostFinanceCard.php:47 -#: includes/gateways/PostFinanceEfinance.php:47 -#: includes/gateways/Prepayment.php:50 includes/gateways/Przelewy24.php:49 -#: includes/gateways/Sofort.php:47 includes/gateways/Twint.php:47 -#: includes/gateways/WeChatPay.php:49 includes/gateways/Wero.php:47 +#: includes/Gateways/Alipay.php:52 includes/Gateways/ApplePayV2.php:84 +#: includes/Gateways/Bancontact.php:51 includes/Gateways/Card.php:88 +#: includes/Gateways/DirectDebit.php:103 +#: includes/Gateways/DirectDebitSecured.php:96 includes/Gateways/Eps.php:52 +#: includes/Gateways/GooglePay.php:132 includes/Gateways/Ideal.php:51 +#: includes/Gateways/Installment.php:104 includes/Gateways/Invoice.php:65 +#: includes/Gateways/Klarna.php:158 includes/Gateways/OpenBanking.php:78 +#: includes/Gateways/Paypal.php:69 includes/Gateways/PostFinanceCard.php:50 +#: includes/Gateways/PostFinanceEfinance.php:50 +#: includes/Gateways/Prepayment.php:54 includes/Gateways/Przelewy24.php:51 +#: includes/Gateways/Twint.php:50 includes/Gateways/WeChatPay.php:51 +#: includes/Gateways/Wero.php:52 msgid "This controls the description which the user sees during checkout." msgstr "" "Beschreibungstext, den Benutzer bei der Auswahl dieser Zahlungsart sehen." -#: includes/gateways/ApplePayV2.php:61 +#: includes/Gateways/ApplePayV2.php:70 msgid "Enable Unzer Apple Pay" msgstr "Aktivieren Sie Unzer Apple Pay" -#: includes/gateways/ApplePayV2.php:70 +#: includes/Gateways/ApplePayV2.php:79 msgid "Apple Pay" msgstr "Apple Pay" -#: includes/gateways/ApplePayV2.php:79 includes/gateways/Card.php:89 -#: includes/gateways/GooglePay.php:113 includes/gateways/Paypal.php:70 +#: includes/Gateways/ApplePayV2.php:88 includes/Gateways/Card.php:92 +#: includes/Gateways/GooglePay.php:136 includes/Gateways/Paypal.php:73 msgid "Charge or Authorize" msgstr "Belasten oder autorisieren" -#: includes/gateways/ApplePayV2.php:82 includes/gateways/Card.php:92 -#: includes/gateways/GooglePay.php:116 includes/gateways/Paypal.php:73 +#: includes/Gateways/ApplePayV2.php:91 includes/Gateways/Card.php:95 +#: includes/Gateways/GooglePay.php:139 includes/Gateways/Paypal.php:76 msgid "" "Choose \"authorize\", if you you want to charge the shopper at a later point " "of time" @@ -338,56 +268,56 @@ msgstr "" "Wählen Sie \"autorisieren\", wenn Sie den Käufer zu einem späteren Zeitpunkt " "belasten möchten" -#: includes/gateways/ApplePayV2.php:84 includes/gateways/Card.php:94 -#: includes/gateways/GooglePay.php:118 includes/gateways/Paypal.php:75 +#: includes/Gateways/ApplePayV2.php:93 includes/Gateways/Card.php:97 +#: includes/Gateways/GooglePay.php:141 includes/Gateways/Paypal.php:78 msgid "authorize" msgstr "Autorisieren" -#: includes/gateways/ApplePayV2.php:85 includes/gateways/Card.php:95 -#: includes/gateways/GooglePay.php:119 includes/gateways/Paypal.php:76 +#: includes/Gateways/ApplePayV2.php:94 includes/Gateways/Card.php:98 +#: includes/Gateways/GooglePay.php:142 includes/Gateways/Paypal.php:79 msgid "charge" msgstr "Belastung" -#: includes/gateways/Bancontact.php:35 +#: includes/Gateways/Bancontact.php:37 msgid "Enable Unzer Bancontact" msgstr "Unzer Bancontact aktivieren" -#: includes/gateways/Bancontact.php:44 +#: includes/Gateways/Bancontact.php:46 msgid "Bancontact" msgstr "Bancontact" -#: includes/gateways/Card.php:71 +#: includes/Gateways/Card.php:74 msgid "Enable Unzer Card Payments" msgstr "Unzer-Kartenzahlungen aktivieren" -#: includes/gateways/Card.php:80 +#: includes/Gateways/Card.php:83 msgid "Credit Card" msgstr "Kreditkarte" -#: includes/gateways/Card.php:100 +#: includes/Gateways/Card.php:103 msgid "Save card for registered customers" msgstr "Kreditkarten für registrierte Kunden speichern" -#: includes/gateways/Card.php:101 includes/gateways/Card.php:112 -#: includes/gateways/DirectDebit.php:105 includes/gateways/Paypal.php:82 +#: includes/Gateways/Card.php:104 includes/Gateways/Card.php:115 +#: includes/Gateways/DirectDebit.php:108 includes/Gateways/Paypal.php:85 msgid " " msgstr " " -#: includes/gateways/Card.php:106 includes/gateways/Card.php:117 -#: includes/gateways/DirectDebit.php:110 includes/gateways/Paypal.php:87 +#: includes/Gateways/Card.php:109 includes/Gateways/Card.php:120 +#: includes/Gateways/DirectDebit.php:113 includes/Gateways/Paypal.php:90 msgid "No" msgstr "Nein" -#: includes/gateways/Card.php:107 includes/gateways/Card.php:118 -#: includes/gateways/DirectDebit.php:111 includes/gateways/Paypal.php:88 +#: includes/Gateways/Card.php:110 includes/Gateways/Card.php:121 +#: includes/Gateways/DirectDebit.php:114 includes/Gateways/Paypal.php:91 msgid "Yes" msgstr "Ja" -#: includes/gateways/Card.php:111 +#: includes/Gateways/Card.php:114 msgid "Offer Click To Pay" msgstr "Click To Pay anbieten" -#: includes/gateways/DirectDebit.php:37 +#: includes/Gateways/DirectDebit.php:40 msgid "" "By signing this mandate form, you authorize %merchant% to send instructions " "to your bank to debit your account and your bank to debit your account in " @@ -416,50 +346,50 @@ msgstr "" "oder Dritten auf Anforderung meinen Namen, Adresse und Geburtsdatum " "vollständig mitzuteilen." -#: includes/gateways/DirectDebit.php:45 +#: includes/Gateways/DirectDebit.php:48 msgid "Unzer SEPA Direct Debit" msgstr "Unzer SEPA Lastschrift" -#: includes/gateways/DirectDebit.php:86 +#: includes/Gateways/DirectDebit.php:89 msgid "Enable Unzer SEPA Direct Debit Payments" msgstr "Unzer SEPA Lastschrift Zahlungen aktivieren" -#: includes/gateways/DirectDebit.php:95 +#: includes/Gateways/DirectDebit.php:98 msgid "SEPA Direct Debit" msgstr "SEPA Lastschrift" -#: includes/gateways/DirectDebit.php:104 +#: includes/Gateways/DirectDebit.php:107 msgid "Save bank details for registered customers" msgstr "Bankverbindung für registrierte Kunden speichern" -#: includes/gateways/DirectDebitSecured.php:37 +#: includes/Gateways/DirectDebitSecured.php:41 msgid "Unzer Direct Debit" msgstr "Unzer Lastschrift" -#: includes/gateways/DirectDebitSecured.php:79 +#: includes/Gateways/DirectDebitSecured.php:82 msgid "Enable Unzer Direct Debit Payments" msgstr "Unzer Lastschrift Zahlungen aktivieren" -#: includes/gateways/DirectDebitSecured.php:88 +#: includes/Gateways/DirectDebitSecured.php:91 msgid "Direct Debit" msgstr "Lastschrift" -#: includes/gateways/DirectDebitSecured.php:97 -#: includes/gateways/Installment.php:102 includes/gateways/Invoice.php:66 +#: includes/Gateways/DirectDebitSecured.php:103 +#: includes/Gateways/Installment.php:111 includes/Gateways/Invoice.php:72 msgid "Public Key EUR/B2C" msgstr "Öffentlicher Schlüssel EUR/B2C" -#: includes/gateways/DirectDebitSecured.php:103 -#: includes/gateways/Installment.php:108 includes/gateways/Invoice.php:72 +#: includes/Gateways/DirectDebitSecured.php:109 +#: includes/Gateways/Installment.php:117 includes/Gateways/Invoice.php:78 msgid "Private Key EUR/B2C" msgstr "Privater Schlüssel EUR/B2C" -#: includes/gateways/DirectDebitSecured.php:109 -#: includes/gateways/Installment.php:114 includes/gateways/Invoice.php:78 +#: includes/Gateways/DirectDebitSecured.php:115 +#: includes/Gateways/Installment.php:123 includes/Gateways/Invoice.php:84 msgid "Key Check EUR/B2C" msgstr "Schlüsselprüfung EUR/B2C" -#: includes/gateways/DirectDebitSecured.php:174 +#: includes/Gateways/DirectDebitSecured.php:184 #, php-format msgid "" "An amount of %1$s will be deducted from your account using the descriptor " @@ -468,127 +398,119 @@ msgstr "" "Der Betrag in Höhe von %s wird mit der Referenz '%s' von Ihrem Konto in " "Übereinstimmung mit dem SEPA-Mandat eingezogen werden" -#: includes/gateways/Eps.php:36 +#: includes/Gateways/Eps.php:38 msgid "Enable Unzer EPS" msgstr "Unzer EPS aktivieren" -#: includes/gateways/Eps.php:45 +#: includes/Gateways/Eps.php:47 msgid "EPS" msgstr "EPS" -#: includes/gateways/Giropay.php:36 -msgid "Enable Unzer Giropay" -msgstr "Unzer Giropay aktivieren" - -#: includes/gateways/Giropay.php:45 -msgid "Giropay" -msgstr "Giropay" - -#: includes/gateways/GooglePay.php:95 +#: includes/Gateways/GooglePay.php:118 msgid "Enable Unzer Google Pay" msgstr "Unzer Google Pay aktivieren" -#: includes/gateways/GooglePay.php:104 +#: includes/Gateways/GooglePay.php:127 msgid "Google Pay" msgstr "Google Pay" -#: includes/gateways/GooglePay.php:124 +#: includes/Gateways/GooglePay.php:147 msgid "Gateway Merchant ID" msgstr "Gateway Merchant ID" -#: includes/gateways/GooglePay.php:130 +#: includes/Gateways/GooglePay.php:153 msgid "Merchant ID" msgstr "Merchant ID" -#: includes/gateways/GooglePay.php:136 +#: includes/Gateways/GooglePay.php:159 msgid "Merchant Name" msgstr "Merchant Name" -#: includes/gateways/GooglePay.php:142 +#: includes/Gateways/GooglePay.php:165 msgid "Country Code" msgstr "Länder-Code" -#: includes/gateways/GooglePay.php:145 +#: includes/Gateways/GooglePay.php:168 msgid "Country code of the acquirer" msgstr "Land des Acquirers" -#: includes/gateways/GooglePay.php:147 +#: includes/Gateways/GooglePay.php:170 msgid "DK (default)" msgstr "DK (Standard)" -#: includes/gateways/GooglePay.php:154 +#: includes/Gateways/GooglePay.php:177 msgid "Allow Credit Cards" msgstr "Kreditkarten zulassen" -#: includes/gateways/GooglePay.php:161 +#: includes/Gateways/GooglePay.php:184 msgid "Allow Prepaid Cards" msgstr "Prepaid Karten zulassen" -#: includes/gateways/GooglePay.php:168 +#: includes/Gateways/GooglePay.php:191 msgid "Allowed Card Networks" msgstr "Zugelassene Kreditkarten-Anbieter" -#: includes/gateways/GooglePay.php:179 +#: includes/Gateways/GooglePay.php:202 msgid "Button Color" msgstr "Farbe des Buttons" -#: includes/gateways/GooglePay.php:184 +#: includes/Gateways/GooglePay.php:207 msgid "Google's default" msgstr "Standard" -#: includes/gateways/GooglePay.php:185 +#: includes/Gateways/GooglePay.php:208 msgid "Black" msgstr "Schwarz" -#: includes/gateways/GooglePay.php:186 +#: includes/Gateways/GooglePay.php:209 msgid "White" msgstr "Weiß" -#: includes/gateways/GooglePay.php:191 +#: includes/Gateways/GooglePay.php:214 msgid "Button Size Mode" msgstr "Größe des Buttons" -#: includes/gateways/GooglePay.php:196 +#: includes/Gateways/GooglePay.php:219 msgid "Full Width" msgstr "Volle Breite" -#: includes/gateways/GooglePay.php:197 +#: includes/Gateways/GooglePay.php:220 msgid "Static" msgstr "Statisch (kleiner)" -#: includes/gateways/Ideal.php:35 +#: includes/Gateways/Ideal.php:37 msgid "Enable Unzer iDEAL" msgstr "Aktivieren Sie Unzer iDEAL" -#: includes/gateways/Ideal.php:44 +#: includes/Gateways/Ideal.php:46 msgid "iDEAL" msgstr "iDEAL" -#: includes/gateways/Installment.php:37 +#: includes/Gateways/Installment.php:40 msgid "Unzer Installment" msgstr "Unzer Ratenzahlung" -#: includes/gateways/Installment.php:84 +#: includes/Gateways/Installment.php:90 msgid "Enable Unzer Installment" msgstr "Unzer Ratenkauf aktivieren" -#: includes/gateways/Installment.php:93 +#: includes/Gateways/Installment.php:99 msgid "Installment" msgstr "Ratenkauf" -#: includes/gateways/Installment.php:121 includes/gateways/Invoice.php:104 +#: includes/Gateways/Installment.php:130 includes/Gateways/Invoice.php:110 msgid "Public Key CHF/B2C" msgstr "Öffentlicher Schlüssel CHF/B2C" -#: includes/gateways/Installment.php:127 includes/gateways/Invoice.php:110 +#: includes/Gateways/Installment.php:136 includes/Gateways/Invoice.php:116 msgid "Private Key CHF/B2C" msgstr "Privater Schlüssel CHF/B2C" -#: includes/gateways/Installment.php:133 includes/gateways/Invoice.php:116 +#: includes/Gateways/Installment.php:142 includes/Gateways/Invoice.php:122 msgid "Key Check CHF/B2C" msgstr "Schlüsselprüfung CHF/B2C" -#: includes/gateways/Installment.php:197 +#: includes/Gateways/Installment.php:210 #, php-format msgid "" "Payment details:

Holder: %s
IBAN: %s
BIC: %s


Inhaber: %s
IBAN: %s
BIC: %s

Deskriptor :
%s" -#: includes/gateways/Invoice.php:38 +#: includes/Gateways/Invoice.php:41 msgid "Unzer Invoice" msgstr "Unzer Rechnung" -#: includes/gateways/Invoice.php:48 +#: includes/Gateways/Invoice.php:51 msgid "Enable Unzer Invoice" msgstr "Unzer Rechnung aktivieren" -#: includes/gateways/Invoice.php:57 +#: includes/Gateways/Invoice.php:60 msgid "Invoice" msgstr "Rechnungskauf" -#: includes/gateways/Invoice.php:85 +#: includes/Gateways/Invoice.php:91 msgid "Public Key EUR/B2B" msgstr "Öffentlicher Schlüssel EUR/B2B" -#: includes/gateways/Invoice.php:91 +#: includes/Gateways/Invoice.php:97 msgid "Private Key EUR/B2B" msgstr "Privater Schlüssel EUR/B2B" -#: includes/gateways/Invoice.php:97 +#: includes/Gateways/Invoice.php:103 msgid "Key Check EUR/B2B" msgstr "Schlüsselprüfung EUR/B2B" -#: includes/gateways/Invoice.php:123 +#: includes/Gateways/Invoice.php:129 msgid "Public Key CHF/B2B" msgstr "Öffentlicher Schlüssel CHF/B2B" -#: includes/gateways/Invoice.php:129 +#: includes/Gateways/Invoice.php:135 msgid "Private Key CHF/B2B" msgstr "Privater Schlüssel CHF/B2B" -#: includes/gateways/Invoice.php:135 +#: includes/Gateways/Invoice.php:141 msgid "Key Check CHF/B2B" msgstr "Schlüsselprüfung CHF/B2B" -#: includes/gateways/Invoice.php:158 -msgid "Type of company" -msgstr "Art des Unternehmens" - -#: includes/gateways/Invoice.php:161 -msgid "Association" -msgstr "Gesellschaft" - -#: includes/gateways/Invoice.php:162 -msgid "Authority" -msgstr "Behörde" - -#: includes/gateways/Invoice.php:163 -msgid "Company" -msgstr "Firma" - -#: includes/gateways/Invoice.php:164 -msgid "Sole" -msgstr "Einzelunternehmen" - -#: includes/gateways/Invoice.php:165 -msgid "Other" -msgstr "Sonstiges" - -#: includes/gateways/Invoice.php:269 includes/gateways/Prepayment.php:89 +#: includes/Gateways/Invoice.php:250 includes/Gateways/Prepayment.php:93 #, php-format msgid "" "Please transfer the amount of %s to the following account:

Inhaber: %s
IBAN: %s
BIC: %s

Bitte verwenden Sie nur " "diese Identifikationsnummer als Bezeichnung
%s" -#: includes/gateways/Klarna.php:141 +#: includes/Gateways/Klarna.php:144 msgid "Enable Unzer Klarna" msgstr "Unzer Klarna aktivieren" -#: includes/gateways/Klarna.php:150 +#: includes/Gateways/Klarna.php:153 msgid "Klarna" msgstr "Klarna" -#: includes/gateways/OpenBanking.php:66 +#: includes/Gateways/OpenBanking.php:64 msgid "Enable Unzer Direct Bank Transfer" msgstr "Unzer Direktüberweisung aktivieren" -#: includes/gateways/OpenBanking.php:75 +#: includes/Gateways/OpenBanking.php:73 msgid "Direct Bank Transfer" msgstr "Direktüberweisung" -#: includes/gateways/Paypal.php:52 +#: includes/Gateways/Paypal.php:55 msgid "Enable Unzer PayPal" msgstr "Aktivieren Sie Unzer PayPal" -#: includes/gateways/Paypal.php:61 +#: includes/Gateways/Paypal.php:64 msgid "PayPal" msgstr "PayPal" -#: includes/gateways/Paypal.php:81 -msgid "Save PayPAl account for registered customers" +#: includes/Gateways/Paypal.php:84 +#, fuzzy +#| msgid "Save PayPAl account for registered customers" +msgid "Save PayPal account for registered customers" msgstr "PayPal-Konto für registrierte Kunden speichern" -#: includes/gateways/Pis.php:33 -msgid "Enable Unzer Bank Transfer" -msgstr "Unzer Banküberweisung aktivieren" - -#: includes/gateways/Pis.php:42 -msgid "Bank Transfer" -msgstr "Banküberweisung" - -#: includes/gateways/PostFinanceCard.php:33 +#: includes/Gateways/PostFinanceCard.php:36 msgid "Enable Unzer Post Finance Card" msgstr "Unzer Post Finance Card aktivieren" -#: includes/gateways/PostFinanceCard.php:42 +#: includes/Gateways/PostFinanceCard.php:45 msgid "Post Finance Card" msgstr "Post Finance Card" -#: includes/gateways/PostFinanceEfinance.php:33 +#: includes/Gateways/PostFinanceEfinance.php:36 msgid "Enable Unzer Post Finance eFinance" msgstr "Unzer Post Finance eFinance aktivieren" -#: includes/gateways/PostFinanceEfinance.php:42 +#: includes/Gateways/PostFinanceEfinance.php:45 msgid "Post Finance eFinance" msgstr "Post Finance eFinance" -#: includes/gateways/Prepayment.php:36 +#: includes/Gateways/Prepayment.php:40 msgid "Enable Unzer Prepayment" msgstr "Unzer Vorauszahlung aktivieren" -#: includes/gateways/Prepayment.php:45 +#: includes/Gateways/Prepayment.php:49 msgid "Prepayment" msgstr "Vorauszahlung" -#: includes/gateways/Prepayment.php:54 +#: includes/Gateways/Prepayment.php:58 msgid "Order status" msgstr "Bestellstatus" -#: includes/gateways/Prepayment.php:57 +#: includes/Gateways/Prepayment.php:61 msgid "This status is assigned to all orders created with this payment method" msgstr "" "Dieser Status wird allen Bestellungen zugewiesen, die mit dieser " "Zahlungsmethode erstellt werden" -#: includes/gateways/Przelewy24.php:35 +#: includes/Gateways/Prepayment.php:62 includes/Main.php:302 +#: includes/Main.php:312 +msgid "[Use WooC default status]" +msgstr "[WooC-Standardstatus verwenden]" + +#: includes/Gateways/Przelewy24.php:37 msgid "Enable Unzer Przelewy24" msgstr "Unzer Przelewy24 aktivieren" -#: includes/gateways/Przelewy24.php:44 +#: includes/Gateways/Przelewy24.php:46 msgid "Przelewy24" msgstr "Przelewy24" -#: includes/gateways/Sofort.php:33 -msgid "Enable Unzer Sofort" -msgstr "Unzer Sofort Aktivieren" - -#: includes/gateways/Sofort.php:42 -msgid "Sofort" -msgstr "Sofort" - -#: includes/gateways/Twint.php:33 +#: includes/Gateways/Twint.php:36 msgid "Enable Unzer TWINT" msgstr "Unzer TWINT aktivieren" -#: includes/gateways/Twint.php:42 +#: includes/Gateways/Twint.php:45 msgid "TWINT" msgstr "TWINT" -#: includes/gateways/WeChatPay.php:35 +#: includes/Gateways/WeChatPay.php:37 msgid "Enable Unzer WeChat Pay" msgstr "Aktivieren Sie Unzer WeChat Pay" -#: includes/gateways/WeChatPay.php:44 +#: includes/Gateways/WeChatPay.php:46 msgid "WeChat Pay" msgstr "WeChat Bezahlen" -#: includes/gateways/Wero.php:33 +#: includes/Gateways/Wero.php:38 msgid "Enable Unzer Wero" msgstr "Unzer Wero aktivieren" -#: includes/gateways/Wero.php:42 +#: includes/Gateways/Wero.php:47 msgid "Wero" msgstr "Wero" -#: includes/services/DashboardService.php:32 +#: includes/Main.php:154 includes/Main.php:187 +msgid "Chargeback" +msgstr "Chargeback" + +#: includes/Main.php:164 includes/Main.php:188 +msgid "Ready to Capture" +msgstr "Bereit zum Zahlungseinzug" + +#: includes/Main.php:174 includes/Main.php:189 +msgid "Waiting for payment" +msgstr "Warten auf Zahlung" + +#: includes/Main.php:259 +msgid "Unzer Transactions" +msgstr "Unzer-Transaktionen" + +#: includes/Main.php:263 +msgid "Unzer API settings" +msgstr "Unzer API-Einstellungen" + +#: includes/Main.php:282 +msgid "Public Key" +msgstr "Öffentlicher Schlüssel" + +#: includes/Main.php:290 +msgid "Private Key" +msgstr "Privater Schlüssel" + +#: includes/Main.php:298 +msgid "Order status for authorized payments" +msgstr "Auftragsstatus für Aufträge mit autorisierter Zahlung" + +#: includes/Main.php:301 +msgid "This status is assigned for orders, that are authorized" +msgstr "Dieser Status wird für autorisierte Aufträge vergeben" + +#: includes/Main.php:308 +msgid "Order status for captured payments" +msgstr "Auftragsstatus für Aufträge mit eingezogener Zahlung" + +#: includes/Main.php:311 +msgid "This status is assigned for orders, that are captured" +msgstr "" +"Dieser Status wird für Aufträge vergeben, deren Zahlung eingezogen wurde" + +#: includes/Main.php:318 +msgid "Order status for chargebacks" +msgstr "Auftragsstatus für Aufträge mit Chargeback" + +#: includes/Main.php:321 +msgid "This status is assigned for orders with chargebacks" +msgstr "" +"Dieser Status wird für Aufträge vergeben, bei denen ein Chargeback " +"stattgefunden hat" + +#: includes/Main.php:322 +msgid "[No status change]" +msgstr "[Status nicht ändern]" + +#: includes/Services/DashboardService.php:32 #, php-format msgid "" "A chargeback has been received. Please check the payment details for order %s" @@ -786,19 +734,19 @@ msgstr "" "Es hat ein Chargeback bei Bestellung %s stattgefunden. Bitte überprüfen Sie " "diesen Fall." -#: includes/services/DashboardService.php:35 +#: includes/Services/DashboardService.php:35 msgid "Could not create apple-developer-merchantid-domain-association file" msgstr "DIe Apple Domain Datei konnte nicht erstellt werden" -#: includes/services/DashboardService.php:40 +#: includes/Services/DashboardService.php:40 msgid "Dismiss this notification" msgstr "Ausblenden" -#: includes/services/OrderService.php:348 +#: includes/Services/OrderService.php:288 msgid "Payment complete event failed." msgstr "Abschluss der Zahlung ist fehlgeschlagen." -#: includes/services/PaymentService.php:151 +#: includes/Services/PaymentService.php:166 msgid "" "Installment payment is only available for shipping and billing address with " "the same name" @@ -806,48 +754,43 @@ msgstr "" "Ratenzahlung ist nur möglich, wenn Liefer- und Rechnungsadresse denselben " "Namen haben" -#: includes/services/PaymentService.php:191 +#: includes/Services/PaymentService.php:206 msgid "Unzer Payment ID: " msgstr "Unzer Payment ID: " -#: includes/services/PaymentService.php:304 +#: includes/Services/PaymentService.php:319 #, php-format msgid "Unable to do refund: Maximum amount for single refund is %s." msgstr "" "Erstattung nicht möglich: Maximaler Betrag für eine einzelne Erstattung ist " "%s." -#: includes/services/PaymentService.php:305 +#: includes/Services/PaymentService.php:320 #, php-format msgid "However, you may refund in up to %s smaller chunks." msgstr "Es ist jedoch möglich bis zu %s einzelne Erstattungen vorzunehmen." -#: includes/services/PaymentService.php:306 +#: includes/Services/PaymentService.php:321 msgid "Original error message: " msgstr "Ursprüngliche Fehlermeldung: " -#: includes/services/PaymentService.php:335 +#: includes/Services/PaymentService.php:350 msgid "Refund not possible" msgstr "Rückerstattung nicht möglich" -#: includes/services/PaymentService.php:340 -msgid "Reversals prior to capturing are only allowed for the full amount" -msgstr "" -"Stornierungen vor Zahlungseinzug sind nur in Höhe des vollen Betrags möglich" - -#: includes/services/PaymentService.php:345 +#: includes/Services/PaymentService.php:357 msgid "Reversal not possible" msgstr "Stornierung nicht möglich" -#: includes/traits/SavePaymentInstrumentTrait.php:24 +#: includes/Traits/SavePaymentInstrumentTrait.php:24 msgid "Save this for my next purchase" msgstr "Für meinen nächsten Einkauf speichern" -#: includes/traits/SavePaymentInstrumentTrait.php:38 +#: includes/Traits/SavePaymentInstrumentTrait.php:38 msgid "Use another one" msgstr "Andere" -#: unzer-payments.php:53 +#: unzer-payments.php:62 msgid "Unzer requires WooCommerce to be installed and active." msgstr "WooCommerce muss installiert und aktiv sein." @@ -867,6 +810,68 @@ msgstr "Unzer" msgid "https://www.unzer.com" msgstr "https://www.unzer.com" +#~ msgid "Payment Instructions" +#~ msgstr "Zahlungsanweisungen" + +#~ msgid "Detailed Transactions" +#~ msgstr "Detaillierte Transaktionen" + +#~ msgid "Show Debug Information" +#~ msgstr "Debug-Informationen anzeigen" + +#~ msgid "Total amount" +#~ msgstr "Gesamtbetrag" + +#~ msgid "Charged amount" +#~ msgstr "Eingezogener Betrag" + +#~ msgid "Please enter your date of birth" +#~ msgstr "Bitte geben Sie Ihr Geburtsdatum ein" + +#~ msgid "Please enter your company type" +#~ msgstr "Bitte geben Sie Ihren Unternehmenstyp ein" + +#~ msgid "Enable Unzer Giropay" +#~ msgstr "Unzer Giropay aktivieren" + +#~ msgid "Giropay" +#~ msgstr "Giropay" + +#~ msgid "Type of company" +#~ msgstr "Art des Unternehmens" + +#~ msgid "Association" +#~ msgstr "Gesellschaft" + +#~ msgid "Authority" +#~ msgstr "Behörde" + +#~ msgid "Company" +#~ msgstr "Firma" + +#~ msgid "Sole" +#~ msgstr "Einzelunternehmen" + +#~ msgid "Other" +#~ msgstr "Sonstiges" + +#~ msgid "Enable Unzer Bank Transfer" +#~ msgstr "Unzer Banküberweisung aktivieren" + +#~ msgid "Bank Transfer" +#~ msgstr "Banküberweisung" + +#~ msgid "Enable Unzer Sofort" +#~ msgstr "Unzer Sofort Aktivieren" + +#~ msgid "Sofort" +#~ msgstr "Sofort" + +#~ msgid "Reversals prior to capturing are only allowed for the full amount" +#~ msgstr "" +#~ "Stornierungen vor Zahlungseinzug sind nur in Höhe des vollen Betrags " +#~ "möglich" + #~ msgid "Apple Pay certificate settings" #~ msgstr "Einstellungen für Apple Pay-Zertifikate" diff --git a/languages/unzer-payments-de_DE_formal.mo b/languages/unzer-payments-de_DE_formal.mo index 6a608a7..e102abf 100644 Binary files a/languages/unzer-payments-de_DE_formal.mo and b/languages/unzer-payments-de_DE_formal.mo differ diff --git a/languages/unzer-payments-de_DE_formal.po b/languages/unzer-payments-de_DE_formal.po index 5438f59..3ae303d 100644 --- a/languages/unzer-payments-de_DE_formal.po +++ b/languages/unzer-payments-de_DE_formal.po @@ -697,7 +697,7 @@ msgid "PayPal" msgstr "PayPal" #: includes/gateways/Paypal.php:84 -msgid "Save PayPAl account for registered customers" +msgid "Save PayPal account for registered customers" msgstr "PayPal-Konto für registrierte Kunden speichern" #: includes/gateways/Pis.php:35 diff --git a/package.json b/package.json index a7021cf..843ce6c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "unzer-payments", - "version": "2.0.0", + "version": "2.1.0", "description": "", "main": "index.js", "scripts": { diff --git a/readme.txt b/readme.txt index 790042b..68caac5 100755 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ Contributors: Unzer Tags: payments, woocommerce Requires at least: 4.5 Tested up to: 6.9 -Stable tag: 2.0.1 +Stable tag: 2.1.0 License: Apache-2.0 License URI: http://www.apache.org/licenses/LICENSE-2.0 Author URI: https://unzer.com @@ -13,8 +13,7 @@ Use Unzer plugin for WooCommerce to provide an easy-to-install and use payment g ## Description ## -* Version 2.0.0 is a breaking change - remember to test and create backup before updating your LIVE environment. -* Migration from WooCommerce Classic Checkout to Checkout Block will follow with version 2.1.0 +* Version 2.0.0 was a breaking change - remember to test and create backup before updating your LIVE environment. * Easily accept digital payments in your online store with Unzer Plugins. * Unzer Payments is a 3rd party payment gateway plugin, https://docs.unzer.com/plugins/woocommerce and https://unzer.com/ * Unzer Payments can use external JavaScripts for certain payment methods, Apple Pay https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js, Google Pay https://pay.google.com/gp/p/js/pay.js, Unzer paylater payment methods https://h.online-metrix.net/fp/tags.js. @@ -60,6 +59,17 @@ Unzer is one of the leading payment companies in Europe. Over 70,000 retailers t ## Changelog ## +# 2.1.0 # +### This is a major release - remember to test and create backup before updating your LIVE environment. +* New: Block code is now fully supported +* New: One key pair logic implemented +* New: Payment method list for new installs, has new design +* New: Wero is set to direct charge for better support from external payment systems +* Fix: Customer saved payment methods can be deleted +* Fix: Apple Pay is now supported in non-Safari browsers +* Fix: Apple Pay did not always return to order page +* Fix: Typos, UI improvements etc. + # 2.0.1 # * Bugfix dependency Germanized plugin @@ -186,4 +196,3 @@ Unzer is one of the leading payment companies in Europe. Over 70,000 retailers t # 1.0.0 # * Release - diff --git a/unzer-payments.php b/unzer-payments.php index e09f857..3a9df8f 100755 --- a/unzer-payments.php +++ b/unzer-payments.php @@ -5,7 +5,7 @@ * Description: Official Unzer Plugin * Author: Unzer * Author URI: https://www.unzer.com - * Version: 2.0.1 + * Version: 2.1.0 * License: Apache-2.0 * Requires at least: 4.5 * Tested up to: 6.9 @@ -21,7 +21,7 @@ /** * Required minimums and constants */ -define( 'UNZER_VERSION', '2.0.1' ); +define( 'UNZER_VERSION', '2.1.0' ); define( 'UNZER_PLUGIN_TYPE_STRING', 'Unzer Payments' ); define( 'UNZER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) ); define( 'UNZER_PLUGIN_PATH', __DIR__ . '/' ); @@ -43,6 +43,15 @@ function () { } ); +add_action( + 'before_woocommerce_init', + function () { + if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) { + \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', __FILE__, true ); + } + } +); + add_action( 'plugins_loaded', function () { @@ -80,4 +89,3 @@ function ( $class ) { $unzer->init(); } ); -