在Omnipay中使用Paypal Pro

时间:2015-01-29 15:29:32

标签: php paypal

我已成功将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);
}

} `

1 个答案:

答案 0 :(得分:3)

首先,我将指出你自己的omnipay-paypal网关的分支:https://github.com/delatbabel/omnipay-paypal - 在该分支上有2个分支,我已经作为PR提交给主要的分支,但是它们没有'尚未合并。您可能需要查看accept-paypal-payments分支中的代码。

通过"整合PayPal Pro"我认为你的意思是使用REST网关,它几乎取代了原来的PayPal PRO API。因此,您应该考虑使用RestGateway类而不是ProGateway类。这是允许客户在网站上输入卡详细信息的最佳方式。

在PayPal Pro(原始网关或REST)中,您无需调用completePurchase来获取资金 - purchase()调用将会这样做。

还有一个方法是authorize(),在这之后你可以使用capture()。这就是你想在某个时刻获取某人卡片详细信息的地方,以及稍后(也许在订单完成时),调用capture()来完成销售并拿走他们的钱。在我的回购中,我添加了更广泛的API注释和代码示例,以便您了解其工作原理。

另外在我的回购中(在接受paypal支付分支,未合并到主要的omnipay分支),您可以给人们通过信用卡或使用他们的paypal帐户支付的选项。在这种情况下,您根本不提供信用卡号或令牌,然后客户可以被重定向到PayPal网站,使用他们的PayPal登录ID和密码登录进行付款。根据Express Gateway,您需要为PayPal提供回调API端点,以便在购买成功(或失败)后将客户重定向到。

我还应该指出,只接受您自己网站上的信用卡详细信息,然后转发到PayPal(PayPal称之为"直接信用卡付款")仅在英国和美国支持。如果您不在这两个国家之外,那么这将在沙箱中正常工作,但不能在生产中使用。