2016-02-12 197 views
1

後,我購買我的返回URL我得到這個成功消息:貝寶沙箱和Omnipay

陣列([TOKEN] => EC-55E14916SE342401J [TIMESTAMP] => 2016-02-12T16:59: 00Z [的correlationID] => 5d020c7d4479b [ACK] =>成功 [VERSION] => 119.0 [BUILD] => 18308778)

但在沙盒帳戶仍然沒有改變...

這裏我的代碼:

$gateway = Omnipay::create('PayPal_Express'); 

     // Initialise the gateway 
     $gateway->initialize(array(
      'username' => 'user', 
      'password' => 'pass', 
      'signature' => 'sig', 
      'testMode' => true, // Or false when you are ready for live transactions 
     )); 

     // Do an authorisation transaction on the gateway 
     $transaction = $gateway->purchase(array(
      'returnUrl' => 'http://client.com/api/return', 
      'cancelUrl' => 'http://localhost:8000/cancel', 
      'amount' => '10.00', 
      'currency' => 'USD', 
      'description' => 'This is a test authorize transaction.', 
       // 'card'   => $card, 
     )); 

     $this->response = $transaction->send(); 
     if ($this->response->isRedirect()) { 
      // Yes it's a redirect. Redirect the customer to this URL: 
      $redirectUrl = $this->response->getRedirectUrl(); 

      return redirect($redirectUrl); 
     } 

任何人都知道什麼是問題?

回答

0
  1. 我建議您從PayPal Express API切換到Paypal REST API。 REST API更新,記錄更好,並且更完整。
  2. 我建議您爲每筆交易提供一個唯一的返回和取消網址。這樣做的一個例子是在REST API的omnipay-paypal docblocks中。基本上,您需要在調用purchase()之前存儲交易數據和交易ID,並將該ID用作returnUrl的一部分。然後returnUrl中的代碼將知道這是用於哪個事務。
  3. 在您的returnUrl代碼中,您需要調用completePurchase()並檢查響應。在您致電completePurchase()之前,您的交易未完成,並且沒有資金易手。您也不會在儀表板上看到該交易。