Как мне получить ответ PayPal_Express с помощью OmniPay?

#laravel-4 #omnipay #paypal

#laravel-4 #omnipay #paypal

Вопрос:

Я искал повсюду и бегал кругами по OmniPays github, пытаясь найти документацию о том, как реализовать PayPal Express в OmniPay.

         $response = Omnipay::purchase([
            'amount' => $total,
            'encodedTestIDs' => serialize($payForTestID),
            'returnUrl' => 'http://php.bhiceu.com/payment/return',
            'cancelUrl' => 'http://php.bhiceu.com/payment/cancel' 
        ])->send();
        //dd($response);
        //die;
        if ($response->isRedirect()) {
            // redirect to offsite payment gateway
            $response->redirect();
        } else {
            // payment failed: display message to customer
            echo $response->getMessage();
        }
  

Приведенный выше код успешно отправляет меня в PayPal с соответствующей суммой, и когда я отменяю или проверяю, я возвращаюсь к соответствующим URL-адресам, однако все, что я получаю обратно, — это токен paypal, с которым я не могу найти никакой документации о том, что делать.

Комментарии:

1. Ага… Omnipay кажется, что это может быть очень удобно, но документации просто не существует. Вы когда-нибудь выясняли ответ?

Ответ №1:

Вам необходимо завершить покупку с помощью метода completePurchase().

посмотрите на omnipay / пример кода на https://github.com/thephpleague/omnipay-example/blob/master/index.php#L203-L218

Ответ №2:

Ответ оказался довольно простым, но мне пришлось покопаться в исходном коде, поскольку документации для библиотеки не существует.

 $response = Omnipay::completePurchase([
    'amount' => $price,
    'currency' => $currency
])->send();
  

Вы просто вызываете Omnipay::completePurchase с тем же amount и, что и currency при первоначальном Omnipay::purchase вызове.

После этого вы будете использовать Omnipay::fetchCheckout()->send() для получения такой информации, как адрес доставки и т. Д.