2016-03-07 4 views
0

Я использую библиотеку PayPal Omnipay. Я могу сделать успешный платеж, но у меня проблемы с подтверждением статуса платежа. В ответ я всегда получаю PAYMENTINFO_0_PAYMENTSTATUS => PendingИнтеграция в Omnipay paypal - подтверждение статуса оплаты

Вот моя покупка код - я попадаю в PayPal и все это хорошо здесь:

$gateway = Omnipay::create("PayPal_Express"); 
    $gateway->setUsername($this->USERNAME); 
    $gateway->setPassword($this->PASSWORD); 
    $gateway->setSignature($this->SIGNATURE); 
    $gateway->setTestMode(true); 

    $params = [ 
     'cancelUrl'=>'http://xxxx.com/paypal_tests/cancel', 
     'returnUrl'=>'http://xxxx.com/paypal_tests/confirm_paypal', 
     'amount' => '10.00', 
     'currency' => 'EUR' 
    ]; 

    $response = $gateway->purchase($params)->send(); 

    $response->redirect(); 

И ReturnUrl, где в ответ я всегда получаю [PAYMENTINFO_0_PAYMENTSTATUS] => Pending:

 $gateway = Omnipay::create("PayPal_Express"); 
     $gateway->setUsername($this->USERNAME); 
     $gateway->setPassword($this->PASSWORD); 
     $gateway->setSignature($this->SIGNATURE); 
     $gateway->setTestMode(true); 

     $response = $gateway->completePurchase($this->session->PAYPAL )->send(); 
     $data = $response->getData(); // this is the raw response object 

     echo print_r($data); 

Здесь полный ответ, так как вы можете видеть статус «Ожидание».

Array 
(
    [TOKEN] => EC-1RA27631NJ550530P 
    [SUCCESSPAGEREDIRECTREQUESTED] => false 
    [TIMESTAMP] => 2016-03-07T10:29:43Z 
    [CORRELATIONID] => 8010f2af74b8 
    [ACK] => Success 
    [VERSION] => 119.0 
    [BUILD] => 18316154 
    [INSURANCEOPTIONSELECTED] => false 
    [SHIPPINGOPTIONISDEFAULT] => false 
    [PAYMENTINFO_0_TRANSACTIONID] => 97R504742X7344311 
    [PAYMENTINFO_0_TRANSACTIONTYPE] => expresscheckout 
    [PAYMENTINFO_0_PAYMENTTYPE] => instant 
    [PAYMENTINFO_0_ORDERTIME] => 2016-03-07T10:29:41Z 
    [PAYMENTINFO_0_AMT] => 1.44 
    [PAYMENTINFO_0_TAXAMT] => 0.00 
    [PAYMENTINFO_0_CURRENCYCODE] => EUR 


    [PAYMENTINFO_0_PAYMENTSTATUS] => Pending 


    [PAYMENTINFO_0_PENDINGREASON] => multicurrency 
    [PAYMENTINFO_0_REASONCODE] => None 
    [PAYMENTINFO_0_PROTECTIONELIGIBILITY] => Ineligible 
    [PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE] => None 
    [PAYMENTINFO_0_SECUREMERCHANTACCOUNTID] => Z6GHSVEW4KGWG 
    [PAYMENTINFO_0_ERRORCODE] => 0 
    [PAYMENTINFO_0_ACK] => Success 
) 

Как подтвердить, что платеж был обработан, подтвержден и отправлен безопасно?

Спасибо!

+1

Я думаю, вы должны исследовать о '[PAYMENTINFO_0_PENDINGREASON] => multicurrency': https://developer.paypal.com/docs/classic/api/merchant/DoExpressCheckoutPayment_API_Operation_NVP/ –

+0

Спасибо который повернулся чтобы быть проблемой. Даже не заметил этого парама. Благодаря!! – fjckls

+0

Добро пожаловать. –

ответ

0

ОК, я нашел эту проблему, то здесь:

[PAYMENTINFO_0_PENDINGREASON] => multicurrency 

В основном тестовой учетной запись моего клиента была в США и тестовый аккаунт продавца обвинял в евро, поэтому оно не было завершено ....

И ответ здесь: How do I use omnipay to check if it's a pending payment or not

Смежные вопросы