【发布时间】:2019-03-03 15:08:41
【问题描述】:
我有一个 PayPal 帐户,我想在我的网站中实施 PayPal 交易。 对于测试支付,我使用沙盒环境。
我可以将用户重定向到沙盒 PayPal 页面,我可以使用默认沙盒买家帐户付款,毕竟,我也被重定向回我的网站。太棒了。
问题是ipn.php(通知 URL)未被 PayPal 沙盒调用。
我会知道是否被调用,因为文件在开始时会向我发送一封电子邮件。
我做了我所知道的一切。
奇怪的是,从 IPN Simulator 中调用了 ipn.php。
我还创建了新的沙盒帐户
developer.paypal.com/developer/accounts/create,
但我什至没有收到确认电子邮件来确认他们。
而且,在使用新的沙盒帐户时,沙盒 PayPal 并没有调用 ipn.php。
我尝试了几天,但没有什么可以尝试的了。
互联网和 PayPal 沙盒文档说默认沙盒帐户已经确认。所以理论上它必须调用ipn.php file。
您不必担心 ipn.php 路径。我检查了很多次。这个不错。
这是代码:
$exCheckout = new \PaypalExpressCheckout\Request\SetExpressCheckout();
$exCheckout->setUsername($_config['apikeys']['paypal_username'])
->setPassword($_config['apikeys']['paypal_password'])
->setSignature($_config['apikeys']['paypal_signature'])
->setSandbox()
->setQueryParameter('NOTIFYURL', $_base . 'models/paypal/ipn.php')
->setQueryParameter('RETURNURL', route('hotel-thank-you', $_id_booking))
->setQueryParameter('CANCELURL', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http" . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"))
->setQueryParameter('PAYMENTREQUEST_0_PAYMENTACTION', 'Sale')
->setQueryParameter('PAYMENTREQUEST_0_AMT', $_card_price)
->setQueryParameter('PAYMENTREQUEST_0_CURRENCYCODE', 'EUR')
->setQueryParameter('NOSHIPPING', '1')
->setQueryParameter('LOGOIMG', $_base.'static/img/logo.png');
if (!$exCheckout->isValid()) {
throw new Exception('Missing Parameters: ' . implode(', ', $exCheckout->determineMissingFields()));
}
$paypalResponse = $exCheckout->send();
if ($paypalResponse->isSuccess()) {
db_query('UPDATE booking SET paypal_token = ? WHERE id_booking = ?',
$paypalResponse->getParameter('TOKEN'),
$_id_booking
);
$paypalResponse->setSandbox();
$paypalResponse->authorize();
}
else {
die('No Success PayPal checkout');
}
你能帮帮我吗?
【问题讨论】:
标签: php paypal paypal-sandbox paypal-ipn sandbox