1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-20 16:31:33 +02:00

Ensure we register domains for on stripe connect for apple pay

This commit is contained in:
David Bomba 2022-03-17 11:39:00 +11:00
parent b261e9fa95
commit c6fd68b591
6 changed files with 158 additions and 70 deletions

View File

@ -205,7 +205,7 @@ class BrowserPay implements MethodInterface
$response = ApplePayDomain::create([ $response = ApplePayDomain::create([
'domain_name' => $domain, 'domain_name' => $domain,
]); ], $this->stripe->stripe_connect_auth);
$config->apple_pay_domain_id = $response->id; $config->apple_pay_domain_id = $response->id;

2
public/css/app.css vendored

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
/*! For license information please see stripe-browserpay.js.LICENSE.txt */ /*! For license information please see stripe-browserpay.js.LICENSE.txt */
(()=>{function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(new(function(){function t(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.clientSecret=null===(e=document.querySelector("meta[name=stripe-pi-client-secret]"))||void 0===e?void 0:e.content}var n,r,o;return n=t,(r=[{key:"init",value:function(){var e,t,n={};return document.querySelector("meta[name=stripe-account-id]")&&(n.apiVersion="2020-08-27",n.stripeAccount=null===(t=document.querySelector("meta[name=stripe-account-id]"))||void 0===t?void 0:t.content),this.stripe=Stripe(null===(e=document.querySelector("meta[name=stripe-publishable-key]"))||void 0===e?void 0:e.content,n),this.elements=this.stripe.elements(),this}},{key:"createPaymentRequest",value:function(){return this.paymentRequest=this.stripe.paymentRequest(JSON.parse(document.querySelector("meta[name=payment-request-data").content)),this}},{key:"createPaymentRequestButton",value:function(){this.paymentRequestButton=this.elements.create("paymentRequestButton",{paymentRequest:this.paymentRequest})}},{key:"handlePaymentRequestEvents",value:function(e,t){document.querySelector("#errors").hidden=!0,this.paymentRequest.on("paymentmethod",(function(n){e.confirmCardPayment(t,{payment_method:n.paymentMethod.id},{handleActions:!1}).then((function(r){r.error?(n.complete("fail"),document.querySelector("#errors").innerText=r.error.message,document.querySelector("#errors").hidden=!1):(n.complete("success"),"requires_action"===r.paymentIntent.status?e.confirmCardPayment(t).then((function(e){e.error?(n.complete("fail"),document.querySelector("#errors").innerText=e.error.message,document.querySelector("#errors").hidden=!1):(document.querySelector('input[name="gateway_response"]').value=JSON.stringify(e.paymentIntent),document.getElementById("server-response").submit())})):(document.querySelector('input[name="gateway_response"]').value=JSON.stringify(r.paymentIntent),document.getElementById("server-response").submit()))}))}))}},{key:"handle",value:function(){var e=this;this.init().createPaymentRequest().createPaymentRequestButton(),this.paymentRequest.canMakePayment().then((function(t){var n;if(t)return e.paymentRequestButton.mount("#payment-request-button");document.querySelector("#errors").innerHTML=JSON.parse(null===(n=document.querySelector("meta[name=no-available-methods]"))||void 0===n?void 0:n.content),document.querySelector("#errors").hidden=!1})),this.handlePaymentRequestEvents(this.stripe,this.clientSecret)}}])&&e(n.prototype,r),o&&e(n,o),t}())).handle()})(); (()=>{function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(new(function(){function t(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.clientSecret=null===(e=document.querySelector("meta[name=stripe-pi-client-secret]"))||void 0===e?void 0:e.content}var n,r,o;return n=t,(r=[{key:"init",value:function(){var e,t,n={};return document.querySelector("meta[name=stripe-account-id]")&&(n.apiVersion="2020-08-27",n.stripeAccount=null===(t=document.querySelector("meta[name=stripe-account-id]"))||void 0===t?void 0:t.content),this.stripe=Stripe(null===(e=document.querySelector("meta[name=stripe-publishable-key]"))||void 0===e?void 0:e.content,n),this.elements=this.stripe.elements(),this}},{key:"createPaymentRequest",value:function(){return this.paymentRequest=this.stripe.paymentRequest(JSON.parse(document.querySelector("meta[name=payment-request-data").content)),this}},{key:"createPaymentRequestButton",value:function(){this.paymentRequestButton=this.elements.create("paymentRequestButton",{paymentRequest:this.paymentRequest})}},{key:"handlePaymentRequestEvents",value:function(e,t){document.querySelector("#errors").hidden=!0,this.paymentRequest.on("paymentmethod",(function(n){e.confirmCardPayment(t,{payment_method:n.paymentMethod.id},{handleActions:!1}).then((function(r){r.error?(document.querySelector("#errors").innerText=r.error.message,document.querySelector("#errors").hidden=!1,n.complete("fail")):(n.complete("success"),"requires_action"===r.paymentIntent.status?e.confirmCardPayment(t).then((function(e){e.error?(n.complete("fail"),document.querySelector("#errors").innerText=e.error.message,document.querySelector("#errors").hidden=!1):(document.querySelector('input[name="gateway_response"]').value=JSON.stringify(e.paymentIntent),document.getElementById("server-response").submit())})):(document.querySelector('input[name="gateway_response"]').value=JSON.stringify(r.paymentIntent),document.getElementById("server-response").submit()))}))}))}},{key:"handle",value:function(){var e=this;this.init().createPaymentRequest().createPaymentRequestButton(),this.paymentRequest.canMakePayment().then((function(t){var n;if(t)return e.paymentRequestButton.mount("#payment-request-button");document.querySelector("#errors").innerHTML=JSON.parse(null===(n=document.querySelector("meta[name=no-available-methods]"))||void 0===n?void 0:n.content),document.querySelector("#errors").hidden=!1})),this.handlePaymentRequestEvents(this.stripe,this.clientSecret)}}])&&e(n.prototype,r),o&&e(n,o),t}())).handle()})();

View File

@ -36,9 +36,9 @@
"/js/clients/payments/stripe-eps.js": "/js/clients/payments/stripe-eps.js?id=6bed81ba3f73a695de95", "/js/clients/payments/stripe-eps.js": "/js/clients/payments/stripe-eps.js?id=6bed81ba3f73a695de95",
"/js/clients/payments/stripe-ideal.js": "/js/clients/payments/stripe-ideal.js?id=188426574f27660936e2", "/js/clients/payments/stripe-ideal.js": "/js/clients/payments/stripe-ideal.js?id=188426574f27660936e2",
"/js/clients/payments/stripe-przelewy24.js": "/js/clients/payments/stripe-przelewy24.js?id=e240b907ad163cac04c0", "/js/clients/payments/stripe-przelewy24.js": "/js/clients/payments/stripe-przelewy24.js?id=e240b907ad163cac04c0",
"/js/clients/payments/stripe-browserpay.js": "/js/clients/payments/stripe-browserpay.js?id=71e49866d66a6d85b88a", "/js/clients/payments/stripe-browserpay.js": "/js/clients/payments/stripe-browserpay.js?id=1e6e12709a43473e4406",
"/js/clients/payments/stripe-fpx.js": "/js/clients/payments/stripe-fpx.js?id=765874308d4374726b25", "/js/clients/payments/stripe-fpx.js": "/js/clients/payments/stripe-fpx.js?id=765874308d4374726b25",
"/css/app.css": "/css/app.css?id=3e08340d820da80e900b", "/css/app.css": "/css/app.css?id=1347051cc03a8dd2a17c",
"/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad", "/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad",
"/vendor/clipboard.min.js": "/vendor/clipboard.min.js?id=ad98572d415d2f245284" "/vendor/clipboard.min.js": "/vendor/clipboard.min.js?id=ad98572d415d2f245284"
} }

View File

@ -68,12 +68,12 @@ class StripeBrowserPay {
) )
.then(function (confirmResult) { .then(function (confirmResult) {
if (confirmResult.error) { if (confirmResult.error) {
ev.complete('fail');
document.querySelector('#errors').innerText = document.querySelector('#errors').innerText =
confirmResult.error.message; confirmResult.error.message;
document.querySelector('#errors').hidden = false; document.querySelector('#errors').hidden = false;
ev.complete('fail');
} else { } else {
ev.complete('success'); ev.complete('success');

View File

@ -2,7 +2,6 @@
$primary_color = isset($settings) ? $settings->primary_color : '#4caf50'; $primary_color = isset($settings) ? $settings->primary_color : '#4caf50';
@endphp @endphp
<!DOCTYPE html <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
@ -23,41 +22,7 @@
supported-color-schemes: light dark; supported-color-schemes: light dark;
} }
@if(isset($settings) && $settings->email_style === 'dark') @media screen and (prefers-color-scheme: light ) {
body {
background-color: #1a1a1a !important;
color: #ffffff !important;
}
div, tr, td {
border-color: #222222 !important;
}
h1, h2, h3, p, td {
color: #ffffff !important;
}
p {
color: #bbbbbc !important;
}
.dark-bg-base {
background-color: #222222 !important;
}
.dark-bg {
background-color: #3a3a3c !important;
}
.dark-text-white p {
color: #ffffff !important;
}
hr {
border-color: #474849 !important;
}
@endif
/** Content-specific styles. **/ /** Content-specific styles. **/
#content .button { #content .button {
@ -94,42 +59,169 @@
#content .left { #content .left {
text-align: left !important; text-align: left !important;
} }
.body_style {
margin: 0;
padding: 0;
font-family: 'roboto', Arial, Helvetica, sans-serif;
color: #3b3b3b;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.logo-container {
border: 1px solid #c2c2c2;
border-bottom: none;
padding-bottom: 10px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.logo-style {
margin-top: 40px;
height: 40px;
display: block;
margin-left: auto;
margin-right: auto;
}
.buffer {
text-align: center;
margin-top: 25px;
margin-bottom: 10px;
}
#content {
border: 1px solid #c2c2c2;
border-top: none;
border-bottom: none;
padding: 20px;
text-align: center;
}
.link-button {
display: inline-block;
background-color: {{ $primary_color }};
color: #ffffff;
text-transform: uppercase;
letter-spacing: 2px;
text-decoration: none;
font-size: 13px;
font-weight: 600;
}
.signature_container {
text-align: center;
padding-top: 10px;
padding-bottom: 25px;
background-color: #f9f9f9;
border: 1px solid #c2c2c2;
border-top: none;
border-bottom-color: #f9f9f9;
}
.signature {
font-size: 15px;
color: #2e2e2e;
font-family: 'roboto', Arial, Helvetica, sans-serif;
font-weight: 400;
margin-bottom: 30px;
}
.footer {
padding-top: 10px;
padding-bottom: 10px;
background-color: #242424;
border: 1px solid #c2c2c2;
border-top-color: #242424;
border-bottom-color: #242424;
}
.copyright {
text-align: center;
color: #ffffff;
font-size: 10px;
font-family: Verdana, Geneva, Tahoma, sans-serif;
}
.dark-bg-base {
background-color: #242424 !important;
}
.dark-bg {
background-color: #242424 !important;
}
}
@media screen and (prefers-color-scheme: dark ) {
:root {
background-color: #fff;
}
.body-style {
margin: 0;
padding: 0;
font-family: 'roboto', Arial, Helvetica, sans-serif;
color: #3b3b3b;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background-color: #fff;
}
.dark-bg-base {
background-color: #fff !important;
}
.dark-bg {
background-color: #fff !important;
}
#content .button {
display: inline-block;
background-color: {{ $primary_color }};
color: #ffffff;
text-transform: uppercase;
letter-spacing: 2px;
text-decoration: none;
font-size: 13px;
padding: 15px 50px;
font-weight: 600;
margin-bottom: 30px;
}
}
</style> </style>
</head> </head>
<body <body class="body-style">
style="margin: 0; padding: 0; font-family: 'roboto', Arial, Helvetica, sans-serif; color: #3b3b3b;-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;">
<table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%"> <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr> <tr>
<td> <td>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="570" <table align="center" border="0" cellpadding="0" cellspacing="0" width="570" style="border-collapse: collapse;" class="dark-bg-base">
style="border-collapse: collapse;" class="dark-bg-base">
<tr> <tr>
<div style="text-align: center;margin-top: 25px; margin-bottom: 10px;"></div> <div class="buffer"></div>
</tr> </tr>
<tr> <tr>
<td> <td>
<div <div class="logo-container">
style="border: 1px solid #c2c2c2; border-bottom: none; padding-bottom: 10px; border-top-left-radius: 3px; border-top-right-radius: 3px;">
<img <img class="logo-style" alt="" src="{{ $logo ?? '' }}"/>
style="margin-top: 40px; height: 40px; display: block; margin-left: auto; margin-right: auto;"
alt=""
src="{{ $logo ?? '' }}"/>
</div> </div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
<div style="border: 1px solid #c2c2c2; border-top: none; border-bottom: none; padding: 20px; text-align: center" id="content"> <div id="content">
<div style="padding-top: 10px;"></div> <div style="padding-top: 10px;"></div>
{{ $slot ?? '' }} {{ $slot ?? '' }}
{!! $body ?? '' !!} {!! $body ?? '' !!}
<div> <div>
<a href="#" <a href="#" class="link-button">
style="display: inline-block;background-color: {{ $primary_color }}; color: #ffffff; text-transform: uppercase;letter-spacing: 2px; text-decoration: none; font-size: 13px; font-weight: 600;">
</a> </a>
</div> </div>
</div> </div>
@ -138,18 +230,17 @@
<tr> <tr>
<td> <td>
<div class="dark-bg dark-text-white" <div class="dark-bg dark-text-white signature_container" >
style="text-align: center; padding-top: 10px; padding-bottom: 25px; background-color: #f9f9f9; border: 1px solid #c2c2c2; border-top: none; border-bottom-color: #f9f9f9;">
@isset($signature) @isset($signature)
<p style="font-size: 15px; color: #2e2e2e; font-family: 'roboto', Arial, Helvetica, sans-serif; font-weight: 400; margin-bottom: 30px;"> <p class="signature">
{!! nl2br($signature) !!} {!! nl2br($signature) !!}
</p> </p>
@endisset @endisset
@if(isset($company) && $company instanceof \App\Models\Company) @if(isset($company) && $company instanceof \App\Models\Company)
<p style="font-size: 15px; color: #2e2e2e; font-family: 'roboto', Arial, Helvetica, sans-serif; font-weight: 500; margin-bottom:0;"> <p class="signature" style="margin-bottom:0;">
{{ $company->present()->name() }}</p> {{ $company->present()->name() }}</p>
<p style="font-size: 15px; color: #2e2e2e; font-family: 'roboto', Arial, Helvetica, sans-serif; font-weight: 400; margin-top: 5px;"> <p class="signature" style="margin-top: 5px;">
<span>{{ $company->settings->phone }}</span> <span>{{ $company->settings->phone }}</span>
<span style="font-weight: 500"> {{ $company->settings->website }}</span> <span style="font-weight: 500"> {{ $company->settings->website }}</span>
</p> </p>
@ -160,19 +251,17 @@
<tr> <tr>
<td> <td>
<div class="dark-bg-base" <div class="dark-bg-base footer">
style="padding-top: 10px;padding-bottom: 10px; background-color: #242424; border: 1px solid #c2c2c2; border-top-color: #242424; border-bottom-color: #242424;">
@if(isset($company)) @if(isset($company))
@if($company->account->isPaid()) @if($company->account->isPaid())
<p style="text-align: center; color: #ffffff; font-size: 10px; <p class="copyright">© {{ date('Y') }} {{ $company->present()->name() }}, All Rights Reserved</p>
font-family: Verdana, Geneva, Tahoma, sans-serif;"{{ date('Y') }} {{ $company->present()->name() }}, All Rights Reserved</p>
@else @else
<p style="text-align: center; color: #ffffff; font-size: 10px; font-family: Verdana, Geneva, Tahoma, sans-serif;"> <p class="copyright">
© {{ date('Y') }} Invoice Ninja, All Rights Reserved © {{ date('Y') }} Invoice Ninja, All Rights Reserved
</p> </p>
@endif @endif
@else @else
<p style="text-align: center; color: #ffffff; font-size: 10px; font-family: Verdana, Geneva, Tahoma, sans-serif;"> <p class="copyright">
© {{ date('Y') }} Invoice Ninja, All Rights Reserved © {{ date('Y') }} Invoice Ninja, All Rights Reserved
</p> </p>
@endif @endif
@ -184,5 +273,4 @@
</tr> </tr>
</table> </table>
</body> </body>
</html> </html>