,我有以下的Perl代碼通過的Prestashop 1.6 Web服務創建一個新的客戶時的工作原理:通過PUT的Prestashop web服務更新客戶禁止客戶登錄
my $endPoint = 'https://storeURL.com/api/customers?ws_key=MY_KEY';
my $req_XML = qq{
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<customer>
<id>$frm{id}</id>
<passwd required="true" maxSize="32" format="isPasswd">$rndPass</passwd>
<lastname required="true" maxSize="32" format="isName">$frm{lastname}</lastname>
<firstname required="true" maxSize="32" format="isName">$frm{firstname}</firstname>
<email required="true" maxSize="128" format="isEmail">$frm{email}</email>
<active format="isBool">1</active>
<id_default_group>$frm{group}</id_default_group>
<associations>
<groups nodeType="group" api="groups">
<group>
<id>$frm{group}</id>
</group>
</groups>
</associations>
</customer>
</prestashop>
};
$xml_resp = $ua->request(POST $endPoint, Content_Type => 'text/xml', Content => $req_XML);
OK,如此反覆,工程。創建客戶時,表單輸入中沒有id
- 因此它是空白條目。當我使用完全相同的XML與PUT請求編輯顧客:
$xml_resp = $ua->request(PUT $endPoint, Content_Type => 'text/xml', Content => $req_XML);
更新似乎工作,這意味着:當您檢查的Prestashop後端,客戶是有的,改變(如改變到名稱或電子郵件)都是可見的,它表明客戶是積極的,一切看起來不錯。但是,該特定客戶無法再登錄該商店。
我得到:Authentication Error
和登錄屏幕上的紅色橫幅。
所以,我不知道我在哪裏出錯與PUT請求。
我試圖發出一個新的密碼,試圖離開passwd字段爲空,試圖刪除passwd字段(錯誤:[parameter "passwd" required]
),想抓哈希密碼了DB中的ps_customer
表和傳遞,試圖在註冊和更新時給每個客戶相同的密碼,嘗試了一些我不記得的東西...
結果是一樣的:除非觸發錯誤,更新看起來像它發生,但客戶無法登錄。
我在計算我缺少的東西 - 要麼PUT請求在某些方面不夠或我不應該使用的方法。任何有識之士將不勝感激。
我從很久以前就從這裏開始,剛剛看到了你的答案。不知道這是否回答我的問題。如果有人可以評論這是一個很好的答案,我會將其標記爲已接受。 – cbmckay
@cbmckay我一直在使用這段代碼一段時間,所以是的,它正在工作(; – Deathstorm