我正在編寫(xiě)一個(gè)用于處理 Paypal IPN 消息和響應(yīng)的偵聽(tīng)器。根據(jù) Paypal IPN 要求,偵聽(tīng)器必須以相同的順序發(fā)布從 Paypal 接收到的值,并在值列表的前面插入一個(gè)新參數(shù)“cmd=_notify-validate”。您的偵聽(tīng)器 HTTP 將完整的、未更改的消息 POST 回 PayPal。注意:此消息必須包含與來(lái)自 PayPal 的原始 IPN相同的字段,順序相同,所有字段都以 cmd=_notify-validate 開(kāi)頭。此外,此消息必須使用與原始消息相同的編碼。但是,Go 的 url.Values 變量是在 map 數(shù)據(jù)結(jié)構(gòu)中實(shí)現(xiàn)的,每次迭代時(shí)不保證值的順序相同。...使用范圍循環(huán)遍歷地圖時(shí),未指定迭代順序并且不能保證從一次迭代到下一次迭代順序相同”并且當(dāng)調(diào)用 url.Values 編碼方法時(shí),它將按鍵排序Encode 將值編碼為按鍵排序的“URL 編碼”形式(“bar=baz&foo=quux”)。偵聽(tīng)器在 GAE 上運(yùn)行,因此我使用“appengine/urlfetch”的 PostForm 函數(shù),它將 url.Values 作為第二個(gè)參數(shù)c := appengine.NewContext(r)client := urlfetch.Client(c)resp, err := client.PostForm("https://www.sandbox.paypal.com/cgi-bin/webscr", r.Form)由于 url.Values 是一個(gè)映射,因此不保證映射中值的順序是有序的。我怎么可能以從 Paypal IPN 接收到的相同順序?qū)?shù)值傳遞回帶有 GAE urlfetch 服務(wù)的 Paypal?
- 1 回答
- 0 關(guān)注
- 263 瀏覽
添加回答
舉報(bào)
0/150
提交
取消