我在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?
任何人都可以提供帮助吗?
答案 0 :(得分:3)
您的问题的直接和简短答案是肯定的,您可以通过REST API设置“notifyUrl
”:
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription(" ...... ")
->setNotifyUrl("your notifyUrl here")
->setInvoiceNumber($invoiceNo);
但是这是不接收REST通知的正确方法。使用“Webhooks”代替(虽然使用PHP的Webhooks太苛刻了,但最后你找到了一个解决方案。如果你需要更多关于如何做的细节,只需评论这个答案)。
返回NotofyUrl
:
为了测试我能够在实施webhook后通过notifyUrl,但接收通知,PayPal仍然会向我已经删除的NotifyUrl每次新付款发送通知。我从代码中删除了它,我在我的PayPal帐户中停用了IPN。我尝试了很多东西,但PayPal仍为每笔付款发送IPN。现在我收到2个Notofications,一个通过NofityUrl,第二个通过WebhookEvent Listener。不知道这里出了什么问题。所以我不建议使用notifyUrl,而只是实现webhookEvent监听器。
答案 1 :(得分:1)
通知网址的参数无法在REST API调用中使用。如果您要设置IPN网址,则必须在Paypal帐户中进行设置: 以下是步骤: 1.登录paypal帐户 2.单击配置文件,然后在销售首选项下,选择即时付款通知首选项 3.单击“选择IPN设置” 4.键入您收到IPN消息的URL,然后选择已启用