如何在本地设置中使用 paypal Sandbox webhooks?

问题描述 投票:0回答:4

我正在使用 Paypal REST(php) 环境,并且喜欢使用沙箱 webhooks。 是否可以在本地设置中使用 paypal 沙箱 webhook?

http://localhost/test

是无效网址

有什么建议吗?

webhooks
4个回答
8
投票

正如@zeyu所说,你不能直接这样做。您可以用来实现此目的的另一个服务是https://ngrok.com/。希望它对某人有用!

它会给你一个类似这样的链接:

http://75z929f4.ngrok.io
,我将其设置为开发ENV变量
APP_HOST

并像这样弹出到 webhook 中:

  def generate_url
    values = {
      business: ENV["PAYPAL_ACCOUNT"],
      cmd: '_xclick',
      return: ENV["APP_HOST"] + @return_path,
      custom: @user.id,
      upload: 1,
      invoice: Time.now,
      currency_code: 'GBP',
      amount: @price,
      no_shipping: 1,
      item_name: self.purchase_name,
      item_number: @product_id,
      quantity: 1,
      notify_url: ENV["APP_HOST"] + @notify_path,
      on0: ('Coupon Code' if @coupon_code.present?),
      os0: @coupon_code
    }

    "#{ENV["PAYPAL_URL"]}/cgi-bin/websr?" + values.to_query
  end

最后一点,每次重新运行 ngrok 时,您都需要更新

APP_HOST
,因为您会从中获得新的标识符。这将链接所有内容,以便您可以从本地主机发送此请求并成功返回响应。


6
投票

不,它不能以这种方式工作,因为 localhost 不是 paypal webhook 的有效地址。 但是,您可以使用 requestbin requestbin 尝试一下。请记住在设置 webhook url 时使用 https 而不是 http。


6
投票

最简单:在线接收webhook

https://webhook.site/是单页面,简单,无需登录。它将实时接收网络钩子并显示有关接收到的有效负载的所有详细信息(正文、标头...)


第二种方法:将 webhooks 转发到 localhost

只需进行更多设置,您就可以使用 ngrok 等免费服务将收到的 Webhook 转发到

localhost
地址。出于安全考虑,您需要登录。
在一个 cli 命令上,它会将任何
localhost
地址置于联机状态(仅应用于开发)。


0
投票

我使用的一个选项是 https://smee.io/,您生成一个永久 URL,并且由于这个项目,您可以将其与 docker 或 docker compose 一起使用https://github.com/deltaprojects/smee-client -docker:

docker run -d --name smee-client deltaprojects/smee-client -u https://smee.io/XXXXXX -t http://localhost:PORT/endpoint
  opire_smee:
    image: deltaprojects/smee-client
    container_name: opire_smee
    network_mode: "host"
    command: "-u https://smee.io/XXXXXX -t http://localhost:${API_PORT}/endpoint"
    env_file:
      - .env
© www.soinside.com 2019 - 2024. All rights reserved.