baibaratsky / php-webmoney

WebMoney API PHP Library
Other
73 stars 32 forks source link

Autoloader. Интерфейс X19, наброски. #2

Closed chuprik closed 11 years ago

chuprik commented 11 years ago

Создание WMX19Request, выглядит теперь так:

require_once('WebMoney.php');

$curl = new WMCurlApiRequestPerformer();
$webMoney = new WebMoney($curl);

$x19Request = new WMX19Request();
$x19Request->setReqn('1234567890');
$x19Request->setLang(WMX19Request::LANG_RU);
$x19Request->setSignerWmid('903337674545');
$x19Request->setOperationType(WMX19Request::TYPE_CASH);
$x19Request->setOperationDirection(WMX19Request::DIRECTION_INPUT);
$x19Request->setOperationPurseType(WMX19Request::PURSE_WMR);
$x19Request->setOperationAmount(100);
$x19Request->setUserWmid('903337674545');
$x19Request->setUserPNomer(5502123456);
$x19Request->setUserFName('Чуприк');
$x19Request->setUserIName('Константин');
$x19Request->setUserBankName('ОАО Альфа-банк');
$x19Request->setUserBankAccount('12345678901234567890');
$x19Request->setUserCardNumber('1234567890123456');
$x19Request->setUserEMoneyName(WMX19Request::EMONEY_QW);
$x19Request->setUserEMoneyId('79136767651');
$x19Request->setUserPhone('79136767651');

echo $x19Request->getXml();

Уверен, что имена свойств, например fName, iName и прочие, заменяем на свое, вот предложения по замене:

А также, вопрос в том, можно ли sign напрямую задавать? По логике вещей, он должен сам подписываться внутри getXml(). Но тогда выходит, что WMApiRequest должен обращаться к WebMoney (я считаю, что именно там у нас проинициализированный WMRequestSigner должен лежать (пока не полностью могу представить хранение внутри WMApiRequest экземпляра WebMoney)), а также мы делаем ли внутри WMApiRequest механизм, для получения ReqN? А еще у нас getUrl(), будет зависеть от типа аутентификации classic или keeper light и опять таки завязка с WebMoney.

baibaratsky commented 11 years ago

Думаю, подписывание запросов можно отдать в WMApiRequestPerformer, то есть передавать ему в конструктор. Он же может отдавать подписывателя в метод getXml() или специальный метод для этого завести.

chuprik commented 11 years ago

В XML от WM, указана кодировка Windows-1251, а на самом деле внутри utf-8. В итоге вырезаю информацию о кодировке в заголовке XML, такое решение не особо нравится. В принципе, работает вариант mb_convert_encoding($string, 'utf-8', 'cp1251');, но он лично мне не нравится больше, чем первый. Нужно твое мнение.

baibaratsky commented 11 years ago

Думаю, надо заменять кодировку в заголовке на правильную.

chuprik commented 11 years ago

Тип авторизации. Делаем ли мы light?

baibaratsky commented 11 years ago

Light пока не делаем, но надо посмотреть, что для него может понадобиться, чтобы потом полкода не переписывать. Хотя, возможно, проще сразу сделать.

chuprik commented 11 years ago

Хорошо, как тебе текущий вариант Light/Classic?

baibaratsky commented 11 years ago

Не совсем понял твой вопрос.

chuprik commented 11 years ago

Сейчас в конструктор WMX19ApiRequest, можно передать тип авторизации, по умолчанию TYPE_CLASSIC. В зависимости от $_authType возвращаются разные url и формирование $_sign выполняется только при TYPE_CLASSIC. Пойдет ли такой вариант?

baibaratsky commented 11 years ago

Думаю, пойдет.

chuprik commented 11 years ago

Попробовал реализовать валидацию. Правила получились толстоватыми. Условия сформировал на базе интерфейса X19. Нужна оценка. Код до конца самому не нравится, в особенности имена переменных. Получился некий черновик)