2014-02-25 96 views
2

由於我嘗試直接使用PayPal REST API失敗,我正在嘗試查看Omnipay是否是一個選項...有沒有一種方法可以將OmniPay與REST API結合使用?到目前爲止,我見過的唯一的集成要求usernamepassword,不client idclient secretOmnipay:PayPal REST API集成

$gateway = Omnipay::create('PayPal_Express'); 
$gateway->setUsername('XXXXX'); 
$gateway->setPassword('XXXX'); 
$gateway->setSignature('XXXXX'); 


$response = $gateway->completePurchase(
    array(
     'cancelUrl' => 'www.xyz.com/cancelurl', 
     'returnUrl' => 'www.xyz.com/returnurl', 
     'amount' => '25.00', 
     'currency' => 'CAD' 
    ) 
)->send(); 
+0

你已經獲得瞭解決? PayPal提供的測試簽名不起作用,您遇到過這種情況嗎? –

回答

0

的REST API仍然是非常新的PayPal和簡單的並不完整。沒有太多的第三方框架已經實現它。

它看起來像你正在使用PHP並試圖實現快速結帳.. ??如果是這樣,我建議看看我的class library for PayPal。你可以在幾分鐘內完成。

它還使用API​​用戶名,密碼和簽名。您可以在API訪問部分下的PayPal帳戶配置文件中獲取這些憑證。

我的圖書館附帶快速結帳樣本,功能強大且易於遵循,然後有空模板,您可以從中開始設置自己的模板,只需填寫所需的任何參數即可。

0

不,Omnipay還不支持REST API。也就是說,Omnipay抽象了各種API之間的差異,所以它對你使用的API沒有實際意義。您在上面發佈的代碼應該可以在PayPal Express Checkout中正常工作,因此只要確保您使用的是正確的API密鑰,這一切都很簡單。

2

對於發現此帖的任何人,都支持REST API。

RestGateway.php摘錄在源代碼中完整文檔

  • 貝寶的REST API在兩個環境中支持找到。使用沙箱環境
  • 用於測試目的,然後移至生產環境進行生產處理。
  • 測試時,使用您的測試憑證生成訪問令牌,以撥打
  • Sandbox URI。當您開始投入使用時,請使用分配給您的應用的實時憑證
  • 來生成一個新的訪問令牌,以便與實時URI一起使用。

提交 https://github.com/thephpleague/omnipay-paypal/pull/21

// Create a gateway for the PayPal RestGateway 
// (routes to GatewayFactory::create) 
$gateway = Omnipay::create('RestGateway'); 

// Initialise the gateway 
$gateway->initialize(array(
    'clientId' => 'MyPayPalClientId', 
    'secret' => 'MyPayPalSecret', 
    'testMode' => true, // Or false when you are ready for live transactions 
)); 

// Create a credit card object 
// DO NOT USE THESE CARD VALUES -- substitute your own 
// see the documentation in the class header. 
$card = new CreditCard(array(
      'firstName' => 'Example', 
      'lastName' => 'User', 
      'number' => '4111111111111111', 
      'expiryMonth'   => '01', 
      'expiryYear'   => '2020', 
      'cvv'     => '123', 
      'billingAddress1'  => '1 Scrubby Creek Road', 
      'billingCountry'  => 'AU', 
      'billingCity'   => 'Scrubby Creek', 
      'billingPostcode'  => '4999', 
      'billingState'   => 'QLD', 
)); 

// Do an authorisation transaction on the gateway 
$transaction = $gateway->authorize(array(
    'amount'  => '10.00', 
    'currency'  => 'AUD', 
    'description' => 'This is a test authorize transaction.', 
    'card'   => $card, 
)); 
$response = $transaction->send(); 
if ($response->isSuccessful()) { 
    echo "Authorize transaction was successful!\n"; 
    // Find the authorization ID 
    $auth_id = $response->getTransactionReference(); 
} 

從RestAuthorizeRequest.php