/** * {@inheritdoc} */ public function processPayment(PaymentInterface $payment) : PaymentInterface { $order = $payment->getOrder(); $payer = $this->createPayer('paypal'); $redirectUrls = $this->createRedirectUrls($payment); $transaction = $this->createTransaction($order); $payPalPayment = new Payment(); $payPalPayment->setIntent("sale"); $payPalPayment->setPayer($payer); $payPalPayment->setRedirectUrls($redirectUrls); $payPalPayment->setTransactions([$transaction]); try { $payPalPayment->create($apiContext); } catch (\Exception $e) { echo $e->getMessage(); } $payment->setApprovalUrl($payPalPayment->getApprovalLink()); $payment->setState($payPalPayment->getState()); $payment->setToken($payPalPayment->getId()); $this->paymentManager->updateResource($payment); return $payment; }
public function confirmPayment(PaymentInterface $payment, Request $request) { $order = $payment->getOrder(); $paymentMethod = $order->getPaymentMethod(); $configuration = $paymentMethod->getConfiguration(); $paymentId = $request->get('paymentId'); $payerId = $request->get('PayerID'); $apiContext = $this->getApiContext($configuration); if ($payment->getExternalIdentifier() === $paymentId && false === $payment->isApproved()) { $payPalPayment = Payment::get($paymentId, $apiContext); $execution = new PaymentExecution(); $execution->setPayerId($payerId); $payPalPayment->execute($execution, $apiContext); $payment->setState(PaymentInterface::PAYMENT_STATE_APPROVED); } }