mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-04 10:03:34 -05:00 
			
		
		
		
	Clean up for paypal
This commit is contained in:
		
							parent
							
								
									72aadc0c16
								
							
						
					
					
						commit
						f79f31c89e
					
				@ -518,4 +518,60 @@ class PayPalBasePaymentDriver extends BaseDriver
 | 
			
		||||
        PayPalWebhook::dispatch($request->all(), $request->headers->all(), $this->access_token);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function createNinjaPayment($request, $response)
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        $data = [
 | 
			
		||||
            'payment_type' => $this->getPaymentMethod($request->gateway_type_id),
 | 
			
		||||
            'amount' => $response['purchase_units'][0]['payments']['captures'][0]['amount']['value'],
 | 
			
		||||
            'transaction_reference' => $response['purchase_units'][0]['payments']['captures'][0]['id'],
 | 
			
		||||
            'gateway_type_id' => GatewayType::PAYPAL,
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        $payment = $this->createPayment($data, \App\Models\Payment::STATUS_COMPLETED);
 | 
			
		||||
 | 
			
		||||
        if ($request->has('store_card') && $request->input('store_card') === true) {
 | 
			
		||||
            $payment_source = $response->json()['payment_source'] ?? false;
 | 
			
		||||
 | 
			
		||||
            if(isset($payment_source['card']) && ($payment_source['card']['attributes']['vault']['status'] ?? false) && $payment_source['card']['attributes']['vault']['status'] == 'VAULTED') {
 | 
			
		||||
 | 
			
		||||
                $last4 = $payment_source['card']['last_digits'];
 | 
			
		||||
                $expiry = $payment_source['card']['expiry']; //'2025-01'
 | 
			
		||||
                $expiry_meta = explode('-', $expiry);
 | 
			
		||||
                $brand = $payment_source['card']['brand'];
 | 
			
		||||
 | 
			
		||||
                $payment_meta = new \stdClass();
 | 
			
		||||
                $payment_meta->exp_month = $expiry_meta[1] ?? '';
 | 
			
		||||
                $payment_meta->exp_year = $expiry_meta[0] ?? $expiry;
 | 
			
		||||
                $payment_meta->brand = $brand;
 | 
			
		||||
                $payment_meta->last4 = $last4;
 | 
			
		||||
                $payment_meta->type = GatewayType::CREDIT_CARD;
 | 
			
		||||
 | 
			
		||||
                $token = $payment_source['card']['attributes']['vault']['id']; // 09f28652d01257021
 | 
			
		||||
                $gateway_customer_reference = $payment_source['card']['attributes']['vault']['customer']['id']; //rbTHnLsZqE;
 | 
			
		||||
 | 
			
		||||
                $data['token'] = $token;
 | 
			
		||||
                $data['payment_method_id'] = GatewayType::PAYPAL_ADVANCED_CARDS;
 | 
			
		||||
                $data['payment_meta'] = $payment_meta;
 | 
			
		||||
 | 
			
		||||
                $additional['gateway_customer_reference'] = $gateway_customer_reference;
 | 
			
		||||
 | 
			
		||||
                $this->storeGatewayToken($data, $additional);
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        SystemLogger::dispatch(
 | 
			
		||||
            ['response' => $response->json(), 'data' => $data],
 | 
			
		||||
            SystemLog::CATEGORY_GATEWAY_RESPONSE,
 | 
			
		||||
            SystemLog::EVENT_GATEWAY_SUCCESS,
 | 
			
		||||
            SystemLog::TYPE_PAYPAL,
 | 
			
		||||
            $this->client,
 | 
			
		||||
            $this->client->company,
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return response()->json(['redirect' => route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)], false)]);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -120,6 +120,7 @@ class PayPalPPCPPaymentDriver extends PayPalBasePaymentDriver
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        nlog("response");
 | 
			
		||||
        $this->init();
 | 
			
		||||
        $r = false;
 | 
			
		||||
 | 
			
		||||
        $request['gateway_response'] = str_replace("Error: ", "", $request['gateway_response']);
 | 
			
		||||
@ -181,27 +182,9 @@ class PayPalPPCPPaymentDriver extends PayPalBasePaymentDriver
 | 
			
		||||
 | 
			
		||||
        if(isset($response['status']) && $response['status'] == 'COMPLETED' && isset($response['purchase_units'])) {
 | 
			
		||||
 | 
			
		||||
            $data = [
 | 
			
		||||
                'payment_type' => $this->getPaymentMethod($request->gateway_type_id),
 | 
			
		||||
                'amount' => $response['purchase_units'][0]['payments']['captures'][0]['amount']['value'],
 | 
			
		||||
                'transaction_reference' => $response['purchase_units'][0]['payments']['captures'][0]['id'],
 | 
			
		||||
                'gateway_type_id' => GatewayType::PAYPAL,
 | 
			
		||||
            ];
 | 
			
		||||
 | 
			
		||||
            $payment = $this->createPayment($data, \App\Models\Payment::STATUS_COMPLETED);
 | 
			
		||||
            return $this->createNinjaPayment($request, $response);
 | 
			
		||||
 | 
			
		||||
            SystemLogger::dispatch(
 | 
			
		||||
                ['response' => $response, 'data' => $data],
 | 
			
		||||
                SystemLog::CATEGORY_GATEWAY_RESPONSE,
 | 
			
		||||
                SystemLog::EVENT_GATEWAY_SUCCESS,
 | 
			
		||||
                SystemLog::TYPE_PAYPAL_PPCP,
 | 
			
		||||
                $this->client,
 | 
			
		||||
                $this->client->company,
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            return response()->json(['redirect' => route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)], false)]);
 | 
			
		||||
 | 
			
		||||
            // return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]);
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
 | 
			
		||||
@ -346,7 +329,33 @@ class PayPalPPCPPaymentDriver extends PayPalBasePaymentDriver
 | 
			
		||||
 | 
			
		||||
        $orderId = $this->createOrder($data);
 | 
			
		||||
 | 
			
		||||
        $r = $this->gatewayRequest("/v2/checkout/orders/{$orderId}", 'get', ['body' => '']);
 | 
			
		||||
        // $r = $this->gatewayRequest("/v2/checkout/orders/{$orderId}", 'get', ['body' => '']);
 | 
			
		||||
        
 | 
			
		||||
        try {
 | 
			
		||||
 | 
			
		||||
            $r = $this->gatewayRequest("/v2/checkout/orders/{$orderId}", 'get', ['body' => '']);
 | 
			
		||||
 | 
			
		||||
            if($r->status() == 422) {
 | 
			
		||||
                //handle conditions where the client may need to try again.
 | 
			
		||||
                nlog("hit 422");
 | 
			
		||||
                $r = $this->handleDuplicateInvoiceId($orderId);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        } catch(\Exception $e) {
 | 
			
		||||
 | 
			
		||||
            //Rescue for duplicate invoice_id
 | 
			
		||||
            if(stripos($e->getMessage(), 'DUPLICATE_INVOICE_ID') !== false) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                nlog("hit 422 in exception");
 | 
			
		||||
 | 
			
		||||
                $r = $this->handleDuplicateInvoiceId($orderId);
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $response = $r->json();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -57,7 +57,6 @@ class PayPalRestPaymentDriver extends PayPalBasePaymentDriver
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * processPaymentResponse
 | 
			
		||||
     *
 | 
			
		||||
@ -160,63 +159,7 @@ class PayPalRestPaymentDriver extends PayPalBasePaymentDriver
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    private function createNinjaPayment($request, $response)
 | 
			
		||||
    {
 | 
			
		||||
    
 | 
			
		||||
        $data = [
 | 
			
		||||
            'payment_type' => $this->getPaymentMethod($request->gateway_type_id),
 | 
			
		||||
            'amount' => $response['purchase_units'][0]['payments']['captures'][0]['amount']['value'],
 | 
			
		||||
            'transaction_reference' => $response['purchase_units'][0]['payments']['captures'][0]['id'],
 | 
			
		||||
            'gateway_type_id' => GatewayType::PAYPAL,
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        $payment = $this->createPayment($data, \App\Models\Payment::STATUS_COMPLETED);
 | 
			
		||||
 | 
			
		||||
        if ($request->has('store_card') && $request->input('store_card') === true) {
 | 
			
		||||
            $payment_source = $response->json()['payment_source'];
 | 
			
		||||
 | 
			
		||||
            if(isset($payment_source['card']) && ($payment_source['card']['attributes']['vault']['status'] ?? false) && $payment_source['card']['attributes']['vault']['status'] == 'VAULTED') {
 | 
			
		||||
 | 
			
		||||
                $last4 = $payment_source['card']['last_digits'];
 | 
			
		||||
                $expiry = $payment_source['card']['expiry']; //'2025-01'
 | 
			
		||||
                $expiry_meta = explode('-', $expiry);
 | 
			
		||||
                $brand = $payment_source['card']['brand'];
 | 
			
		||||
 | 
			
		||||
                $payment_meta = new \stdClass();
 | 
			
		||||
                $payment_meta->exp_month = $expiry_meta[1] ?? '';
 | 
			
		||||
                $payment_meta->exp_year = $expiry_meta[0] ?? $expiry;
 | 
			
		||||
                $payment_meta->brand = $brand;
 | 
			
		||||
                $payment_meta->last4 = $last4;
 | 
			
		||||
                $payment_meta->type = GatewayType::CREDIT_CARD;
 | 
			
		||||
 | 
			
		||||
                $token = $payment_source['card']['attributes']['vault']['id']; // 09f28652d01257021
 | 
			
		||||
                $gateway_customer_reference = $payment_source['card']['attributes']['vault']['customer']['id']; //rbTHnLsZqE;
 | 
			
		||||
 | 
			
		||||
                $data['token'] = $token;
 | 
			
		||||
                $data['payment_method_id'] = GatewayType::PAYPAL_ADVANCED_CARDS;
 | 
			
		||||
                $data['payment_meta'] = $payment_meta;
 | 
			
		||||
 | 
			
		||||
                $additional['gateway_customer_reference'] = $gateway_customer_reference;
 | 
			
		||||
 | 
			
		||||
                $this->storeGatewayToken($data, $additional);
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        SystemLogger::dispatch(
 | 
			
		||||
            ['response' => $response->json(), 'data' => $data],
 | 
			
		||||
            SystemLog::CATEGORY_GATEWAY_RESPONSE,
 | 
			
		||||
            SystemLog::EVENT_GATEWAY_SUCCESS,
 | 
			
		||||
            SystemLog::TYPE_PAYPAL,
 | 
			
		||||
            $this->client,
 | 
			
		||||
            $this->client->company,
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return response()->json(['redirect' => route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)], false)]);
 | 
			
		||||
 | 
			
		||||
        // return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function createOrder(array $data): string
 | 
			
		||||
    {
 | 
			
		||||
@ -314,6 +257,7 @@ class PayPalRestPaymentDriver extends PayPalBasePaymentDriver
 | 
			
		||||
     * This method handle the deletion of the current paypal order,
 | 
			
		||||
     * and the automatic payment of the order with the selected payment source.
 | 
			
		||||
     *
 | 
			
		||||
     * ** Do not move to BasePPDriver **
 | 
			
		||||
     * @param  mixed $request
 | 
			
		||||
     * @param  array $response
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user