iT邦幫忙

0

Html 特殊字的問題

  • 分享至 

  • xImage

最近在研究支付工具的接合,對方的文檔表示需要通過post把formData 傳送到指定API
格式是application/x-www-form-urlencoded
由於是支付工具所以我打算用php curl 把資料自動傳送

但其中有一個數值名字叫做currency, 在進行urlencoded之後, &currency會顯示成¤cy
原因是&curren在html裡是¤的code
但對方要求要先把formData進行MD5加密後生成的密鑰再串接到formData後面

那問題來了, 由於&currency跟¤cy 在md5加密後出來的密鑰不同, 導致對方的api一直都無法識別formData

請問有沒有什麼辦法可以避免這個問題?

看更多先前的討論...收起先前的討論...
為什麼你的urlencode會不一樣@@?
&currency 經過urlencode 是 %26currency
a52190355 iT邦新手 5 級 ‧ 2022-07-09 12:57:40 檢舉
其實我也有留意這個問題, 所以我有用html的form來嘗試過submit相同的資料到api
發現是正常的, 也一樣是application/x-www-form-urlencoded, 但是能正常顯示&currency而且對方也能識別, 但由於是支付工具,所以我嘗試了一下用php curl 自動發送formData, 但這一次就出現了特殊字的問題
ronrun iT邦新手 4 級 ‧ 2022-07-09 20:25:16 檢舉
用 curl 怎麼會不一樣,難道你的 curl 用了 get 方法送表單?
a52190355 iT邦新手 5 級 ‧ 2022-07-10 05:16:54 檢舉
一樣是Post
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2022-07-09 13:00:32

這篇的說法
有個投機的解法
就是把 currency 移到第一個參數
就不會有 & 的問題了
/images/emoticon/emoticon01.gif

看更多先前的回應...收起先前的回應...

哈哈~~這招不錯
?currency

怕有排序問題不能移到第一個。

url get/formdata post方式,都沒有排序的問題吧?進到後端都是一樣的array/object

是API的組合問題。
某些API是利用URI的字串來做加密的。
而不是直接用GET值。
有時會要求KEY NAME排序要由小到大。
這時URI的字串是不能隨意換位置的。
記得那時的說法是,不容易被侵入。
(用GET了還擔心這??)
好像也是為了跨域問題的樣子。
反正都是API廠商他們說的。

這我以前串接時有碰過,還2次。
但就正規來說,這樣的方式也算少見就是了。

0

這個以前我也有碰過類似的問題。
我後來CURL改成用JSON格式的RAW方式傳送處理就可以了。

0
wup926
iT邦新手 3 級 ‧ 2022-07-10 13:08:31

把數值名稱改變,或數值名稱頭尾加字或符號,再寫一個小小城市把數值名稱改回來。

我要發表回答

立即登入回答