我正在使用 Paypal REST(php) 环境,并且喜欢使用沙箱 webhooks。 是否可以在本地设置中使用 paypal 沙箱 webhook?
http://localhost/test
是无效网址
有什么建议吗?
正如@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
,因为您会从中获得新的标识符。这将链接所有内容,以便您可以从本地主机发送此请求并成功返回响应。
不,它不能以这种方式工作,因为 localhost 不是 paypal webhook 的有效地址。 但是,您可以使用 requestbin requestbin 尝试一下。请记住在设置 webhook url 时使用 https 而不是 http。
https://webhook.site/是单页面,简单,无需登录。它将实时接收网络钩子并显示有关接收到的有效负载的所有详细信息(正文、标头...)
只需进行更多设置,您就可以使用 ngrok 等免费服务将收到的 Webhook 转发到
localhost
地址。出于安全考虑,您需要登录。localhost
地址置于联机状态(仅应用于开发)。
我使用的一个选项是 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