![](/img/trans.png)
[英]Use Paypal Pro instead of Paypal Express - Omnipay for Laravel
[英]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.