laravel - PayPal 被重定向到成功页面,但它没有进行货币交易(也没有 webhook 或 IPN 通知)

标签 laravel paypal paypal-sandbox paypal-ipn paypal-rest-sdk

这几天我一直在努力解决一个 paypal 问题。我正在使用 PayPal PHP SDK,我的环境是安装了 Php 7.2 并运行 Laravel 5.6 的 Linux 服务器(Ubuntu 16)。

我通过 composer 安装了 paypal php sdk,并在代码中集成了“成功”。当我尝试运行代码时,我返回了付款链接(通常是您重定向用户的地方),所以它工作正常,第一个请求或 api 凭据没有问题。

问题是,如果您转到付款链接并且我付款了,它会将付款人重定向到我网站的成功页面,但我的帐户(买家和收款人)没有收到任何交易而且我也没有收到任何 webhook 或 IPN 通知(也像,用户必须钱或用户个人资料未验证,什么都没有)。

我已经尝试过的:

  • 打开 live api 并尝试使用真实的 paypal 配置文件,但我遇到了同样的问题。所以这不是问题。 (在 paypal sdk github 上有人在沙箱上有问题)。
  • 使用 Laravel Packege(同一个问题)。

这是我的代码(但我不认为问题出在这个代码上):

$_api_context = new ApiContext(new OAuthTokenCredential(
'CLIENT_ID','SECRET'));
    $_api_context->setConfig(array(
        'mode' => env('PAYPAL_MODE', 'sandbox'),
        'log.LogEnabled' => true,
        'log.FileName' => 'PayPal.log',
        'log.LogLevel' => 'DEBUG'
    ));


    $payer = new Payer();
    $payer->setPaymentMethod('paypal');
    $item_1 = new Item();
    $item_1->setName('Item 1') /** item name **/
    ->setCurrency('USD')
        ->setQuantity(1)
        ->setPrice('3'); /** unit price **/

    $item_list = new ItemList();
    $item_list->setItems(array($item_1));
    $amount = new Amount();
    $amount->setCurrency('USD')
        ->setTotal('3');
    $transaction = new Transaction();
    $transaction->setAmount($amount)
        ->setItemList($item_list)
        ->setDescription('Your transaction description');

    $redirect_urls = new RedirectUrls();

    $redirect_urls->setReturnUrl('https://XXXXXXX.ngrok.io/success') /** Specify return URL **/
    ->setCancelUrl('https://XXXXX.ngrok.io/error');

    $payment = new Payment();
    $payment->setIntent('Sale')
        ->setPayer($payer)
        ->setRedirectUrls($redirect_urls)
        ->setTransactions(array($transaction));


    //dd($payment);
    try {
        $payment->create($_api_context);
    } catch (\PayPal\Exception\PPConnectionException $ex) {
        dd($ex);

    }

    foreach ($payment->getLinks() as $link) {
        if ($link->getRel() == 'approval_url') {
            $redirect_url = $link->getHref();
            break;
        }
    }
    $approvalUrl = $payment->getApprovalLink();

    dd($redirect_url,$_api_context,$paypal,$paymentGateway,$approvalUrl,$payment->getId());

最佳答案

更新

我尝试将钱从沙盒帐户(个人)发送到拥有该 API 的企业帐户,并且 ipn 工作正常。

关于laravel - PayPal 被重定向到成功页面,但它没有进行货币交易(也没有 webhook 或 IPN 通知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412375/

相关文章:

laravel - 我可以在 `vagrant box update` 已经让机器运行的同时使用 `vagrant up` 吗?

laravel - {closure}() 必须是 Laravel 工厂种子上的 Faker\Generator\Generator 实例

asp.net - Paypal 返回网址

paypal - 为不存在的业务测试 Premier/Business 帐户

php - 自适应支付 IPN 未发送

php - Laravel 在范围内获得多对多计数

mysql - 为 foreach() 提供的参数无效 laravel-5.3

php - 如何从发票 ID 获取 PayPal 交易 ID

php - 支付成功后的PayPal POST数据

ruby - 错误 100002(安全错误 - 安全 header 无效)