mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 22:07:33 -05:00 
			
		
		
		
	
						commit
						f3bf43ed40
					
				@ -1 +1 @@
 | 
			
		||||
5.5.23
 | 
			
		||||
5.5.24
 | 
			
		||||
@ -39,6 +39,7 @@ class CreditCard
 | 
			
		||||
    public function authorizeView(array $data)
 | 
			
		||||
    {
 | 
			
		||||
        $data['gateway'] = $this->braintree;
 | 
			
		||||
        $data['threeds_enable'] = $this->braintree->company_gateway->getConfigField('threeds') ? "true" : "false";
 | 
			
		||||
 | 
			
		||||
        return render('gateways.braintree.credit_card.authorize', $data);
 | 
			
		||||
    }
 | 
			
		||||
@ -54,10 +55,31 @@ class CreditCard
 | 
			
		||||
     * @param array $data
 | 
			
		||||
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    private function threeDParameters(array $data)
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
            'amount' => $data['amount_with_fee'],
 | 
			
		||||
            'email' => $this->braintree->client->present()->email(),
 | 
			
		||||
            'billingAddress' => [
 | 
			
		||||
                'givenName' => $this->braintree->client->present()->first_name() ?: $this->braintree->client->present()->name(),
 | 
			
		||||
                'surname' => $this->braintree->client->present()->last_name() ?: '',
 | 
			
		||||
                'phoneNumber' => $this->braintree->client->present()->phone(),
 | 
			
		||||
                'streetAddress' => $this->braintree->client->address1 ?: '',
 | 
			
		||||
                'extendedAddress' =>$this->braintree->client->address2 ?: '',
 | 
			
		||||
                'locality' => $this->braintree->client->city ?: '',
 | 
			
		||||
                'postalCode' => $this->braintree->client->postal_code ?: '',
 | 
			
		||||
                'countryCodeAlpha2' => $this->braintree->client->country ? $this->braintree->client->country->iso_3166_2 : 'US',
 | 
			
		||||
            ]
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function paymentView(array $data)
 | 
			
		||||
    {
 | 
			
		||||
        $data['gateway'] = $this->braintree;
 | 
			
		||||
        $data['client_token'] = $this->braintree->gateway->clientToken()->generate();
 | 
			
		||||
        $data['threeds'] = $this->threeDParameters($data);
 | 
			
		||||
        $data['threeds_enable'] = $this->braintree->company_gateway->getConfigField('threeds') ? "true" : "false";
 | 
			
		||||
        
 | 
			
		||||
        if ($this->braintree->company_gateway->getConfigField('merchantAccountId')) {
 | 
			
		||||
            /** https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#merchant_account_id */
 | 
			
		||||
@ -78,6 +100,8 @@ class CreditCard
 | 
			
		||||
     */
 | 
			
		||||
    public function paymentResponse(PaymentResponseRequest $request)
 | 
			
		||||
    {
 | 
			
		||||
        // nlog($request->all());
 | 
			
		||||
        
 | 
			
		||||
        $state = [
 | 
			
		||||
            'server_response' => json_decode($request->gateway_response),
 | 
			
		||||
            'payment_hash' => $request->payment_hash,
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,7 @@ use Checkout\CheckoutArgumentException;
 | 
			
		||||
use Checkout\CheckoutAuthorizationException;
 | 
			
		||||
use Checkout\CheckoutDefaultSdk;
 | 
			
		||||
use Checkout\CheckoutFourSdk;
 | 
			
		||||
use Checkout\Common\CustomerRequest;
 | 
			
		||||
use Checkout\Customers\CustomerRequest;
 | 
			
		||||
use Checkout\Customers\Four\CustomerRequest as FourCustomerRequest;
 | 
			
		||||
use Checkout\Environment;
 | 
			
		||||
use Checkout\Library\Exceptions\CheckoutHttpException;
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,8 @@ class TaskRepository extends BaseRepository
 | 
			
		||||
 | 
			
		||||
    public $new_task = true;
 | 
			
		||||
 | 
			
		||||
    private $completed = true;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Saves the task and its contacts.
 | 
			
		||||
     *
 | 
			
		||||
 | 
			
		||||
@ -14,8 +14,8 @@ return [
 | 
			
		||||
    'require_https' => env('REQUIRE_HTTPS', true),
 | 
			
		||||
    'app_url' => rtrim(env('APP_URL', ''), '/'),
 | 
			
		||||
    'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
 | 
			
		||||
    'app_version' => '5.5.23',
 | 
			
		||||
    'app_tag' => '5.5.23',
 | 
			
		||||
    'app_version' => '5.5.24',
 | 
			
		||||
    'app_tag' => '5.5.24',
 | 
			
		||||
    'minimum_client_version' => '5.0.16',
 | 
			
		||||
    'terms_version' => '1.0.1',
 | 
			
		||||
    'api_secret' => env('API_SECRET', ''),
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,50 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
use App\Models\CompanyGateway;
 | 
			
		||||
use App\Models\Gateway;
 | 
			
		||||
use Illuminate\Database\Migrations\Migration;
 | 
			
		||||
use Illuminate\Database\Schema\Blueprint;
 | 
			
		||||
use Illuminate\Support\Facades\Schema;
 | 
			
		||||
 | 
			
		||||
return new class extends Migration
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Run the migrations.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function up()
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        $g = Gateway::find(50);
 | 
			
		||||
 | 
			
		||||
        if($g)
 | 
			
		||||
        {
 | 
			
		||||
            $fields = json_decode($g->fields);
 | 
			
		||||
            $fields->threeds = false;
 | 
			
		||||
 | 
			
		||||
            $g->fields = json_encode($fields);
 | 
			
		||||
            $g->save();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        CompanyGateway::where('gateway_key', 'f7ec488676d310683fb51802d076d713')->cursor()->each(function ($cg){
 | 
			
		||||
 | 
			
		||||
            $config = $cg->getConfig();
 | 
			
		||||
            $config->threeds = false;
 | 
			
		||||
            $cg->setConfig($config);
 | 
			
		||||
 | 
			
		||||
            $cg->save();
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Reverse the migrations.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function down()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@ -74,7 +74,7 @@ class PaymentLibrariesSeeder extends Seeder
 | 
			
		||||
            ['id' => 47, 'name' => 'Secure Trading', 'provider' => 'SecureTrading', 'key' => '231cb401487b9f15babe04b1ac4f7a27', 'fields' => '{"siteReference":"","username":"","password":"","applyThreeDSecure":false,"accountType":"ECOM"}'],
 | 
			
		||||
            ['id' => 48, 'name' => 'SecPay', 'provider' => 'SecPay', 'key' => 'bad8699d581d9fa040e59c0bb721a76c', 'fields' => '{"mid":"","vpnPswd":"","remotePswd":"","usageType":"","confirmEmail":"","testStatus":"true","mailCustomer":"true","additionalOptions":""}'],
 | 
			
		||||
            ['id' => 49, 'name' => 'WePay', 'provider' => 'WePay', 'is_offsite' => false, 'sort_order' => 3, 'key' => '8fdeed552015b3c7b44ed6c8ebd9e992', 'fields' => '{"accountId":"","accessToken":"","type":"goods","testMode":false,"feePayer":"payee"}'],
 | 
			
		||||
            ['id' => 50, 'name' => 'Braintree', 'provider' => 'Braintree', 'sort_order' => 3, 'key' => 'f7ec488676d310683fb51802d076d713', 'fields' => '{"merchantId":"","merchantAccountId":"","publicKey":"","privateKey":"","testMode":false}'],
 | 
			
		||||
            ['id' => 50, 'name' => 'Braintree', 'provider' => 'Braintree', 'sort_order' => 3, 'key' => 'f7ec488676d310683fb51802d076d713', 'fields' => '{"merchantId":"","merchantAccountId":"","publicKey":"","privateKey":"","testMode":false,"threeds":false}'],
 | 
			
		||||
            ['id' => 51, 'name' => 'FirstData Payeezy', 'provider' => 'FirstData_Payeezy', 'key' => '30334a52fb698046572c627ca10412e8', 'fields' => '{"gatewayId":"","password":"","keyId":"","hmac":"","testMode":false}'],
 | 
			
		||||
            ['id' => 52, 'name' => 'GoCardless', 'provider' => 'GoCardless', 'sort_order' => 9, 'is_offsite' => true, 'key' => 'b9886f9257f0c6ee7c302f1c74475f6c', 'fields' => '{"accessToken":"","webhookSecret":"","testMode":true}'],
 | 
			
		||||
            ['id' => 53, 'name' => 'PagSeguro', 'provider' => 'PagSeguro', 'key' => 'ef498756b54db63c143af0ec433da803', 'fields' => '{"email":"","token":"","sandbox":false}'],
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								public/css/app.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								public/css/app.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -1,2 +1,2 @@
 | 
			
		||||
/*! For license information please see braintree-credit-card.js.LICENSE.txt */
 | 
			
		||||
(()=>{function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}(new(function(){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,a,o;return n=t,(a=[{key:"initBraintreeDataCollector",value:function(){window.braintree.client.create({authorization:document.querySelector("meta[name=client-token]").content},(function(e,t){window.braintree.dataCollector.create({client:t,paypal:!0},(function(e,t){e||(document.querySelector("input[name=client-data]").value=t.deviceData)}))}))}},{key:"mountBraintreePaymentWidget",value:function(){window.braintree.dropin.create({authorization:document.querySelector("meta[name=client-token]").content,container:"#dropin-container"},this.handleCallback)}},{key:"handleCallback",value:function(e,t){if(e)console.error(e);else{var n=document.getElementById("pay-now");n.addEventListener("click",(function(){t.requestPaymentMethod((function(e,t){if(e)return console.error(e);n.disabled=!0,n.querySelector("svg").classList.remove("hidden"),n.querySelector("span").classList.add("hidden"),document.querySelector("input[name=gateway_response]").value=JSON.stringify(t);var a=document.querySelector('input[name="token-billing-checkbox"]:checked');a&&(document.querySelector('input[name="store_card"]').value=a.value),document.getElementById("server-response").submit()}))}))}}},{key:"handle",value:function(){this.initBraintreeDataCollector(),this.mountBraintreePaymentWidget(),Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach((function(e){return e.addEventListener("click",(function(e){document.getElementById("dropin-container").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=e.target.dataset.token,document.getElementById("pay-now-with-token").classList.remove("hidden"),document.getElementById("pay-now").classList.add("hidden")}))})),document.getElementById("toggle-payment-with-credit-card").addEventListener("click",(function(e){document.getElementById("dropin-container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value="",document.getElementById("pay-now-with-token").classList.add("hidden"),document.getElementById("pay-now").classList.remove("hidden")}));var e=document.getElementById("pay-now-with-token");e.addEventListener("click",(function(t){e.disabled=!0,e.querySelector("svg").classList.remove("hidden"),e.querySelector("span").classList.add("hidden"),document.getElementById("server-response").submit()}))}}])&&e(n.prototype,a),o&&e(n,o),Object.defineProperty(n,"prototype",{writable:!1}),t}())).handle()})();
 | 
			
		||||
(()=>{function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}(new(function(){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,a,r;return n=t,(a=[{key:"initBraintreeDataCollector",value:function(){window.braintree.client.create({authorization:document.querySelector("meta[name=client-token]").content},(function(e,t){window.braintree.dataCollector.create({client:t,paypal:!0},(function(e,t){e||(document.querySelector("input[name=client-data]").value=t.deviceData)}))}))}},{key:"mountBraintreePaymentWidget",value:function(){window.braintree.dropin.create({authorization:document.querySelector("meta[name=client-token]").content,container:"#dropin-container",threeDSecure:"true"===document.querySelector("input[name=threeds_enable]").value.toLowerCase()},this.handleCallback)}},{key:"handleCallback",value:function(e,t){if(e)console.error(e);else{var n=document.getElementById("pay-now");params=JSON.parse(document.querySelector("input[name=threeds]").value),n.addEventListener("click",(function(){t.requestPaymentMethod({threeDSecure:{amount:params.amount,email:params.email,billingAddress:{givenName:params.billingAddress.givenName,surname:params.billingAddress.surname,phoneNumber:params.billingAddress.phoneNumber,streetAddress:params.billingAddress.streetAddress,extendedAddress:params.billingAddress.extendedAddress,locality:params.billingAddress.locality,region:params.billingAddress.region,postalCode:params.billingAddress.postalCode,countryCodeAlpha2:params.billingAddress.countryCodeAlpha2}}},(function(e,t){if(e)return console.log(e),dropin.clearSelectedPaymentMethod(),void alert("There was a problem verifying this card, please contact your merchant");if("true"===document.querySelector("input[name=threeds_enable]").value&&!t.liabilityShifted)return console.log("Liability did not shift",t),void alert("There was a problem verifying this card, please contact your merchant");n.disabled=!0,n.querySelector("svg").classList.remove("hidden"),n.querySelector("span").classList.add("hidden"),document.querySelector("input[name=gateway_response]").value=JSON.stringify(t);var a=document.querySelector('input[name="token-billing-checkbox"]:checked');a&&(document.querySelector('input[name="store_card"]').value=a.value),document.getElementById("server-response").submit()}))}))}}},{key:"handle",value:function(){this.initBraintreeDataCollector(),this.mountBraintreePaymentWidget(),Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach((function(e){return e.addEventListener("click",(function(e){document.getElementById("dropin-container").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=e.target.dataset.token,document.getElementById("pay-now-with-token").classList.remove("hidden"),document.getElementById("pay-now").classList.add("hidden")}))})),document.getElementById("toggle-payment-with-credit-card").addEventListener("click",(function(e){document.getElementById("dropin-container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value="",document.getElementById("pay-now-with-token").classList.add("hidden"),document.getElementById("pay-now").classList.remove("hidden")}));var e=document.getElementById("pay-now-with-token");e.addEventListener("click",(function(t){e.disabled=!0,e.querySelector("svg").classList.remove("hidden"),e.querySelector("span").classList.add("hidden"),document.getElementById("server-response").submit()}))}}])&&e(n.prototype,a),r&&e(n,r),Object.defineProperty(n,"prototype",{writable:!1}),t}())).handle()})();
 | 
			
		||||
@ -1,50 +1,48 @@
 | 
			
		||||
{
 | 
			
		||||
    "/js/app.js": "/js/app.js?id=384185bf9d293949134d",
 | 
			
		||||
    "/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=9fb77e87fe0f85a36705",
 | 
			
		||||
    "/js/clients/payments/authorize-credit-card-payment.js": "/js/clients/payments/authorize-credit-card-payment.js?id=803182f668c39d631ca5",
 | 
			
		||||
    "/js/clients/payments/forte-credit-card-payment.js": "/js/clients/payments/forte-credit-card-payment.js?id=6e9f466c5504d3753f9b",
 | 
			
		||||
    "/js/clients/payments/forte-ach-payment.js": "/js/clients/payments/forte-ach-payment.js?id=1d10fcc52a1f15858e5d",
 | 
			
		||||
    "/js/clients/payments/stripe-ach.js": "/js/clients/payments/stripe-ach.js?id=7bed15f51bca764378d9",
 | 
			
		||||
    "/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=d4f86ddee4e8a1d6e971",
 | 
			
		||||
    "/js/clients/purchase_orders/action-selectors.js": "/js/clients/purchase_orders/action-selectors.js?id=160b8161599fc2429b44",
 | 
			
		||||
    "/js/clients/purchase_orders/accept.js": "/js/clients/purchase_orders/accept.js?id=ddd4aa4069ea79411eee",
 | 
			
		||||
    "/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=28221de8f1cb37f845ba",
 | 
			
		||||
    "/js/clients/payments/stripe-sofort.js": "/js/clients/payments/stripe-sofort.js?id=1c5493a4c53a5b862d07",
 | 
			
		||||
    "/js/clients/payments/stripe-alipay.js": "/js/clients/payments/stripe-alipay.js?id=0274ab4f8d2b411f2a2f",
 | 
			
		||||
    "/js/clients/payments/checkout-credit-card.js": "/js/clients/payments/checkout-credit-card.js?id=4bd34a0b160f6f29b309",
 | 
			
		||||
    "/js/clients/quotes/action-selectors.js": "/js/clients/quotes/action-selectors.js?id=6fb63bae43d077b5061f",
 | 
			
		||||
    "/js/clients/quotes/approve.js": "/js/clients/quotes/approve.js?id=cdc76607aaf0b47a5a4e",
 | 
			
		||||
    "/js/clients/payments/stripe-credit-card.js": "/js/clients/payments/stripe-credit-card.js?id=809de47258a681f0ffeb",
 | 
			
		||||
    "/js/setup/setup.js": "/js/setup/setup.js?id=87367cce4927b42a92de",
 | 
			
		||||
    "/js/clients/payments/card-js.min.js": "/js/clients/payments/card-js.min.js?id=8ce33c3deae058ad314f",
 | 
			
		||||
    "/js/clients/shared/pdf.js": "/js/clients/shared/pdf.js?id=be5307abc990bb44f2f9",
 | 
			
		||||
    "/js/clients/shared/multiple-downloads.js": "/js/clients/shared/multiple-downloads.js?id=c2caa29f753ad1f3a12c",
 | 
			
		||||
    "/js/clients/linkify-urls.js": "/js/clients/linkify-urls.js?id=2b2fe55f926789abc52f",
 | 
			
		||||
    "/js/clients/payments/braintree-credit-card.js": "/js/clients/payments/braintree-credit-card.js?id=778e63bdcb572b372ad4",
 | 
			
		||||
    "/js/clients/payments/braintree-paypal.js": "/js/clients/payments/braintree-paypal.js?id=5764a8d406c1eda848d0",
 | 
			
		||||
    "/js/clients/payments/wepay-credit-card.js": "/js/clients/payments/wepay-credit-card.js?id=bec9106c8ba5a973acee",
 | 
			
		||||
    "/js/clients/payment_methods/wepay-bank-account.js": "/js/clients/payment_methods/wepay-bank-account.js?id=b8706d7de6127f184ad1",
 | 
			
		||||
    "/js/clients/payments/paytrace-credit-card.js": "/js/clients/payments/paytrace-credit-card.js?id=e0b1231a7bf625267283",
 | 
			
		||||
    "/js/clients/payments/mollie-credit-card.js": "/js/clients/payments/mollie-credit-card.js?id=bbab588ed009a93345be",
 | 
			
		||||
    "/js/clients/payments/eway-credit-card.js": "/js/clients/payments/eway-credit-card.js?id=31d068e55757636f3483",
 | 
			
		||||
    "/js/clients/payment_methods/braintree-ach.js": "/js/clients/payment_methods/braintree-ach.js?id=6d8c7fd66d911b20cdc4",
 | 
			
		||||
    "/js/clients/payments/square-credit-card.js": "/js/clients/payments/square-credit-card.js?id=b180fd6378d3723d3e91",
 | 
			
		||||
    "/js/clients/statements/view.js": "/js/clients/statements/view.js?id=7971b212e8a849fe36bf",
 | 
			
		||||
    "/js/clients/payments/razorpay-aio.js": "/js/clients/payments/razorpay-aio.js?id=c36ab5621413ef1de7c8",
 | 
			
		||||
    "/js/clients/payments/stripe-sepa.js": "/js/clients/payments/stripe-sepa.js?id=b258636d8bae366e9d8f",
 | 
			
		||||
    "/js/clients/payment_methods/authorize-checkout-card.js": "/js/clients/payment_methods/authorize-checkout-card.js?id=e43f862d70d8710761f0",
 | 
			
		||||
    "/js/clients/payments/stripe-giropay.js": "/js/clients/payments/stripe-giropay.js?id=72ad4ad19297f211c2e6",
 | 
			
		||||
    "/js/clients/payments/stripe-acss.js": "/js/clients/payments/stripe-acss.js?id=90b1805b1ca0264474b3",
 | 
			
		||||
    "/js/clients/payments/stripe-bancontact.js": "/js/clients/payments/stripe-bancontact.js?id=03e5d7ee187e76b0b7c1",
 | 
			
		||||
    "/js/clients/payments/stripe-becs.js": "/js/clients/payments/stripe-becs.js?id=de2bd0ef2859e19e4f98",
 | 
			
		||||
    "/js/clients/payments/stripe-eps.js": "/js/clients/payments/stripe-eps.js?id=213d9ad34a79144a0d33",
 | 
			
		||||
    "/js/clients/payments/stripe-ideal.js": "/js/clients/payments/stripe-ideal.js?id=0a6b434e3849db26c35a",
 | 
			
		||||
    "/js/clients/payments/stripe-przelewy24.js": "/js/clients/payments/stripe-przelewy24.js?id=3d53d2f7d0291d9f92cf",
 | 
			
		||||
    "/js/clients/payments/stripe-browserpay.js": "/js/clients/payments/stripe-browserpay.js?id=db71055862995fd6ae21",
 | 
			
		||||
    "/js/clients/payments/stripe-fpx.js": "/js/clients/payments/stripe-fpx.js?id=914a6846ad1e5584635e",
 | 
			
		||||
    "/css/app.css": "/css/app.css?id=ba50afdf2f898ddd8e59",
 | 
			
		||||
    "/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad",
 | 
			
		||||
    "/vendor/clipboard.min.js": "/vendor/clipboard.min.js?id=15f52a1ee547f2bdd46e",
 | 
			
		||||
    "/js/admin.js": "/js/admin.js?id=003930085af69b13a86a",
 | 
			
		||||
    "/css/admin.css": "/css/admin.css?id=301634d751d95d3592dd"
 | 
			
		||||
    "/js/app.js": "/js/app.js?id=384185bf9d293949134d09b890c81369",
 | 
			
		||||
    "/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=9fb77e87fe0f85a367050e08f79ec9df",
 | 
			
		||||
    "/js/clients/payments/authorize-credit-card-payment.js": "/js/clients/payments/authorize-credit-card-payment.js?id=803182f668c39d631ca5c55437876da4",
 | 
			
		||||
    "/js/clients/payments/forte-credit-card-payment.js": "/js/clients/payments/forte-credit-card-payment.js?id=6e9f466c5504d3753f9b4ffc6f947095",
 | 
			
		||||
    "/js/clients/payments/forte-ach-payment.js": "/js/clients/payments/forte-ach-payment.js?id=1d10fcc52a1f15858e5da216f1df45ec",
 | 
			
		||||
    "/js/clients/payments/stripe-ach.js": "/js/clients/payments/stripe-ach.js?id=7bed15f51bca764378d9a3aa605b8664",
 | 
			
		||||
    "/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=d4f86ddee4e8a1d6e9719010aa0fe62b",
 | 
			
		||||
    "/js/clients/purchase_orders/action-selectors.js": "/js/clients/purchase_orders/action-selectors.js?id=160b8161599fc2429b449b0970d3ba6c",
 | 
			
		||||
    "/js/clients/purchase_orders/accept.js": "/js/clients/purchase_orders/accept.js?id=ddd4aa4069ea79411eeec367b7d5986d",
 | 
			
		||||
    "/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=28221de8f1cb37f845ba4ec59bcd8867",
 | 
			
		||||
    "/js/clients/payments/stripe-sofort.js": "/js/clients/payments/stripe-sofort.js?id=1c5493a4c53a5b862d07ee1818179ea9",
 | 
			
		||||
    "/js/clients/payments/stripe-alipay.js": "/js/clients/payments/stripe-alipay.js?id=0274ab4f8d2b411f2a2fe5142301e7af",
 | 
			
		||||
    "/js/clients/payments/checkout-credit-card.js": "/js/clients/payments/checkout-credit-card.js?id=4bd34a0b160f6f29b3096d870ac4d308",
 | 
			
		||||
    "/js/clients/quotes/action-selectors.js": "/js/clients/quotes/action-selectors.js?id=6fb63bae43d077b5061f4dadfe8dffc8",
 | 
			
		||||
    "/js/clients/quotes/approve.js": "/js/clients/quotes/approve.js?id=cdc76607aaf0b47a5a4e554e4177713d",
 | 
			
		||||
    "/js/clients/payments/stripe-credit-card.js": "/js/clients/payments/stripe-credit-card.js?id=809de47258a681f0ffebe787dd6a9a93",
 | 
			
		||||
    "/js/setup/setup.js": "/js/setup/setup.js?id=87367cce4927b42a92defdbae7a64711",
 | 
			
		||||
    "/js/clients/payments/card-js.min.js": "/js/clients/payments/card-js.min.js?id=8ce33c3deae058ad314fb8357e5be63b",
 | 
			
		||||
    "/js/clients/shared/pdf.js": "/js/clients/shared/pdf.js?id=be5307abc990bb44f2f92628103b1d98",
 | 
			
		||||
    "/js/clients/shared/multiple-downloads.js": "/js/clients/shared/multiple-downloads.js?id=c2caa29f753ad1f3a12ca45acddacd72",
 | 
			
		||||
    "/js/clients/linkify-urls.js": "/js/clients/linkify-urls.js?id=2b2fe55f926789abc52f19111006e1ec",
 | 
			
		||||
    "/js/clients/payments/braintree-credit-card.js": "/js/clients/payments/braintree-credit-card.js?id=cf25867ef09115b7f5a209819ba79bbf",
 | 
			
		||||
    "/js/clients/payments/braintree-paypal.js": "/js/clients/payments/braintree-paypal.js?id=5764a8d406c1eda848d073f10d178626",
 | 
			
		||||
    "/js/clients/payments/wepay-credit-card.js": "/js/clients/payments/wepay-credit-card.js?id=bec9106c8ba5a973acee4cfc47301324",
 | 
			
		||||
    "/js/clients/payment_methods/wepay-bank-account.js": "/js/clients/payment_methods/wepay-bank-account.js?id=b8706d7de6127f184ad19b2a810880be",
 | 
			
		||||
    "/js/clients/payments/paytrace-credit-card.js": "/js/clients/payments/paytrace-credit-card.js?id=e0b1231a7bf6252672836222285c0f52",
 | 
			
		||||
    "/js/clients/payments/mollie-credit-card.js": "/js/clients/payments/mollie-credit-card.js?id=bbab588ed009a93345bec520cbe66869",
 | 
			
		||||
    "/js/clients/payments/eway-credit-card.js": "/js/clients/payments/eway-credit-card.js?id=31d068e55757636f34834bc2494250df",
 | 
			
		||||
    "/js/clients/payment_methods/braintree-ach.js": "/js/clients/payment_methods/braintree-ach.js?id=6d8c7fd66d911b20cdc4248e33db1b3a",
 | 
			
		||||
    "/js/clients/payments/square-credit-card.js": "/js/clients/payments/square-credit-card.js?id=b180fd6378d3723d3e9133e0b1943ac6",
 | 
			
		||||
    "/js/clients/statements/view.js": "/js/clients/statements/view.js?id=7971b212e8a849fe36bfe915f81023bd",
 | 
			
		||||
    "/js/clients/payments/razorpay-aio.js": "/js/clients/payments/razorpay-aio.js?id=c36ab5621413ef1de7c864bc8eb7439e",
 | 
			
		||||
    "/js/clients/payments/stripe-sepa.js": "/js/clients/payments/stripe-sepa.js?id=b258636d8bae366e9d8f54274f437181",
 | 
			
		||||
    "/js/clients/payment_methods/authorize-checkout-card.js": "/js/clients/payment_methods/authorize-checkout-card.js?id=e43f862d70d8710761f0856e528ec3d1",
 | 
			
		||||
    "/js/clients/payments/stripe-giropay.js": "/js/clients/payments/stripe-giropay.js?id=72ad4ad19297f211c2e6d0fa1fa1f76d",
 | 
			
		||||
    "/js/clients/payments/stripe-acss.js": "/js/clients/payments/stripe-acss.js?id=90b1805b1ca0264474b38054a2664c5b",
 | 
			
		||||
    "/js/clients/payments/stripe-bancontact.js": "/js/clients/payments/stripe-bancontact.js?id=03e5d7ee187e76b0b7c16bfa91804a8a",
 | 
			
		||||
    "/js/clients/payments/stripe-becs.js": "/js/clients/payments/stripe-becs.js?id=de2bd0ef2859e19e4f98ea9d6d11cb54",
 | 
			
		||||
    "/js/clients/payments/stripe-eps.js": "/js/clients/payments/stripe-eps.js?id=213d9ad34a79144a0d3345cb6a262e95",
 | 
			
		||||
    "/js/clients/payments/stripe-ideal.js": "/js/clients/payments/stripe-ideal.js?id=0a6b434e3849db26c35a143e0347e914",
 | 
			
		||||
    "/js/clients/payments/stripe-przelewy24.js": "/js/clients/payments/stripe-przelewy24.js?id=3d53d2f7d0291d9f92cf7414dd2d351c",
 | 
			
		||||
    "/js/clients/payments/stripe-browserpay.js": "/js/clients/payments/stripe-browserpay.js?id=db71055862995fd6ae21becfc587a3de",
 | 
			
		||||
    "/js/clients/payments/stripe-fpx.js": "/js/clients/payments/stripe-fpx.js?id=914a6846ad1e5584635e7430fef76875",
 | 
			
		||||
    "/css/app.css": "/css/app.css?id=6bafb560444b3b12f8d1ce59bd7fd703",
 | 
			
		||||
    "/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ada60afcedcb7c",
 | 
			
		||||
    "/vendor/clipboard.min.js": "/vendor/clipboard.min.js?id=15f52a1ee547f2bdd46e56747332ca2d"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -28,25 +28,53 @@ class BraintreeCreditCard {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    mountBraintreePaymentWidget() {
 | 
			
		||||
 | 
			
		||||
        window.braintree.dropin.create({
 | 
			
		||||
            authorization: document.querySelector('meta[name=client-token]').content,
 | 
			
		||||
            container: '#dropin-container'
 | 
			
		||||
            container: '#dropin-container',
 | 
			
		||||
            threeDSecure: document.querySelector('input[name=threeds_enable]').value.toLowerCase() === 'true'
 | 
			
		||||
        }, this.handleCallback);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    handleCallback(error, dropinInstance) {
 | 
			
		||||
        if (error) {
 | 
			
		||||
            console.error(error);
 | 
			
		||||
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let payNow = document.getElementById('pay-now');
 | 
			
		||||
 | 
			
		||||
        params = JSON.parse(document.querySelector('input[name=threeds]').value);
 | 
			
		||||
 | 
			
		||||
        payNow.addEventListener('click', () => {
 | 
			
		||||
            dropinInstance.requestPaymentMethod((error, payload) => {
 | 
			
		||||
                if (error) {
 | 
			
		||||
                    return console.error(error);
 | 
			
		||||
            dropinInstance.requestPaymentMethod({
 | 
			
		||||
                threeDSecure: {
 | 
			
		||||
                  amount: params.amount,
 | 
			
		||||
                  email: params.email,
 | 
			
		||||
                  billingAddress: {
 | 
			
		||||
                    givenName: params.billingAddress.givenName, // ASCII-printable characters required, else will throw a validation error
 | 
			
		||||
                    surname: params.billingAddress.surname, // ASCII-printable characters required, else will throw a validation error
 | 
			
		||||
                    phoneNumber: params.billingAddress.phoneNumber,
 | 
			
		||||
                    streetAddress: params.billingAddress.streetAddress,
 | 
			
		||||
                    extendedAddress: params.billingAddress.extendedAddress,
 | 
			
		||||
                    locality: params.billingAddress.locality,
 | 
			
		||||
                    region: params.billingAddress.region,
 | 
			
		||||
                    postalCode: params.billingAddress.postalCode,
 | 
			
		||||
                    countryCodeAlpha2: params.billingAddress.countryCodeAlpha2 
 | 
			
		||||
                  }
 | 
			
		||||
                }
 | 
			
		||||
                }, function(err, payload) {
 | 
			
		||||
                    if (err) {
 | 
			
		||||
                      console.log(err);
 | 
			
		||||
                      dropin.clearSelectedPaymentMethod();
 | 
			
		||||
                      alert("There was a problem verifying this card, please contact your merchant");
 | 
			
		||||
                      return;
 | 
			
		||||
                    }
 | 
			
		||||
                      
 | 
			
		||||
                    if (document.querySelector('input[name=threeds_enable]').value === 'true' && !payload.liabilityShifted) {
 | 
			
		||||
                      console.log('Liability did not shift', payload);
 | 
			
		||||
                      alert("There was a problem verifying this card, please contact your merchant");
 | 
			
		||||
                      return;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                payNow.disabled = true;
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,9 @@
 | 
			
		||||
  </script>
 | 
			
		||||
   <script>
 | 
			
		||||
    window.flutterConfiguration = {
 | 
			
		||||
      @if(!\App\Utils\Ninja::isHosted())
 | 
			
		||||
        canvasKitBaseUrl: "{{ $canvas_path }}/canvaskit/"
 | 
			
		||||
      @endif
 | 
			
		||||
    };
 | 
			
		||||
  </script>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
@ -3,9 +3,12 @@
 | 
			
		||||
@section('gateway_head')
 | 
			
		||||
    <meta name="client-token" content="{{ $client_token ?? '' }}"/>
 | 
			
		||||
 | 
			
		||||
    <script src="https://js.braintreegateway.com/web/dropin/1.27.0/js/dropin.min.js"></script>
 | 
			
		||||
    <script src="https://js.braintreegateway.com/web/3.76.2/js/client.min.js"></script>
 | 
			
		||||
    <script src="https://js.braintreegateway.com/web/3.76.2/js/data-collector.min.js"></script>
 | 
			
		||||
    <script src='https://js.braintreegateway.com/web/dropin/1.33.4/js/dropin.min.js'></script>
 | 
			
		||||
    {{-- <script src="https://js.braintreegateway.com/web/3.76.2/js/client.min.js"></script> --}}
 | 
			
		||||
    <script src="https://js.braintreegateway.com/web/3.87.0/js/data-collector.min.js"></script>
 | 
			
		||||
 | 
			
		||||
<!-- Load the client component. -->
 | 
			
		||||
<script src='https://js.braintreegateway.com/web/3.87.0/js/client.min.js'></script>
 | 
			
		||||
 | 
			
		||||
    <style>
 | 
			
		||||
        [data-braintree-id="toggle"] {
 | 
			
		||||
@ -19,6 +22,7 @@
 | 
			
		||||
        @csrf
 | 
			
		||||
        <input type="hidden" name="gateway_response">
 | 
			
		||||
        <input type="hidden" name="store_card">
 | 
			
		||||
        <input type="hidden" name="threeds_enable" value="{!! $threeds_enable !!}">
 | 
			
		||||
        <input type="hidden" name="payment_hash" value="{{ $payment_hash }}">
 | 
			
		||||
 | 
			
		||||
        <input type="hidden" name="company_gateway_id" value="{{ $gateway->getCompanyGatewayId() }}">
 | 
			
		||||
@ -26,6 +30,7 @@
 | 
			
		||||
 | 
			
		||||
        <input type="hidden" name="token">
 | 
			
		||||
        <input type="hidden" name="client-data">
 | 
			
		||||
        <input type="hidden" name="threeds" value="{{ json_encode($threeds) }}">
 | 
			
		||||
    </form>
 | 
			
		||||
 | 
			
		||||
    @component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.payment_type')])
 | 
			
		||||
@ -72,3 +77,5 @@
 | 
			
		||||
@section('gateway_footer')
 | 
			
		||||
    <script src="{{ asset('js/clients/payments/braintree-credit-card.js') }}"></script>
 | 
			
		||||
@endsection
 | 
			
		||||
 | 
			
		||||
<div id="threeds"></div>
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
@endpush
 | 
			
		||||
 | 
			
		||||
@section('body')
 | 
			
		||||
    @livewire('required-client-info', ['fields' => method_exists($gateway, 'getClientRequiredFields') ? $gateway->getClientRequiredFields() : [], 'contact' => auth()->guard('contact')->user(), 'countries' => $countries, 'company' => $company, 'company_gateway_id' => $gateway->company_gateway->id])
 | 
			
		||||
    @livewire('required-client-info', ['fields' => method_exists($gateway, 'getClientRequiredFields') ? $gateway->getClientRequiredFields() : [], 'contact' => auth()->guard('contact')->user(), 'countries' => $countries, 'company' => $company, 'company_gateway_id' => $gateway->company_gateway ? $gateway->company_gateway->id : $gateway->id])
 | 
			
		||||
 | 
			
		||||
    <div class="container mx-auto grid grid-cols-12 opacity-25 pointer-events-none" data-ref="gateway-container">
 | 
			
		||||
        <div class="col-span-12 lg:col-span-6 lg:col-start-4 bg-white shadow rounded-lg">
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user