/** * @Route("/{id}/pay") * @Method({"GET"}) */ public function initiatePayment($id) { $order = $this->getOrderManager()->findById($id); if (!$order) { return $this->fail(); } if ($order->getDeposited() && $order->getPaid()) { return $this->fail(); } $price = !$order->getDeposited() ? 1 : 100 - 25; $clientId = $this->container->getParameter('paypal_client_id'); $secret = $this->container->getParameter('paypal_secret'); $sdkConfig = $this->container->getParameter('paypal_sdk_config'); $cred = new \PayPal\Auth\OAuthTokenCredential($clientId, $secret); $accessToken = $cred->getAccessToken($sdkConfig); $apiContext = new \PayPal\Rest\ApiContext($cred); $apiContext->setConfig($sdkConfig); $payer = new \PayPal\Api\Payer(); $payer->setPaymentMethod('paypal'); $amount = new \PayPal\Api\Amount(); $amount->setCurrency('USD'); $amount->setTotal($price); $transaction = new \PayPal\Api\Transaction(); $transaction->setDescription('7L High School Mum Shoppe'); $transaction->setAmount($amount); $redirectUrls = new \PayPal\Api\RedirectUrls(); $redirectUrls->setReturnUrl('http://127.0.0.1/mumshoppe/web/app_dev.php/shop#/pay/' . $order->getId()); $redirectUrls->setCancelUrl('http://127.0.0.1/mumshoppe/web/app_dev.php/shop'); $payment = new \PayPal\Api\Payment(); $payment->setIntent('sale'); $payment->setPayer($payer); $payment->setRedirectUrls($redirectUrls); $payment->setTransactions(array($transaction)); $response = $payment->create($apiContext); foreach ($response->getLinks() as $link) { if ($link->getRel() === 'approval_url') { return $this->respondJson(array('success' => true, 'access_token' => $cred, 'location' => $link->getHref(), 'payment_id' => $response->getId())); } } return $this->fail(); }
/** * When you have configured the payment properly this will give you a URL that you can redirect your visitor to, * so that he can pay the desired amount. * * @param string $url_format * @return string */ public function get_payment_url($url_format) { if (!is_array($this->payment_provider_auth_config[self::PROVIDER_NAME]) || !isset($this->payment_provider_auth_config[self::PROVIDER_NAME]['clientid']) || !isset($this->payment_provider_auth_config[self::PROVIDER_NAME]['secret'])) { throw new \Exception('Auth Config for Provider ' . self::PROVIDER_NAME . ' is not set.', 1394795187); } $total_price = $this->order->get_total_price(); if ($total_price == 0) { throw new \Exception('Total price is 0. Provider ' . self::PROVIDER_NAME . ' does not support free payments.', 1394795478); } $api_context = new ApiContext(new OAuthTokenCredential($this->payment_provider_auth_config[self::PROVIDER_NAME]['clientid'], $this->payment_provider_auth_config[self::PROVIDER_NAME]['secret'])); $api_context->setConfig(array('mode' => 'sandbox', 'http.ConnectionTimeOut' => 30, 'log.LogEnabled' => false)); $payer = new Payer(); $payer->setPaymentMethod("paypal"); $amount = new Amount(); $amount->setCurrency("EUR"); $amount->setTotal($this->order->get_total_price()); $transaction = new Transaction(); $transaction->setAmount($amount); $transaction->setDescription($this->order->get_reason()); $transaction->setItemList($this->getItemList()); $redirectUrls = new RedirectUrls(); $redirectUrls->setReturnUrl($this->get_success_url($url_format)); $redirectUrls->setCancelUrl($this->get_abort_url($url_format)); $payment = new \PayPal\Api\Payment(); $payment->setIntent("sale"); $payment->setPayer($payer); $payment->setRedirectUrls($redirectUrls); $payment->setTransactions(array($transaction)); $payment->create($api_context); $payment_url = ''; foreach ($payment->getLinks() as $link) { /** @var \PayPal\Api\Links $link */ if ($link->getRel() == 'approval_url') { $payment_url = $link->getHref(); } } return $payment_url; }
function create_paypal_payment($total, $currency, $desc, $my_items, $redirect_url, $cancel_url) { $redirectUrls = new PayPal\Api\RedirectUrls(); $redirectUrls->setReturnUrl($redirect_url); $redirectUrls->setCancelUrl($cancel_url); $payer = new PayPal\Api\Payer(); $payer->setPaymentMethod("paypal"); $amount = new PayPal\Api\Amount(); $amount->setCurrency($currency); $amount->setTotal($total); $items = new PayPal\Api\ItemList(); $items->setItems($my_items); $transaction = new PayPal\Api\Transaction(); $transaction->setAmount($amount); $transaction->setDescription($desc); $transaction->setItemList($items); $payment = new PayPal\Api\Payment(); $payment->setRedirectUrls($redirectUrls); $payment->setIntent("sale"); $payment->setPayer($payer); $payment->setTransactions(array($transaction)); $payment->create(apiContext()); return $payment; }
$payer = new \PayPal\Api\Payer(); $payer->setPaymentMethod("paypal"); $amount = new \PayPal\Api\Amount(); $amount->setCurrency("EUR"); $amount->setTotal("{$price}"); $transaction = new \PayPal\Api\Transaction(); $transaction->setDescription("Deine Bestellung bei Alma Mater Wear"); $transaction->setAmount($amount); //$baseUrl = getBaseUrl(); $redirectUrls = new \PayPal\Api\RedirectUrls(); $redirectUrls->setReturnUrl($success_url); $redirectUrls->setCancelUrl($error_url); $payment = new \PayPal\Api\Payment(); $payment->setIntent("sale"); $payment->setPayer($payer); $payment->setRedirectUrls($redirectUrls); $payment->setTransactions(array($transaction)); $payment->create($apiContext); //Nach erfolgreicher Bezahlung wird der Bezahlstatus auf 1 gesetzt. Dafür wird die Payment ID in der Datenbank gespeichert mysqli_query($link, "UPDATE orders SET paymentID = '{$payment->id}' WHERE id = {$orderId}"); //Der Ziellink wird ausgegeben und per JavaScript geöffnet $referer = $payment->links[1]->href; echo $referer; } else { if (USE_LIVE_PAYMENT) { //in live mode, Sofort is currently locked. echo "Order cancelled"; } else { //In test mode, sofort will do a sandbox call. require __DIR__ . '/vendor/autoload.php'; $configkey = '116339:240443:96a447a8f7781048364620e19fc024d0';