簡體   English   中英

在Omnipay中使用Paypal Pro

[英]Using Paypal Pro in Omnipay

我已成功將PayPal express整合到我的網站中。 現在,我想使用PayPal Pro,以便用戶可以在網站上輸入他們的卡號。 我有我的沙盒接受PayPal Pro付款,但過程似乎有所不同。

在PayPal Express中,我使用purchase()將用戶重定向到PayPal進行付款。 一旦他們返回,我使用completePurchase()來實際從他們那里拿錢。

PayPal Pro有什么區別? 查看ProGateway.php文件,沒有completePurchase()方法可用。 看起來就像在它的位置(與ExpressGateway.php相比,是capture.php ,當我打電話告訴我,必須The transactionReference parameter is required 。所以,不確定這是否是我應該調用的

以下是可以告訴我使用哪種方法的任何人的整個ProGateway.php文件。

public function getDefaultParameters()
{
    return array(
        'username' => '',
        'password' => '',
        'signature' => '',
        'testMode' => false,
    );
}

public function getUsername()
{
    return $this->getParameter('username');
}

public function setUsername($value)
{
    return $this->setParameter('username', $value);
}

public function getPassword()
{
    return $this->getParameter('password');
}

public function setPassword($value)
{
    return $this->setParameter('password', $value);
}

public function getSignature()
{
    return $this->getParameter('signature');
}

public function setSignature($value)
{
    return $this->setParameter('signature', $value);
}

public function authorize(array $parameters = array())
{
    return $this->createRequest('\Omnipay\PayPal\Message\ProAuthorizeRequest', $parameters);
}

public function purchase(array $parameters = array())
{
    return $this->createRequest('\Omnipay\PayPal\Message\ProPurchaseRequest', $parameters);
}

public function capture(array $parameters = array())
{
    return $this->createRequest('\Omnipay\PayPal\Message\CaptureRequest', $parameters);
}

public function refund(array $parameters = array())
{
    return $this->createRequest('\Omnipay\PayPal\Message\RefundRequest', $parameters);
}

public function fetchTransaction(array $parameters = array())
{
    return $this->createRequest('\Omnipay\PayPal\Message\FetchTransactionRequest', $parameters);
}

}

首先,我將指向你自己的omnipay-paypal網關的分支: https//github.com/delatbabel/omnipay-paypal - 該分支上有2個分支,我已將其作為PR提交給主要的phpleague分支但是他們尚未合並。 您可能需要查看accept-paypal-payments分支中的代碼。

通過“集成PayPal Pro”,我認為您的意思是使用REST網關,它幾乎取代了原來的PayPal PRO API。 因此,您應該考慮使用RestGateway類而不是ProGateway類。 這是允許客戶在網站上輸入其卡詳細信息的最佳方式。

在PayPal Pro(原始網關或REST)中,您無需調用completePurchase來獲取資金 - purchase()調用將執行此操作。

還有一個方法是authorize(),在執行此操作后,您可以使用capture()。 這就是你想要在某個時刻獲取某人卡片詳細信息的地方,以及稍后(也許在訂單完成時),調用capture()來完成銷售並拿走他們的錢。 在我的回購中,我添加了更廣泛的API注釋和代碼示例,以便您可以看到它是如何工作的。

另外在我的回購中(在accept-paypal-payments分支上,沒有合並到主要的omnipay中)你可以給人們通過信用卡或使用他們的paypal賬戶支付的選項。 在這種情況下,您根本不提供信用卡號或令牌,然后客戶可以被重定向到PayPal網站,使用他們的PayPal登錄ID和密碼登錄進行付款。 根據Express Gateway,您需要為PayPal提供回調API端點,以便在購買成功(或失敗)后將客戶重定向到。

我還應該指出,只接受您自己網站上的信用卡詳細信息,然后轉發到PayPal(PayPal稱之為“直接信用卡付款”)僅在英國和美國支持。 如果你在這兩個國家之外,那么這將在沙箱中正常工作,但不能在生產中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM