這幾天一直在研究chinapay 這個支付平台,根據他們提供的開發文檔寫,了解業務流程等等,應該是很簡單的東西。
後來直到做了以後才發現我自己想的太簡單了。
但,慶幸的是還是做事完了,我現在總結一下心得
就chinapay的平台,我發現幾個問題
數據用CURL模擬POST發送的時候,一定要注意字符的順序,並且中文字符串都要用urlencode()函數進行編碼,不然
chinapay的服務器就是報HTTP 500的錯誤。
這個問題,我是怎麼發現的呢?其實做javascript非跨域發送數據的時候,我就用firebug看過數據傳輸了
仔細看看上面POST傳輸的數據。中間沒有中文字符,但是有特殊字符都是通過urlencode()處理過的。
就這樣,有了這些,你就可以通過CURL把返回的時候拿到。處理字符串,這裡我借鑒了一個好方法,
foreach($data as $key=>$value) { $params[] = $key ."=". urlencode(auto_charset($value,"utf8","gb2312")); } $post_data = implode("&",$temp);
上面的是將數組轉換成字符串,通過&進行連接。auto_charset()是thinkphp裡面提供的字符串編碼轉換方法,如果不是thinkphp框架,就用
iconv()這個函數。
怎麼把字符串轉換成數組呢?
//方法就更多了,根據要求用 $data = exploade("&",$post_data);
用數組是為了方便數據的存儲,用字符串是為了數據的傳輸。所以就兩種直接的轉化要十分清楚。