如何将通知URL添加到REST API paypal?

时间:2016-03-11 22:44:39

标签: php paypal

我在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?

任何人都可以提供帮助吗?

2 个答案:

答案 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,然后选择已启用