【问题标题】:ipn.php isn't called by Sandbox PaypalSandbox Paypal 不调用 ipn.php
【发布时间】: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


    【解决方案1】:

    首先确保您在 Sandbox 或生产中拥有企业帐户。

    然后按照后续步骤操作,paypal 将点击您的通知 URL。

    1. 在 www.paypal.com 上登录您的 PayPal 企业帐户。
    2. 在右上角的配置文件菜单中,单击配置文件和设置。

    点击我的销售工具。

    注意:如果您在右上角没有看到个人资料图标,请导航至我的帐户 > 个人资料 > 我的销售工具。

    1. 在“获取付款和管理我的风险”部分的“即时付款通知”行中单击“更新”链接。
    2. 单击选择 IPN 设置以指定您的侦听器的 URL 并激活侦听器。将打开以下页面

    1. 在通知 URL 字段中为您的侦听器指定 URL。
    2. 单击接收 IPN 消息(已启用)以启用您的侦听器。
    3. 点击保存。

    您必须在请求和设置中放入相同的通知 URL。

    【讨论】:

    • 感谢您的回答。我照你说的做了。不幸的是,ipn.php 只是第一次被调用(甚至没有得到任何 $_REQUEST 变量),之后 ipn.php 就不再被调用了。
    • 当您在 paypal 帐户设置中添加通知 url 时,您的通知 url 将被调用
    • "我照你说的做了" = 我在 paypal 帐户设置中添加了通知 url。
    • 那么结果如何?
    • 空结果。没有 $_REQUEST 变量。
    猜你喜欢
    • 2012-07-26
    • 2016-04-25
    • 2011-09-05
    • 2014-03-25
    • 2020-05-06
    • 2014-05-21
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多