所以这就是我到目前为止所做的事情,它不起作用,我将不胜感激任何帮助:
我的目标是回发我的paypal沙盒帐户中发生的任何webhook事件。
所以我有2个帐号, 一个属于钱的接收者,称之为"促进者", 一个属于"买家",
现在在我的帐户中,有一个Sandbox webhooks配置,所以我输入以下内容: https://csdieuqkzo.localtunnel.me
不言而喻,这来自localtunnel.me。
所以在我的项目中,我使用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);
此后有一个重定向到paypal,批准,当它回到我的网站时,它会执行以下操作:
$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);
然后有一个对象进来说这个交易的状态是批准的,超级,但我没有看到我之前定义的webhook网址的任何帖子......现在我是如何测试它的?
我写了一个简单的脚本到我的root的post方法(在laravel中):
Route::post('/',function(){
$myfile = fopen("bennyfile.txt", "a") or die("Unable to open file!");
$txt = "\nouterequested";
fwrite($myfile, $txt);
fclose($myfile);
});
表示发布请求何时到达以下网址(在我的情况下,发布到以下网址的帖子:https://csdieuqkzo.localtunnel.me
我只想添加一行,就是它......但它没有更新任何内容!... 例如,如果我从邮递员到同一个地方的邮寄请求,一切都很好,但是当批准销售或任何其他行动时,一切都没有发生。
为什么?
答案 0 :(得分:1)
这是一个paypal文档,可以帮助您了解webhook的工作原理。
https://developer.paypal.com/docs/integration/direct/rest-webhooks-overview/
webhooks是http回调机制,理想情况下,您需要一个有效的URL作为您的webhooks端点来测试PayPal发布的webhooks通知消息。如果你使用paypal钱包进行销售,你应该在你的端点以JSON格式获得PayPal的webhooks通知消息。 webhooks还没有支持直接信用卡的情况。
如果要在本地测试监听器脚本,可以使用postman工具将示例消息发布到本地URL并进行测试。
答案 1 :(得分:0)
使用“localhost”是行不通的,因为当PayPal的服务器点击该地址时,他们只是在点击自己。您需要设置DNS以将域指向本地计算机上的虚拟服务器,以便您可以使用完全限定的域名而不是localhost。