cp.mastername.ru API (https шлюз)

cp.mastername.ru API (https шлюз) для регистраци доменов от mastername.ru
Описание API mastername.ru/documents/mastername_partners_gateway.doc
что интересно то этот документ написан 06.2010, а в гугле нету ниодного примера нина одном языке программирования.
Вот решил это исправить. т.к. в поиске яндекса по запросу «cp.mastername.ru api» 40 раз ищют в месяц.

PERL (за этот код спасибо девушке из тех поддержки. С этого примера все и началось, и понял свои ошибки.
Интересно она сама его пишет ))) Yana Besmeltseva vk.com/id826604)

#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;
use URI::Escape;

my $request = "[request]
login: 123/RD-G
password: 123456
action: register_domain
request-id: 20060607163504.34252\@some.partner.ru

[domain]
client: 456/RD-P
domain: pupkin.ru
state: delegated
nserver: ns1.pupkin.ru
nserver: ns2.pupkin.ru";

my $ua = new LWP::UserAgent;
$ua->agent("CoffeeMaker/1.0");
my $req = new HTTP::Request;
$req->method('POST');
$req->uri('https://cp.mastername.ru/partner_gateway');
$req->content_type('application/x-www-form-urlencoded');
$req->content( "request=" . uri_escape($request) );

# Proverka
#print "request=" . uri_escape($request)
my $res = $ua->request($req);
my $answer = $res->content;

if( $is_success )
{
        print $answer;
}
else
{
        print $answer;
}


PHP
<?
$post = "request=".rawurlencode("[request]
login: 123456/RD-G
password: 123456_pass
action: register_domain
request-id: 200606071635kk.".rand()."@some.partner.ru

[domain]
client: 543210/RD-P
domain: pupkin.ru
state: delegated
nserver: ns1.pupkin.ru
nserver: ns2.pupkin.ru");


$url = "https://cp.mastername.ru/partner_gateway";


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Opera 11.00");
curl_setopt($ch, CURLOPT_POST, 'application/x-www-form-urlencoded');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

# Proverka
#echo $post;
#exit();
$response = curl_exec($ch);
curl_close($ch);

# Sparsit na slovo "errors" esli netu to TRUE!!!
echo $response;

?>

Запрос на PHP использует rawurlencode, а не urlencode. Потому что urlencode кодирует пробел в "+"(плюс), а rawurlencode в "%20". В этом то у меня и была загвоздка.

Еще в perl вставляются данные с экранированием @(собаки), а у PHP нет.

У меня все сайты в UTF8, а их API принимает в koi8-r. Теперь придется перекодировать все входящие данные от пользователей.

1 комментарий

avatar
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;
use URI::Escape;

my $request = "[request]
login: 123/RD-G
password: 123456
action: register_domain
request-id: 20060607163504.34252\@some.partner.ru

[domain]
client: 456/RD-P
domain: pupkin.ru
state: delegated
nserver: ns1.pupkin.ru
nserver: ns2.pupkin.ru";

my $ua = new LWP::UserAgent;
$ua->agent("CoffeeMaker/1.0");
my $req = new HTTP::Request;
$req->method('POST');
$req->uri('https://cp.mastername.ru/partner_gateway');
$req->content_type('application/x-www-form-urlencoded');
$req->content( "request=" . uri_escape($request) );

# Proverka
#print "request=" . uri_escape($request)
my $res = $ua->request($req);
my $answer = $res->content;

if( $is_success )
{
        print $answer;
}
else
{
        print $answer;
}
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.