Пример #1
0
 /**
  * @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();
 }
Пример #2
0
 /**
  * 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;
}
Пример #4
0
     $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';