2013-09-30 65 views
-1

我在我的PayPal URL字符串中傳遞了項目名稱,但只要遇到任何有字符編碼的項目,就會導致url字符串在提交給paypal時中斷。貝寶字符編碼打破網址字符串

比如我通過以下項目名稱:

積極傾聽 - 這是一個

我的PayPal URL字符串,然後輸出爲:

https://www.paypal.com/cgi-bin/webscr?item_name_1=Active listening –it’s 

,你可以看到它的轉換 - 然後這導致url字符串斷開。如果我手動刪除–和’它正常工作。

我已經在PayPal後端設置了我的語言編碼爲UTF-8,我在我的貝寶字符串上傳遞了UTF-8。

我在做什麼錯?

+0

請仔細閱讀PayPal手冊 - 它表示您應該對發送給其服務器的每個值進行urlencode編碼。 – Fracsi

+0

謝謝Fracsi我會試一試 – Mark

回答

1

管理人將它傳遞給貝寶之前轉換使用

html_entity_decode('string', ENT_COMPAT, 'UTF-8') 
上的項目名稱

的HTML字符來解決這個問題。

+1

感謝你的這段代碼,這對我有用。 – Offboard

+0

嗨。我可能會遇到類似於你的問題(在這篇文章中:http://stackoverflow.com/questions/40167842/integrating-paypal-ipn-in-php-not-working)。我可以問你在何處以及如何包含你提到的html_entity_decode行作爲你的解決方案嗎? – Michel

+0

嗨@Michel,這是相當一段時間以前,但從我記得我包括它就在我發送字符串與paypal之前。希望有所幫助。 – Mark

0

您可能需要先將它們轉換爲UTF8,然後再轉換爲urlencode。試着這樣做

<?php 
echo rawurlencode(utf8_encode($yourvar)); 
+0

這個doe的工作,但現在在paypals結帳結束他們顯示爲字符編碼值例如。 '–'而不是 - – Mark