mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-01 10:04:34 -04: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