Поддержка UTF-8 в Webmoney Merchant и решение проблемы в Internet Explorer

Живем мы, как все помнят, в XXI веке — люди по пол-года вращаются вокруг Земли, машины ездят на электричестве, а сайты строятся в кодировке UTF-8. Но, к сожалению, не все об этом знают, и, даже, такой гигант денежных операций как WebMoney, об этом не догадывается.

WebMoney Merchant и UTF-8

Merchant WebMoney Transfer служит для облегчения интеграции системы WebMoney Transfer с веб-сайтами с целью обеспечения автоматизированного приема средств клиентов за предлагаемые товары или услуги.

Цель, без сомнения, очень благородная, но вот некоторые нюансы реализации приводят в недоумение. Но, давайте обо всем по-порядку.

Была поставлена задача — научить сайт по продаже ваучеров забирать у пользователей их кровнозаработанные, и сделать это нужно было в самые кратчайшие сроки. В качестве платежной системы была выбрана WebMoney, а из их 3-х интерфейсов был выбран Merchant. После непродолжительного изучения документации был дописан недостающий функционал, настал черед тестирования.

Первое, что бросилось в глаза — набор нечитаемых символов на месте описания покупаемой услуги.

Форма платежа Wemboney 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 (неужели такое возможно?) наша функция возвращала описание товара/услуги записанное транслитом. Ну, а подставить нужное, в зависимости от браузера, было уже делом техники.

Форма платежа Wemboney Merchant

Финишная прямая

Задача решена, новый скилл получен, заказчик доволен. Ура.

Внимание! Решение проблемы поддержки UTF-8 в Webmoney Merchant

В нашем деле появились очень интересные новости. Теперь нет необходимости использовать Google Translate для перевода описания покупки в IE.

27 Июня в 13:15

Добавить комментарий


Имя:

Эл. почта: