1import{h as ve,f as h,c as M,w as ye,P as ge,B as ke,K as l,L as t,n as p,u as W,a0 as u,$ as A,F as I,a4 as d,U as X,Y as ee,a1 as m,_ as te,a6 as be,O as ae,x as we,a2 as Pe,a3 as Se,M as n}from"./vue-datepicker-CpIdsRIT.js";import{ds as Ce,b as ze,bp as Ee,c as Te,e8 as Ae,$ as Le,n as $,V as F,t as se,e9 as xe,w as De,o as Re,ea as Be,eb as Me,ec as Ie,ed as Fe,ee as Ve,bY as Ne,ef as Oe,_ as Ze}from"./index-o4dhNVJj.js";import{l as $e}from"./index-xFuvys3v.js";import{V as je}from"./VChip-0TTkSTXl.js";import"./datefns-BAflKSlV.js";const o=x=>(Pe("data-v-84ee073b"),x=x(),Se(),x),qe={class:"payment-checkout"},Ke={key:0,class:"checkout-error"},Ue={class:"checkout-error__icon"},Ge={class:"checkout-error__msg"},Ye={class:"checkout-error__actions"},He={key:0,class:"checkout-loading"},Qe=o(()=>t("p",{class:"checkout-loading__label"},"Zahlungsformular wird geladen â¦",-1)),Je={class:"checkout-columns"},We={class:"checkout-summary"},Xe=o(()=>t("h2",{class:"checkout-summary__title"},"Abonnement abschlieÃen",-1)),et={class:"checkout-summary__plan"},tt={key:0,class:"checkout-summary__card"},at=o(()=>t("div",{class:"checkout-summary__row checkout-summary__row--header"},[t("span",null,"Kostenübersicht")],-1)),st={class:"checkout-summary__row"},nt=o(()=>t("span",null,"Monatliche Grundgebühr",-1)),lt={key:0,class:"checkout-summary__row checkout-summary__row--sub"},rt=o(()=>t("span",null,"Nutzungsgebühr",-1)),ot={key:1,class:"checkout-summary__row checkout-summary__row--sub"},it=o(()=>t("span",null,"Nutzungsgebühr",-1)),ut=o(()=>t("span",null,"Keine",-1)),ct=[it,ut],dt={class:"checkout-summary__row checkout-summary__row--total"},_t=o(()=>t("span",null,"Grundpreis / Monat",-1)),ht={class:"checkout-summary__row checkout-summary__row--trial"},mt=o(()=>t("span",null,"Heute fällig (Testphase)",-1)),pt={class:"checkout-summary__row checkout-summary__row--sub"},ft=o(()=>t("span",null,"Erste Abbuchung",-1)),vt={key:1,class:"checkout-summary__note"},yt=o(()=>t("p",{class:"checkout-summary__note"}," Die Nutzungsgebühr wird nur für Tage berechnet, an denen ein Mitarbeiter aktiv die Plattform nutzt. ",-1)),gt={class:"checkout-form"},kt=o(()=>t("div",{class:"pm-section-label"},"Zahlungsmethode auswählen",-1)),bt={class:"pm-list"},wt=["onClick"],Pt={class:"pm-option__radio"},St={key:0,class:"pm-option__radio-dot"},Ct={class:"pm-option__icon"},zt={class:"pm-option__label"},Et={key:0,class:"pm-option__exp"},Tt={class:"pm-option__radio"},At={key:0,class:"pm-option__radio-dot"},Lt={class:"pm-option__icon"},xt=o(()=>t("span",{class:"pm-option__label"},"Neue Zahlungsmethode",-1)),Dt={key:0,class:"element-loading"},Rt={class:"checkout-form__footer"},Bt=o(()=>t("p",{class:"checkout-form__legal"},[m(" Mit dem Abonnieren stimmen Sie unseren "),t("a",{href:"https://safeos.de/agb/",target:"_blank",rel:"noopener noreferrer"},"AGB"),m(" zu. Sie können jederzeit kündigen. ")],-1)),Mt=ve({__name:"StripePaymentCheckout",setup(x){const c=Ce(),ne=Te(),D=Re(),{locale:j}=ze(),q=Ee(),g=h(!0),C=h(!1),R=h(!1),k=h(!1),z=h(null),E=h(null),V=h(null),f=h([]),r=h(null);let _=null,v=null,b=null,N=null,w=null,P=null,T={};const le={basic:"Basic",basic_plus:"Basic Plus",professional:"Professional",enterprise:"Enterprise"},re=[{key:"basic",baseFee:69,usageRate:null},{key:"basic_plus",baseFee:129,usageRate:.2},{key:"professional",baseFee:299,usageRate:.3},{key:"enterprise",baseFee:599,usageRate:.4}],O=e=>new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(e),oe=e=>e.toLocaleString("de-DE",{minimumFractionDigits:2,maximumFractionDigits:2}),K=e=>new Intl.DateTimeFormat("de-DE",{day:"2-digit",month:"2-digit",year:"numeric"}).format(new Date(e)),S=h(null),B=M(()=>{const e=ne.query.targetLicense;return typeof e=="string"&&e?(c.setTargetLicense(e),e):c.hydrateTargetLicense()}),ie=M(()=>le[B.value??""]??B.value??"â"),L=M(()=>re.find(e=>e.key===B.value)??null),ue=M(()=>r.value==="new"||!f.value.length?!R.value:!r.value),ce=e=>e.type==="sepa_debit"?Be:e.type==="paypal"?Me:e.type==="amazon_pay"?Ie:e.brand==="apple_pay"?Fe:e.type==="revolut_pay"?Ve:e.type==="
1klarna"?Ne:Oe,de=e=>{if(!e)return"â";if(e.type==="sepa_debit")return`SEPA â¢â¢â¢â¢ ${e.last4}`;if(e.type==="paypal")return e.email?`PayPal (${e.email})`:"PayPal";if(e.type==="amazon_pay")return"Amazon Pay";if(e.brand==="apple_pay")return e.last4?`Apple Pay â¢â¢â¢â¢ ${e.last4}`:"Apple Pay";if(e.type==="revolut_pay")return"Revolut Pay";if(e.type==="klarna")return"Klarna";const a=e.brand?e.brand.charAt(0).toUpperCase()+e.brand.slice(1):"";return e.last4?`${a} â¢â¢â¢â¢ ${e.last4}`:a||"â"},_e=()=>D.push("/license"),he=async()=>{if(w){try{await c.abortPendingSubscription()}catch{}w=null}c.resetCheckout(),c.setTargetLicense(null),await D.push("/license")},U=()=>{if(b){try{b.unmount()}catch{}b=null}v=null,R.value=!1,k.value=!1},G=()=>q.global.current.value.dark?{theme:"night",variables:{colorPrimary:"#2ecc71",colorBackground:"#232a38",colorText:"#e8eaed",colorTextSecondary:"#9aa3b0",colorTextPlaceholder:"#6b7280",colorDanger:"#ef4444",fontFamily:"inherit",borderRadius:"8px"}}:{theme:"stripe",variables:{colorPrimary:"#2ecc71",colorBackground:"#ffffff",colorText:"#111827",colorDanger:"#ef4444",fontFamily:"inherit",borderRadius:"8px"}},Y=async()=>{if(!(!_||!P||R.value||k.value)){if(k.value=!0,v=_.elements({clientSecret:P,appearance:G(),locale:j.value?.split("-")[0]??"de"}),b=v.create("payment",{layout:"tabs",...Object.keys(T).length?{defaultValues:{billingDetails:T}}:{}}),await we(),!V.value){k.value=!1;return}b.mount(V.value),b.on("ready",()=>{k.value=!1,R.value=!0}),b.on("loaderror",e=>{z.value=e?.error?.message??"Zahlungsformular konnte nicht geladen werden.",k.value=!1})}},H=async e=>{r.value=e,E.value=null,e==="new"&&await Y()};ye(()=>q.global.current.value.dark,()=>{v&&v.update({appearance:G()})});const Q=async()=>{U(),g.value=!0,z.value=null,E.value=null,f.value=[],r.value=null,P=null,T={},S.value=null;const e=B.value;if(!e){z.value="Bitte wählen Sie zuerst eine Lizenz aus.",g.value=!1;return}try{if(_=_??await $e("pk_live_51RoMOkERb1M0jPLLgu0E0dNhBet3Df5TfAel9gK0DEl7qnx8fb1APhrAgV8HjmPviPrSQT06Q9KUnC5M7eSZhM1700VXPprgd4"),!_)throw new Error("Stripe konnte nicht geladen werden.");const[a,s]=await Promise.allSettled([c.setupSubscription(e,j.value),c.fetchPaymentMethods()]);if(a.status==="rejected")throw a.reason;const{clientSecret:Z,intentType:J,subscriptionId:pe,billingDetails:i}=a.value;if(S.value=a.value.trialEndsAt??null,N=J,w=pe??null,P=Z,J==="none"||!Z){w=null,c.resetCheckout(),c.setTargetLicense(null),await D.push({path:"/checkout/return",query:{status:"succeeded"}});return}if(i?.name&&(T.name=i.name),i?.email&&(T.email=i.email),i?.address){const y={};i.address.line1&&(y.line1=i.address.line1),i.address.city&&(y.city=i.address.city),i.address.postal_code&&(y.postal_code=i.address.postal_code),i.address.country&&(y.country=i.address.country),Object.keys(y).length&&(T.address=y)}if(s.status==="fulfilled"&&s.value.paymentMethods.length){f.value=s.value.paymentMethods;const y=f.value.find(fe=>fe.isDefault)??f.value[0];r.value=y.id,g.value=!1}else g.value=!1,r.value="new",await Y()}catch(a){z.value=a?.response?.data?.message??a?.message??"Fehler beim Initialisieren der Zahlung.",g.value=!1}},me=async()=>{if(!_||!P)return;C.value=!0,E.value=null;const e=`${window.location.origin}/checkout/return`;let a;if(r.value&&r.value!=="new"){const s=r.value;if(a=N==="setup"?await _.confirmSetup({clientSecret:P,confirmParams:{payment_method:s,return_url:e},redirect:"if_required"}):await _.confirmPayment({clientSecret:P,confirmParams:{payment_method:s,return_url:e},redirect:"if_required"}),!a.error){w=null,c.resetCheckout(),c.setTargetLicense(null),await D.push({path:"/checkout/return",query:{status:"succeeded"}});return}}else{if(!v){C.value=!1;return}a=N==="setup"?await _.confirmSetup({elements:v,confirmParams:{return_url:e}}):await _.confirmPayment({elements:v,confirmParams:{return_url:e}})}a.error&&(E.value=a.error.message??"Zahlung fehlgeschlagen. Bitte versuchen Sie es erneut."),C.value=!1};return Ae(async()=>{if(!C.value&&w){try{await c.abortPendingSubscription()}catch{}w=null}}),ge(Q),ke(U),(e,a)=>(n(),l("div",qe,[z.value?(n(),l("div",Ke,[t("div",Ue,[p($,{icon:W(Le),size:"32"},null,8,["icon"])]),t("p",Ge,u(z.value),1),t("div",Ye,[p(F,{color:"secondary",variant:"flat",onClick:Q},{default:A(()=>[m("Erneut versuchen")]),_:1}),p(F,{variant:"text",onClick:_e},{default:A(()=>[m("Zur Lizenzauswahl")]),_:1})])])):(n(),l(I,{key:1},[g.value?(n(),l("div",He,[p(se,{indeterminate:"",size:"40",color:"secondary"}),Qe])):d("",!0),X(t("div",Je,[t("div",We,[Xe,t("p",et,[m("Plan: "),t("strong",null,u(ie.value),1)]),L.value?(n(),l("div",tt,[at,t("div",st,[nt,t("span",null,u(O(L.value.baseFee)),1)]),L.value.usageRate?(n(),l("div",lt,[rt,t("span",null,u(oe(L.value.usageRate))+" ⬠/ Mitarbeiter & Tag",1)])):(n(),l("div",ot,ct)),t("div",dt,[_t,t("span",null,u(O(L.value.baseFee)),1)]),S.value?(n(),l(I,{key:2},[t("div",ht,[mt,t("span",null,u(O(0)),1)]),t("div",pt,[ft,t("span",null,u(K(S.value)),1)])],64)):d("",!0)])):d("",!0),S.value?(n(),l("p",vt," Ihre Testphase läuft bis "+u(K(S.value))+". Es wird jetzt nur die Zahlungsmethode hinterlegt; die erste Abbuchung erfolgt nach Ende der Testphase. Bis dahin können Sie jederzeit kündigen. ",1)):d("",!0),yt]),t("div",gt,[f.value.length?(n(),l(I,{key:0},[kt,t("div",bt,[(n(!0),l(I,null,be(f.value,s=>
1(n(),l("button",{key:s.id,type:"button",class:ae(["pm-option",{"pm-option--selected":r.value===s.id}]),onClick:Z=>H(s.id)},[t("span",Pt,[r.value===s.id?(n(),l("span",St)):d("",!0)]),t("span",Ct,[p($,{icon:ce(s),size:"18"},null,8,["icon"])]),t("span",zt,[m(u(de(s))+" ",1),s.expMonth?(n(),l("span",Et," · "+u(s.expMonth.toString().padStart(2,"0"))+"/"+u(s.expYear),1)):d("",!0)]),s.isDefault?(n(),te(je,{key:0,density:"compact",size:"x-small",color:"success",class:"ml-auto"},{default:A(()=>[m(" Standard ")]),_:1})):d("",!0)],10,wt))),128)),t("button",{type:"button",class:ae(["pm-option",{"pm-option--selected":r.value==="new"}]),onClick:a[0]||(a[0]=s=>H("new"))},[t("span",Tt,[r.value==="new"?(n(),l("span",At)):d("",!0)]),t("span",Lt,[p($,{icon:W(xe),size:"18"},null,8,["icon"])]),xt],2)])],64)):d("",!0),X(t("div",null,[k.value?(n(),l("div",Dt,[p(se,{indeterminate:"",size:"24",color:"secondary"})])):d("",!0),t("div",{ref_key:"paymentElementRef",ref:V,class:"checkout-form__element"},null,512)],512),[[ee,r.value==="new"||!f.value.length]]),E.value?(n(),te(De,{key:1,type:"error",variant:"tonal",density:"compact",class:"mt-4"},{default:A(()=>[m(u(E.value),1)]),_:1})):d("",!0),t("div",Rt,[p(F,{color:"secondary",variant:"flat",size:"large",loading:C.value,disabled:ue.value,class:"w-full",onClick:me},{default:A(()=>[m(u(S.value?"Zahlungsmethode hinterlegen & abonnieren":"Jetzt abonnieren"),1)]),_:1},8,["loading","disabled"]),p(F,{variant:"outlined",size:"large",disabled:C.value,class:"w-full",onClick:he},{default:A(()=>[m(" Abbrechen ")]),_:1},8,["disabled"]),Bt])])],512),[[ee,!g.value]])],64))]))}}),Zt=Ze(Mt,[["__scopeId","data-v-84ee073b"]]);export{Zt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.