2014-09-08 3 views
0

У меня есть сайт электронной коммерции, который перенаправляет на экспресс-проверку Paypal с помощью Omnipay. Он правильно перенаправит пользователя в Paypal и вернется с успешным сообщением с плательщиком и всем. Тем не менее, он фактически не берет никаких платежей, и он не отображается на нашем счете в PayPal как любой платеж. Я не уверен, что это проблема с PayPal или проблема с конфигурацией с Omnipay. Я бы предположил, что Paypal обрабатывает эту часть, но так как он не работает (на нашем старом сайте работает нормально, но мы не используем OmniPay.)Omnipay с Paypal Express

$gateway = Omnipay::gateway('paypal'); 

    //production 
    $gateway->setUsername('11111111'); 
    $gateway->setPassword('1111111111'); 
    $gateway->setSignature('111111111'); 

    $cardInput = array(
     'firstName' => $info['first_name_bill'], 
     'lastName' => $info['last_name_bill'], 
     'billingAddress1' => $info['street_address_1_bill'], 
     'billingAddress2' => $info['street_address_2_bill'], 
     'billingPhone' => $info['phone_bill'], 
     'billingCity' => $info['city_bill'], 
     'billingState' => $info['state_bill'], 
     'billingPostCode' => $info['zip_bill'], 
     'shippingAddress1' => $info['street_address_1_ship'], 
     'shippingAddress2' => $info['street_address_2_ship'], 
     'shippingPhone' => $info['phone_ship'], 
     'shippingCity' => $info['city_ship'], 
     'shippingState' => $info['state_ship'], 
     'shippingPostCode' => $info['zip_ship'], 
    ); 

    $card = Omnipay::creditCard($cardInput); 

    //live 
    $response = Omnipay::purchase(
     array(
      'cancelUrl' => 'http://store.site.com/cart/cancel-payment', 
      'returnUrl' => 'http://store.site.com/cart/successful-payment', 
      'amount' => Input::get('total'), 
      'currency' => 'USD', 
      'card' => $card, 
      'description' => 'Stuff' 
     ) 
    )->send(); 

    if ($response->isSuccessful()) { 
     return Redirect('cart/successful-payment'); 
    } elseif ($response->isRedirect()) { 
     $response->redirect(); // this will automatically forward the customer 
    } else { 
     return Redirect::back()->with('error', 'There was a problem. Please try again.'); 
    } 
} else { 
    return Redirect::to('cart/successful-payment'); 
} 

Поэтому в основном то, что это будет сделать, это перенаправить их на Paypal в сделайте платеж, затем перенаправите обратно в наш магазин. Все работает отлично. Они могут ввести номер своей карты, а затем вернуться в наш магазин после его отправки. Проблема в том, что после ее возвращения ничего не происходит через paypal. Никакие заказы или оплата не обмениваются.

ответ

0

В вашей функции возврата функция, вызываемая при выполнении этого URL-адреса: http://store.site.com/cart/successful-payment, вам необходимо позвонить completePurchase. Что-то вроде этого:

 $gateway = Omnipay::gateway('paypal'); 

     //production 
     $gateway->setUsername('11111111'); 
     $gateway->setPassword('1111111111'); 
     $gateway->setSignature('111111111'); 
     $purchaseId = $_GET['PayerID']; 
     $response = $gateway->completePurchase([ 
      'transactionReference' => $purchaseId 
     ])->send(); 
     // .. check $response here. 
Смежные вопросы