为了账号安全,请及时绑定邮箱和手机立即绑定

Paypal IPN 和 Golang 在 GAE 上的集成

Paypal IPN 和 Golang 在 GAE 上的集成

Go
有只小跳蛙 2021-07-08 17:00:55
我正在编写一个用于处理 Paypal IPN 消息和响应的侦听器。根据 Paypal IPN 要求,侦听器必须以相同的顺序发布从 Paypal 接收到的值,并在值列表的前面插入一个新参数“cmd=_notify-validate”。您的侦听器 HTTP 将完整的、未更改的消息 POST 回 PayPal。注意:此消息必须包含与来自 PayPal 的原始 IPN相同的字段,顺序相同,所有字段都以 cmd=_notify-validate 开头。此外,此消息必须使用与原始消息相同的编码。但是,Go 的 url.Values 变量是在 map 数据结构中实现的,每次迭代时不保证值的顺序相同。...使用范围循环遍历地图时,未指定迭代顺序并且不能保证从一次迭代到下一次迭代顺序相同”并且当调用 url.Values 编码方法时,它将按键排序Encode 将值编码为按键排序的“URL 编码”形式(“bar=baz&foo=quux”)。侦听器在 GAE 上运行,因此我使用“appengine/urlfetch”的 PostForm 函数,它将 url.Values 作为第二个参数c := appengine.NewContext(r)client := urlfetch.Client(c)resp, err := client.PostForm("https://www.sandbox.paypal.com/cgi-bin/webscr", r.Form)由于 url.Values 是一个映射,因此不保证映射中值的顺序是有序的。我怎么可能以从 Paypal IPN 接收到的相同顺序将参数值传递回带有 GAE urlfetch 服务的 Paypal?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信