我的paypal接收webhook通知的过程有什么问题?

我的paypal接收webhook通知的过程有什么问题?,paypal,Paypal,因此,这是我迄今为止所做的,但它不起作用,我将感谢在这件事上的任何帮助: 我的目标是发回在我的paypal沙箱帐户中发生的任何webhook事件 所以我有两个账户, 属于收款人的,称之为“调解人”, 属于“买方”的一个 现在在我的帐户中,有一个沙盒webhooks配置,因此我输入了以下内容: 不言而喻,这来自于 所以在我的项目中,我使用api做了一个简单的销售。。。这是完整的创建销售流程: $payer = new Payer(); $payer->setPayment_method(

因此,这是我迄今为止所做的,但它不起作用,我将感谢在这件事上的任何帮助:

我的目标是发回在我的paypal沙箱帐户中发生的任何webhook事件

所以我有两个账户, 属于收款人的,称之为“调解人”, 属于“买方”的一个

现在在我的帐户中,有一个沙盒webhooks配置,因此我输入了以下内容:

不言而喻,这来自于

所以在我的项目中,我使用api做了一个简单的销售。。。这是完整的创建销售流程:

$payer = new Payer();
 $payer->setPayment_method('paypal');

 //dd($payer);
 $item = new Item();

 $item->setQuantity('1');
 $item->setName('benny');
 $item->setPrice('7.41');
 $item->setCurrency('USD');
 $item->setSku('blah');
 // //var_dump($item);

 $items = new ItemList();
 $items->addItem($item);
 //var_dump($items);

$amountDetails = new Details();
$amountDetails->setSubtotal('7.41');
$amountDetails->setTax('0.03');
$amountDetails->setShipping('0.03');

$amount = new Amount();
$amount->setCurrency('USD');
$amount->setTotal('7.47');
$amount->setDetails($amountDetails);

$transaction = new Transaction();
$transaction->setAmount($amount);
$transaction->setDescription('This is the payment transaction description.');
$transaction->setItemList($items);

// echo '<pre>';
// print_r($transaction);


$RedirectUrls = new RedirectUrls();
$RedirectUrls ->setReturnUrl('https://csdieuqkzo.localtunnel.me/#/pricing');
$RedirectUrls ->setCancelUrl('https://csdieuqkzo.localtunnel.me/#/');

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

// echo '<pre>';
// print_r($payment);
// dd();
$response = $payment->create($this->apiContext)->toarray();

Session::put('pay_id',$response['id']);

return Response::json($response);
然后一个对象进来说这个事务的状态是批准的,超级,但是我没有看到任何关于我之前定义的webhook url的帖子……现在我是如何测试它的

我为我的根的post方法写了一个简单的脚本(在laravel中):

意味着每当post请求到达以下url时(在我的情况下,是到以下url根目录的post):

我只想添加一行,就这样…但它不会更新任何内容!。。。 例如,如果我向同一个地方发出了邮递员的邮寄请求,一切都很好,但当销售获得批准或任何其他行动时,什么都没有发生


为什么?

使用“本地主机”不起作用,因为当PayPal的服务器访问该地址时,它们只是在访问自己。您需要设置DNS,将域指向本地计算机上的虚拟服务器,这样您就可以使用完全限定的域名而不是本地主机。

这是一个PayPal文档,可以帮助您了解webhooks的工作原理

webhooks是http回调机制,理想情况下,您需要一个有效的url作为您的webhooks端点,以测试PayPal发布的webhooks通知消息。如果您使用PayPal wallet进行销售,您应该在端点处获得PayPal的JSON格式的webhooks通知消息。webhooks尚不支持直接信用卡案例


如果您想在本地测试侦听器脚本,可以使用postman工具将示例消息发布到本地url并进行测试。

这就是问题所在,我没有收到任何发送到端点的post请求,请阅读我上面写的内容以进一步查询如果这是使用paypal的销售付款,则只有echeck将触发的webhooks通知现在。这背后的想法是echeck不是即时资金来源,支付状态最初将处于挂起状态,然后切换到稍后完成,此时,paypal将发送webhooks通知。如果您使用的是echeck以外的即时支付资金来源,支付将立即处理,您应该已经获得了res当您进行REST API调用时,响应中会出现Source。@沙箱环境中的PayPalAlex,已完成付款(付款方法:paypal,意图:sale)我知道如何在沙箱环境中关闭此功能,但我的理解是,这种情况也可能发生在实时环境中,以便PayPal能够执行自己的欺诈检测。这正确吗?如果正确,那么事件中欺诈检测完成是否会触发webhook事件?为了加强@Matt所说的内容,PayPal在其webhooks文档中明确声明:“注意:webhook事件仅针对通过PayPal的REST API发生的资源状态更改交付”。据我所知,这意味着如果交易从“待定”变为“批准”,则“完成",一个webhook应该会被发送到某个地方。Alex,我在PayPal的文档中找不到任何地方表明这只适用于eCheck支付,你在哪里看到的?@Alex谢谢。你的回复比我收到的离岸客户支持要好,他们的回复好像我是误读文档的人我知道它可能与您所在的部门不同,但REST API中有一个简单的说明,即某些功能尚未提供,这将对希望使用PayPal REST API的开发人员表示尊重,这样他们就不会在遇到这些障碍之前花费数天或数周的时间进行开发。无论如何,再次感谢。他正在使用localtunnel、 meI确实仔细阅读了这个问题,他说他使用的是localhost。此后,它已经用更新的信息进行了编辑。如果你查看编辑历史,你会发现我的回答在原始帖子中是有意义的。使用ngrok.com可以工作
  $payerId =  Input::get('payerId');

$payment = Payment::get(Session::get('pay_id'), $this->apiContext);

//return $payerId;

 $paymentExecution = new PaymentExecution();
 $paymentExecution->setPayer_id($payerId);

 $approval = $payment->execute($paymentExecution, $this->apiContext)->toarray();

 return Response::json($approval);
Route::post('/',function(){
    $myfile = fopen("bennyfile.txt", "a") or die("Unable to open file!");
     $txt = "\nouterequested";
     fwrite($myfile, $txt);
     fclose($myfile);
});