2021-08-27 17:32:20 +02:00
/ * *
* Invoice Ninja ( https : //invoiceninja.com).
*
* @ link https : //github.com/invoiceninja/invoiceninja source repository
*
* @ copyright Copyright ( c ) 2021. Invoice Ninja LLC ( https : //invoiceninja.com)
*
* @ license https : //www.elastic.co/licensing/elastic-license
* /
window . braintree . client . create ( {
authorization : document . querySelector ( 'meta[name="client-token"]' ) ? . content
} ) . then ( function ( clientInstance ) {
return braintree . usBankAccount . create ( {
client : clientInstance
} ) ;
} ) . then ( function ( usBankAccountInstance ) {
document
. getElementById ( 'authorize-bank-account' )
? . addEventListener ( 'click' , ( e ) => {
e . target . parentElement . disabled = true ;
document . getElementById ( 'errors' ) . hidden = true ;
document . getElementById ( 'errors' ) . textContent = '' ;
let bankDetails = {
accountNumber : document . getElementById ( 'account-number' ) . value ,
routingNumber : document . getElementById ( 'routing-number' ) . value ,
accountType : document . querySelector ( 'input[name="account-type"]:checked' ) . value ,
ownershipType : document . querySelector ( 'input[name="ownership-type"]:checked' ) . value ,
billingAddress : {
streetAddress : document . getElementById ( 'billing-street-address' ) . value ,
extendedAddress : document . getElementById ( 'billing-extended-address' ) . value ,
locality : document . getElementById ( 'billing-locality' ) . value ,
region : document . getElementById ( 'billing-region' ) . value ,
postalCode : document . getElementById ( 'billing-postal-code' ) . value
}
}
if ( bankDetails . ownershipType === 'personal' ) {
let name = document . getElementById ( 'account-holder-name' ) . value . split ( ' ' , 2 ) ;
bankDetails . firstName = name [ 0 ] ;
bankDetails . lastName = name [ 1 ] ;
} else {
bankDetails . businessName = document . getElementById ( 'account-holder-name' ) . value ;
}
usBankAccountInstance . tokenize ( {
bankDetails ,
mandateText : 'By clicking ["Checkout"], I authorize Braintree, a service of PayPal, on behalf of [your business name here] (i) to verify my bank account information using bank information and consumer reports and (ii) to debit my bank account.'
} ) . then ( function ( payload ) {
document . querySelector ( 'input[name=nonce]' ) . value = payload . nonce ;
document . getElementById ( 'server_response' ) . submit ( ) ;
} )
. catch ( function ( error ) {
e . target . parentElement . disabled = false ;
document . getElementById ( 'errors' ) . textContent = ` ${ error . details . originalError . message } ${ error . details . originalError . details . originalError [ 0 ] . message } ` ;
document . getElementById ( 'errors' ) . hidden = false ;
} ) ;
} ) ;
} ) . catch ( function ( err ) {
2022-01-09 06:33:34 +01:00
console . log ( err . message ) ;
// document.getElementById('errors').textContent = `${err.details.originalError.message} ${err.details.originalError.details.originalError[0].message}`;
// document.getElementById('errors').hidden = false;
2021-08-27 17:32:20 +02:00
} ) ;