2

我正在尝试实现一个 Paypal Webhook。每次用户使用 Paypal 购买产品时,我都需要一个事件。

在此处输入图像描述

我创建了一个链接到“PAYEMENT.SALE.COMPLETED”事件的 webhook。

这是我服务器上的 handleWebHook.php 文件:

<?php
include "vendor/autoload.php";

use PayPal\Api\Webhook;
use PayPal\Api\WebhookEvent;
use PayPal\Api\WebhookEventType;
use PayPal\Auth\OAuthTokenCredential;
use PayPal\Rest\ApiContext;

$apiContext = new ApiContext(
    new OAuthTokenCredential(
        'my client id',     // ClientID
        'my client secret'      // ClientSecret
    )
);
$apiContext->setConfig(
    array(
        'log.LogEnabled' => true,
        'log.FileName' => 'PayPal.log',
        'log.LogLevel' => 'DEBUG'
    )
);

$params = array(
);

// ### Search Webhook events
try {
    $output = WebhookEvent::all($params, $apiContext);
} catch (Exception $ex) {
    exit(1);
}

//ResultPrinter::printResult("Search Webhook events", "WebhookEventList", null, $params, $output);

$log  = "Datas: " . print_r($output) . "  " . date("F j, Y, g:i a").PHP_EOL.
    "-------------------------".PHP_EOL;
file_put_contents('./log_'.date("j.n.Y").'.log', $log, FILE_APPEND);

我尝试使用 API 调用https://api.sandbox.paypal.com/v1/notifications/simulate-event在线 webhook 模拟器来模拟 webhook 事件。

它似乎在两种情况下都有效,API 调用的结果是 202 Accepted,体内有很多信息,包括

"resource_type": "sale",
"event_type": "PAYMENT.SALE.COMPLETED",
"summary": "A successful sale payment was made for $ 0.48 USD", 

但是我无法在我的侦听器上检索这些事件,我的日志是空的,即使我手动转到浏览器上的 handleWebHook.php 页面,我也得到了

PayPal\Api\WebhookEventList Object ( [_propMap:PayPal\Common\PayPalModel:private] => Array ( [events] => Array ( ) [count] => 0 ) )

女巫的意思是没有事件。

我也尝试了https://api.sandbox.paypal.com/v1/notifications/webhooks-events API 调用,但我得到了相同的结果

{
    "events": [],
    "count": 0
}

在请求响应正文中。

为什么我无法在侦听器上检索事件?

4

0 回答 0