Поддержка UTF-8 в Webmoney Merchant и решение проблемы в Internet Explorer
Живем мы, как все помнят, в XXI веке — люди по пол-года вращаются вокруг Земли, машины ездят на электричестве, а сайты строятся в кодировке UTF-8. Но, к сожалению, не все об этом знают, и, даже, такой гигант денежных операций как WebMoney, об этом не догадывается.
WebMoney Merchant и UTF-8
Merchant WebMoney Transfer служит для облегчения интеграции системы WebMoney Transfer с веб-сайтами с целью обеспечения автоматизированного приема средств клиентов за предлагаемые товары или услуги.
Цель, без сомнения, очень благородная, но вот некоторые нюансы реализации приводят в недоумение. Но, давайте обо всем по-порядку.
Была поставлена задача — научить сайт по продаже ваучеров забирать у пользователей их кровнозаработанные, и сделать это нужно было в самые кратчайшие сроки. В качестве платежной системы была выбрана WebMoney, а из их 3-х интерфейсов был выбран Merchant. После непродолжительного изучения документации был дописан недостающий функционал, настал черед тестирования.
Первое, что бросилось в глаза — набор нечитаемых символов на месте описания покупаемой услуги.
Путем нехитрых манипуляций было установлено, что Merchant отказывается принимать любые кодировки, отличные от windows-1251. После нескольких тестов мы убедились, что все потуги переконвертировать описание на стороне сервера несостоятельны, поскольку браузер сам приводил отправляемые данные к кодировке сайта, тоесть к UTF-8. Решено было прильнуть к неиссякаемому источнику вдохновения, а именно к спецификации xHTML на сайте W3C. Вскоре был обнаружен атрибут accept-charset, который должен был нам сэкономить кучу времени, а заказчику нервных клеток. Первые же тесты показали, что направление поиска было выдержано верно, и на месте описание товара была отлично читаемая фраза. Но, продолжение, как говорится, следует…
Internet Explorer и поддержка accept-charset
… и это продолжение не заставило себя ждать. Всеми любимый браузер IE вел себя совершенно наплевательски по отношению к нам, как к разработчикам, и проявил полное неуважение к нашему клиенту. Internet Explorer наотрез отказался принимать ко вниманию спасительный атрибут, и продолжал отправлять данные в юникоде. Мы его упрашивали, мы ему угрожали, мы ему предъявляли доказательства того, насколько он не прав, но все было тщетно. Самый популярный браузер от Microsoft оказался, в очередной раз, впереди планеты всей.
Google Translate — обход проблемы поддержки accep-charset в IE
Оказавшись в очередном тупике, мы решили пораскинуть тем, что осталось после борьбы с Internet Explorer’ом. Был продуман план наших действий:
- если у потенциального клиента послушный браузер (Firefox, Opera, Chrome), то оставляем вариант с использованием атрибута accept-charset;
- для «бунтаря в синем плаще» будем подсовывать английский вариант описания товара/услуги;
Однако, нам показалось скучным каждый раз использовать одну и ту же фразу на английском, а перспектива переводить описание на английский вручную, вызывала приступы внезапного сна. В конце-концов, программисты мы или где?
Было решено озадачить корпорацию зла добра, на предмет быстрого перевода описаний. Очередное чтение документаций, спецификаций (и ещё разных -ций) вылилось в небольшую функцию, которая отлично справлялась со своей задачей.
На случай недоступности серверов Google (неужели такое возможно?) наша функция возвращала описание товара/услуги записанное транслитом. Ну, а подставить нужное, в зависимости от браузера, было уже делом техники.
Финишная прямая
Задача решена, новый скилл получен, заказчик доволен. Ура.
Внимание! Решение проблемы поддержки UTF-8 в Webmoney Merchant
В нашем деле появились очень интересные новости. Теперь нет необходимости использовать Google Translate для перевода описания покупки в IE.
Добавить комментарий