SlideShare une entreprise Scribd logo
1  sur  22
YAPC::Russia 2009 Использование WebMoney в Perl Александр Лурье
Интерфейсы WebMoney
Идентификаторы в WebMoney
Регистрация в WebMoney ,[object Object],[object Object],[object Object],[object Object]
Читаем спецификацию XML-интерфейса http://www.webmoney.ru/rus/developers/interfaces/xml/index.shtml <w3s.request> <reqn></reqn> <wmid></wmid> <sign></sign> <invoice> <orderid></orderid> <customerwmid></customerwmid> <storepurse></storepurse> <amount></amount> <desc></desc> <address></address> <period></period> <expiration></expiration> </invoice> </w3s.request>  <w3s.response> <reqn></reqn> <retval></retval> <retdesc></retdesc> <invoice id=&quot;n1&quot; ts=&quot;n2&quot;> <orderid></orderid> <customerwmid></customerwmid> <storepurse></storepurse> <amount></amount> <desc></desc> <address></address> <period></period> <expiration></expiration> <state>0</state> <datecrt></datecrt> <dateupd></dateupd> </invoice> </w3s.response>
Можно сделать вручную ,[object Object],[object Object],[object Object],[object Object],Унылое занятие!
Есть способ проще use Business::WebMoney;
Инициализация use Business::WebMoney; my $wm = Business::WebMoney->new( p12_file => '/path/to/cert.p12', p12_pass => 'secret', );
Посмотрим остатки денег my $res = $wm-> get_balance ( reqn => 1, wmid => '123456789012', ) or die $wm->errstr;
Остатки денег [ { amount => '123.45', pursename => 'R987654321098' desc => 'Моя копилка', id => '16081390', }, ... ] Уау! Это же просто список хешей!
Выставим счёт на оплату my $res = $wm-> invoice ( reqn => $reqn, orderid => 1242447111, customerwmid => '542532589883', storepurse => 'R369676127866', amount => 100, desc => 'Слон в отличном состоянии, пробег 16000 км. С доставкой и растаможкой', ) or die $wm->errstr; Не забудьте про  use utf8 !
Подтверждение от сервера { 'datecrt' => '20090516 08:11:54', 'period' => '0', 'dateupd' => '20090516 08:11:54', 'ts' => '83150332', 'storepurse' => 'R369676127866', 'state' => '0', 'orderid' => '1242447111', 'amount' => '100.00', 'customerwmid' => '542532589883', 'desc' => 'Слон в отличном состоянии, пробег 16000 км. С доставкой и растаможкой', 'expiration' => '0', 'id' => ' 83150332 ', 'address' => '' };
 
Проверим оплату my $res = $wm-> get_out_invoices ( reqn => $reqn, purse => 'R369676127866', datestart => '20090516 08:00:00', datefinish => '20090516 08:20:00', ) or die $wm->errstr;
Возвращается список счетов [ { 'datecrt' => '20090516 08:11:54', 'period' => '0', 'wmtranid' => '0', 'dateupd' => '20090516 08:11:54', 'ts' => '83150332', 'storepurse' => 'R369676127866', 'state' => '0', 'orderid' => '1242447111', 'amount' => '100', 'customerwmid' => '542532589883', 'desc' => 'Слон в отличном состоянии, пробег 16000 км. С доставкой и растаможкой', 'customerpurse' => '', 'expiration' => '0', 'address' => '', 'id' => '83150332' } ];
Состояния оплаты счета 0 — не оплачен 1 — оплачен с протекцией 2 — оплачен полностью 3 — отклонён покупателем
Как принимать платежи
Как перевести деньги my $res = $wm-> transfer ( reqn => $reqn, tranid => $tranid, pursesrc => 'R369676127866', pursedest => 'R736758049958', amount => 100, desc => 'Тестовый перевод', ) or die $wm->errstr;
Как правильно переводить деньги
Безопасность ,[object Object],[object Object]
Получение доступа к API ,[object Object],[object Object],[object Object]
Если пользовались пожалуйста, напишите свой отзыв: Александр Лурье< [email_address] > (и если понравилось, и если не понравилось, и если вопросы возникли)

Contenu connexe

Similaire à Использование WebMoney в Perl‎

SP2010 for ASP.NET dev Ru
SP2010 for ASP.NET dev RuSP2010 for ASP.NET dev Ru
SP2010 for ASP.NET dev RuIvan Padabed
 
Работа с платежными системами в Django (Paypal, WebMoney)
Работа с платежными системами в Django (Paypal, WebMoney)Работа с платежными системами в Django (Paypal, WebMoney)
Работа с платежными системами в Django (Paypal, WebMoney)proft
 
Mobile Applications With Geo Google API
Mobile Applications With Geo Google APIMobile Applications With Geo Google API
Mobile Applications With Geo Google APIsshpack
 
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеровMedia Gorod
 
Уведомление о внесении изменений в стоимость SSL-сертификатов
Уведомление о внесении изменений в стоимость SSL-сертификатовУведомление о внесении изменений в стоимость SSL-сертификатов
Уведомление о внесении изменений в стоимость SSL-сертификатовPavel Karpovskii
 
семинар I context
семинар I contextсеминар I context
семинар I contextSEMonline .Ru
 
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart  -nemnogo_primerov_iz_zhizniUbercart  -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhiznidrupalconf
 
Zen Coding
Zen CodingZen Coding
Zen Coding404fest
 

Similaire à Использование WebMoney в Perl‎ (13)

SP2010 for ASP.NET dev Ru
SP2010 for ASP.NET dev RuSP2010 for ASP.NET dev Ru
SP2010 for ASP.NET dev Ru
 
Работа с платежными системами в Django (Paypal, WebMoney)
Работа с платежными системами в Django (Paypal, WebMoney)Работа с платежными системами в Django (Paypal, WebMoney)
Работа с платежными системами в Django (Paypal, WebMoney)
 
Ci
CiCi
Ci
 
Mobile Applications With Geo Google API
Mobile Applications With Geo Google APIMobile Applications With Geo Google API
Mobile Applications With Geo Google API
 
Js Http Request дмитрий котеров
Js Http Request   дмитрий котеровJs Http Request   дмитрий котеров
Js Http Request дмитрий котеров
 
Perl in practice
Perl in practicePerl in practice
Perl in practice
 
Уведомление о внесении изменений в стоимость SSL-сертификатов
Уведомление о внесении изменений в стоимость SSL-сертификатовУведомление о внесении изменений в стоимость SSL-сертификатов
Уведомление о внесении изменений в стоимость SSL-сертификатов
 
Vormid
VormidVormid
Vormid
 
семинар I context
семинар I contextсеминар I context
семинар I context
 
5 лет Агентству экономического развития Тольятти
5 лет Агентству экономического развития Тольятти5 лет Агентству экономического развития Тольятти
5 лет Агентству экономического развития Тольятти
 
Kaardikeskus
KaardikeskusKaardikeskus
Kaardikeskus
 
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart  -nemnogo_primerov_iz_zhizniUbercart  -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
 
Zen Coding
Zen CodingZen Coding
Zen Coding
 

Plus de mayperl

‎Тестирование в проекте REG.RU‎
‎Тестирование в проекте REG.RU‎‎Тестирование в проекте REG.RU‎
‎Тестирование в проекте REG.RU‎mayperl
 
Browser sniffing в 21 веке‎
Browser sniffing в 21 веке‎Browser sniffing в 21 веке‎
Browser sniffing в 21 веке‎mayperl
 
Что будет с Перлом?
Что будет с Перлом?Что будет с Перлом?
Что будет с Перлом?mayperl
 
Вебклуб Perlgolf.ru
Вебклуб Perlgolf.ruВебклуб Perlgolf.ru
Вебклуб Perlgolf.rumayperl
 
Perl в хэке и хэки в Perl
Perl в хэке и хэки в PerlPerl в хэке и хэки в Perl
Perl в хэке и хэки в Perlmayperl
 
Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎mayperl
 
Сравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на PerlСравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на Perlmayperl
 
Курс Perl в УрГУ
Курс Perl в УрГУКурс Perl в УрГУ
Курс Perl в УрГУmayperl
 
Ведение документации в perl6: POD, да не тот !
Ведение документации в perl6: POD, да не тот !Ведение документации в perl6: POD, да не тот !
Ведение документации в perl6: POD, да не тот !mayperl
 
Making Your Own CPAN
Making Your Own CPANMaking Your Own CPAN
Making Your Own CPANmayperl
 
Распределенная обработка потоковых данных
Распределенная обработка потоковых данныхРаспределенная обработка потоковых данных
Распределенная обработка потоковых данныхmayperl
 
Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎mayperl
 
Groovy Vs Perl
Groovy Vs PerlGroovy Vs Perl
Groovy Vs Perlmayperl
 
Написание DSL в Perl
Написание DSL в PerlНаписание DSL в Perl
Написание DSL в Perlmayperl
 
10.000 вариантов снять квартиру или сам себе POE-риелтор
10.000 вариантов снять квартиру или сам себе POE-риелтор10.000 вариантов снять квартиру или сам себе POE-риелтор
10.000 вариантов снять квартиру или сам себе POE-риелторmayperl
 

Plus de mayperl (15)

‎Тестирование в проекте REG.RU‎
‎Тестирование в проекте REG.RU‎‎Тестирование в проекте REG.RU‎
‎Тестирование в проекте REG.RU‎
 
Browser sniffing в 21 веке‎
Browser sniffing в 21 веке‎Browser sniffing в 21 веке‎
Browser sniffing в 21 веке‎
 
Что будет с Перлом?
Что будет с Перлом?Что будет с Перлом?
Что будет с Перлом?
 
Вебклуб Perlgolf.ru
Вебклуб Perlgolf.ruВебклуб Perlgolf.ru
Вебклуб Perlgolf.ru
 
Perl в хэке и хэки в Perl
Perl в хэке и хэки в PerlPerl в хэке и хэки в Perl
Perl в хэке и хэки в Perl
 
Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎
 
Сравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на PerlСравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на Perl
 
Курс Perl в УрГУ
Курс Perl в УрГУКурс Perl в УрГУ
Курс Perl в УрГУ
 
Ведение документации в perl6: POD, да не тот !
Ведение документации в perl6: POD, да не тот !Ведение документации в perl6: POD, да не тот !
Ведение документации в perl6: POD, да не тот !
 
Making Your Own CPAN
Making Your Own CPANMaking Your Own CPAN
Making Your Own CPAN
 
Распределенная обработка потоковых данных
Распределенная обработка потоковых данныхРаспределенная обработка потоковых данных
Распределенная обработка потоковых данных
 
Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎
 
Groovy Vs Perl
Groovy Vs PerlGroovy Vs Perl
Groovy Vs Perl
 
Написание DSL в Perl
Написание DSL в PerlНаписание DSL в Perl
Написание DSL в Perl
 
10.000 вариантов снять квартиру или сам себе POE-риелтор
10.000 вариантов снять квартиру или сам себе POE-риелтор10.000 вариантов снять квартиру или сам себе POE-риелтор
10.000 вариантов снять квартиру или сам себе POE-риелтор
 

Использование WebMoney в Perl‎

  • 1. YAPC::Russia 2009 Использование WebMoney в Perl Александр Лурье
  • 4.
  • 5. Читаем спецификацию XML-интерфейса http://www.webmoney.ru/rus/developers/interfaces/xml/index.shtml <w3s.request> <reqn></reqn> <wmid></wmid> <sign></sign> <invoice> <orderid></orderid> <customerwmid></customerwmid> <storepurse></storepurse> <amount></amount> <desc></desc> <address></address> <period></period> <expiration></expiration> </invoice> </w3s.request> <w3s.response> <reqn></reqn> <retval></retval> <retdesc></retdesc> <invoice id=&quot;n1&quot; ts=&quot;n2&quot;> <orderid></orderid> <customerwmid></customerwmid> <storepurse></storepurse> <amount></amount> <desc></desc> <address></address> <period></period> <expiration></expiration> <state>0</state> <datecrt></datecrt> <dateupd></dateupd> </invoice> </w3s.response>
  • 6.
  • 7. Есть способ проще use Business::WebMoney;
  • 8. Инициализация use Business::WebMoney; my $wm = Business::WebMoney->new( p12_file => '/path/to/cert.p12', p12_pass => 'secret', );
  • 9. Посмотрим остатки денег my $res = $wm-> get_balance ( reqn => 1, wmid => '123456789012', ) or die $wm->errstr;
  • 10. Остатки денег [ { amount => '123.45', pursename => 'R987654321098' desc => 'Моя копилка', id => '16081390', }, ... ] Уау! Это же просто список хешей!
  • 11. Выставим счёт на оплату my $res = $wm-> invoice ( reqn => $reqn, orderid => 1242447111, customerwmid => '542532589883', storepurse => 'R369676127866', amount => 100, desc => 'Слон в отличном состоянии, пробег 16000 км. С доставкой и растаможкой', ) or die $wm->errstr; Не забудьте про use utf8 !
  • 12. Подтверждение от сервера { 'datecrt' => '20090516 08:11:54', 'period' => '0', 'dateupd' => '20090516 08:11:54', 'ts' => '83150332', 'storepurse' => 'R369676127866', 'state' => '0', 'orderid' => '1242447111', 'amount' => '100.00', 'customerwmid' => '542532589883', 'desc' => 'Слон в отличном состоянии, пробег 16000 км. С доставкой и растаможкой', 'expiration' => '0', 'id' => ' 83150332 ', 'address' => '' };
  • 13.  
  • 14. Проверим оплату my $res = $wm-> get_out_invoices ( reqn => $reqn, purse => 'R369676127866', datestart => '20090516 08:00:00', datefinish => '20090516 08:20:00', ) or die $wm->errstr;
  • 15. Возвращается список счетов [ { 'datecrt' => '20090516 08:11:54', 'period' => '0', 'wmtranid' => '0', 'dateupd' => '20090516 08:11:54', 'ts' => '83150332', 'storepurse' => 'R369676127866', 'state' => '0', 'orderid' => '1242447111', 'amount' => '100', 'customerwmid' => '542532589883', 'desc' => 'Слон в отличном состоянии, пробег 16000 км. С доставкой и растаможкой', 'customerpurse' => '', 'expiration' => '0', 'address' => '', 'id' => '83150332' } ];
  • 16. Состояния оплаты счета 0 — не оплачен 1 — оплачен с протекцией 2 — оплачен полностью 3 — отклонён покупателем
  • 18. Как перевести деньги my $res = $wm-> transfer ( reqn => $reqn, tranid => $tranid, pursesrc => 'R369676127866', pursedest => 'R736758049958', amount => 100, desc => 'Тестовый перевод', ) or die $wm->errstr;
  • 20.
  • 21.
  • 22. Если пользовались пожалуйста, напишите свой отзыв: Александр Лурье< [email_address] > (и если понравилось, и если не понравилось, и если вопросы возникли)