Omnipay - Laravel - Завершить работу Paypal Pyment

У меня есть следующий метод SuccessPayment:

    public function getSuccessPayment() {
    $gatewayFactory = new \Omnipay\Common\GatewayFactory;
    $gateway = $gatewayFactory->create('PayPal_Express');
    #Test API Sandbox
    $gateway->setUsername('xxxxxxx.de');
    $gateway->setPassword('xxxxxxxxx');
    $gateway->setSignature('xxxxx.xxxxx.xxxxx.xxxxxxx');
    $gateway->setTestMode(true);

    # FINALIZZZE PAYPAL PAYMENT
    $response = $gateway->completePurchase($this->getApiInfos())->send();
    $data = $response->getData();

    # IF SUCCESSFULLLLLLL
    if($data['ACK'] == 'Success'):
        $order = Order::where('paypalToken',$data['TOKEN'])->first();
        # Set Status
        $order->orderSuccess = 4;
        $order->orderPaid = 1;
        # Set PP ID
        $order->paypalTransactionId = $data['PAYMENTINFO_0_TRANSACTIONID'];
        $order->save();

        # Destroy Cart
        Cart::destroy();

        # Send Confirm Mail
        $this->sendConfirmOrderMail($order->id, Auth::user()->id);

        return View::make('pages.checkout.success', compact(['order','data']));
    endif;
}  

$this->getApiInfos() имеет учетные данные и информацию, которые передаются в PP, вот метод:

    public function getApiInfos($order = NULL) {
  return array(
    'amount'=> Cart::total(),
    'cancelUrl' => \URL::route('paypal_cancel_order'),
    'returnUrl' => \URL::route('paypal_return'),
    'description' => 'Your Payment at xxxxxx - Order #',
    'currency' => 'EUR'
  );
}  

Посмотрите на описание. Как я могу получить идентификатор заказа в описании после перенаправления на Paypal и после того, как меня перенаправили обратно на мою страницу?
Я теряю свою сессию и заказ (наверное!), так как я могу это сделать?

Кроме того, знаете ли вы, как я могу отправить стоимость доставки, налог и изображение заголовка в PayPal через Omnipay?


person Marek123    schedule 26.10.2014    source источник
comment
Я не совсем знаком с Omnipay, но должно быть где-то, где он создает фактический запрос API. В нем вы можете установить параметры для INVOICE, SHIPPINGAMT, TAXAMT и т. д. Я видел много людей, жалующихся на Omnipay с PayPal, на самом деле, из-за ограничений и несовместимости. В зависимости от того, насколько глубоко вы разбираетесь в интеграции, я бы порекомендовал взглянуть на мою PHP. библиотека классов для PayPal. Он разработан специально для PayPal, обладает полным набором функций и очень прост в использовании.   -  person Drew Angell    schedule 27.10.2014
comment
Как мне интегрировать его в Laravel?   -  person Marek123    schedule 27.10.2014
comment
Эта ссылка, которую я отправил вам, является пакетом Packagist, поэтому вы можете включить его в свой проект Laravel, как и любой другой пакет через Composer. Просто добавьте следующее в требуемую строку: angelleye/paypal-php-library: 2.0.*. Вот видеоруководство по установке.   -  person Drew Angell    schedule 27.10.2014
comment
На самом деле я работал над этим проектом PayPal Glass, который использует мою библиотеку в Laravel, чтобы по существу воспроизвести интерфейс PayPal.com. У меня есть еще к этому отношение, но вы можете просмотреть его текущее состояние на GitHub и посмотрите, как это интегрировано в Laravel.   -  person Drew Angell    schedule 27.10.2014


Ответы (1)


Чтобы получить ссылку на транзакцию, которую вы отправили в Paypal, вы можете сделать

$response->getTransactionReference();

Ко второй половине вашего вопроса:
Шлюз PayPal Express имеет следующие функции для установки изображений:

$gateway->setHeaderImageUrl()
$gateway->setLogoImageUrl()

Все запросы имеют следующие функции

$request->setTaxAmount()
$request->setShippingAmount()
$request->setHandlingAmount()
$request->setShippingDiscount()
$request->setInsuranceAmount()
person greydnls    schedule 27.10.2014
comment
Потрясающий. Именно то, что мне было нужно! - person Marek123; 28.10.2014
comment
setLogoImageUrl() не найден, как это сделать с самой новой версией? - person trinity420; 26.12.2020