我在paypal中创建了简单的支付
$payer = new Payer();
$payer->setPaymentMethod("paypal");
$item1 = new Item();
$item1->setName('some name')
->setCurrency('USD')
->setQuantity(1)
->setSku("my id product")
->setPrice(11);
$itemList = new ItemList();
$itemList->setItems(array($item1));
$amount = new Amount();
$amount->setCurrency("USD")
->setTotal(11);
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Payment description")
->setInvoiceNumber(uniqid());
$baseUrl = "https://my_site_address.com";
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment/?success=true")
->setCancelUrl("$baseUrl/ExecutePayment/?success=false");
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
$request = clone $payment;
try {
$payment->create($apiContext);
} catch (Exception $ex) {
print_r($ex);
exit(1);
}
$approvalUrl = $payment->getApprovalLink();
print_r($approvalUrl);
执行此代码后一切正常,我被重定向到 Paypal 沙箱,登录后我可以付款。但我不知道如何设置我的 notify_url?
有人可以帮忙吗?
最佳答案
对您的问题的直接而简短的回答是,您可以通过 REST API 设置“notifyUrl
”:
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription(" ...... ")
->setNotifyUrl("your notifyUrl here")
->setInvoiceNumber($invoiceNo);
但是这不是接收 REST 通知的正确方式。改用“Webhooks”(尽管使用 PHP 的 Webhooks 太老套了,但最终您会找到解决方案。如果您需要有关如何执行此操作的更多详细信息,请评论此答案)。
返回NotofyUrl
:
为了进行测试,我能够通过 notifyUrl 接收通知,但是 在实现 webhook 后,PayPal 仍会为每次新付款向我已删除的旧 NotifyUrl 发送通知。我从代码中删除了它,我在我的 PayPal 帐户中停用了 IPN。我尝试了很多方法,但 PayPal 仍会为每次付款发送 IPN。现在我收到 2 个 Notofications,一个通过 NofityUrl,第二个通过 WebhookEvent Listener。不知道这里出了什么问题。所以我不推荐使用 notifyUrl,而只是实现一个 webhookEvent 监听器。
关于php - 如何将通知 url 添加到 REST API paypal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951259/