Bonjour à tous
Je cherche à commander un domaine expiré, qui va être dispo vers décembre.
Je faisais ça il y a longtemps, via soapi qui est abandonné.
J'ai un peu la flemme de regarder la doc API ovh, pour commander un domaine.
Quelqu'un a-t-il un script tout prêt ou presque (en PHP), utilisant l'API ovh ?
Y a-t-il des limites sur le nombre de tentatives d'achat du domaine via l'API ?
Merci d'avance pour ceux qui ont ça sous la main.
Domaines et DNS - Commande domaine via API
Related questions
- Redirection d'un site http vers https
110795
23.03.2019 11:16
- Changement de nom de domaine
89899
12.03.2017 10:20
- Redirection HTTPS vers HTTPS
72517
14.02.2018 08:50
- Serveur SMTP/IMAP
69422
26.12.2018 18:26
- Retrouver un Nic Handle ?
69247
09.06.2018 01:56
- Redirection vers App Heroku
67080
29.01.2018 11:43
- Demande de suppression de compte OVH (espace client)
64274
16.04.2019 14:06
- Nom de domaine "transférable"
60181
18.10.2016 17:15
- À quoi servent ces entrées TXT par défaut ?
58459
08.07.2017 23:38
- Identifiant et email de connexion perdu
57298
25.01.2017 19:35
Bonjour,
En soap, cela doit dater pas mal :) Tu as un wrapper php pour l'api ovh **https://github.com/ovh/php-ovh Le github**
Amicalement
vi, ça date !! J'achetai à l'époque des domaines expirés pour un client.
Comme j'en faisais pas mal, j'avais potassé la doc, pour pouvoir faire ça correctement.
Là, j'avais pas trop envie de lire toute la doc, passer toutes les étapes, (genre comment récupérer l'état du domaine expiré, pour voir si je lance l'achat ou pas)...
D'où ma question, pour un script prêt à l'emploi, ou très rapidement adaptable.
Mais je sens que je vais devoir me coltiner un peu de doc, pour faire ça. Et comme toujours, le temps est le nerf de la guerre.
++ et merci quand même.
Bonjour,
Si besoin tu peux t'aider de ce petit remider des routes que tu devra utiliser (si je ne me trompe pas)
## Les domaines
**Pour récupérer la liste de tes domaines :**
GET /domain
**Pour récupérer le statut et la date de renewal de ton domaine:**
/domain/{domainName}/serviceInfos
Ce qui vas t'intéresser c'est le champ _status_ qui prend les valeurs
["expired","inCreation", "ok","pendingDebt","unPaid"]
Le champ _expiration_ qui as pour valeur une date au format YYYY-MM-DD
## Les paniers
**Pour créer un panier**
POST /order/cart
**Verifier la disponibilité d'un domaine**
GET /order/cart/{cartId}/domain
Ce qui vas t'intéresser c'est le champ _orderable_ qui prend un boolean comme valeur. Attention si le domaine est éligible à plusieurs type de pack la route retourne plusieurs tableau contenant ce boolean. Le champ _action_ te permettra de savoir s'il est achetable, transférable etc (d’ailleurs la doc de ce paramètre est manquant)
**Mettre le domaine au panier**
POST /order/cart/{cartId}/domain
**Verifier le contenu du panier**
GET /order/cart/{cartId}
Ce qui vas t'intéresser c'est le champ _items_ qui liste les produits du panier, utilise pour verifier ta commande avant de la lancer
**Vérifier un élément du panier**
/order/cart/{cartId}/item/{itemId}
**Assigner le panier à ton compte client**
POST /order/cart/{cartId}/assign
**Verifier que le panier à bien été assigné à ton compte**
GET /order/cart
**Vérification de la commande**
GET /order/cart/{cartId}/checkout
**Validation de la commande**
POST /order/cart/{cartId}/checkout
Ce qui vas t'intéresser c'est le champ _url_ qui te donne l'url du bon de commande et le champ _orderId_ avec l'id du bon de commande
## Les bon de commandes
**Verifier que le bon de commande est bien edité**
/me/order/{orderId}
**Lister les moyens de paiements disponible pour ce bon de commande**
GET /me/order/{orderId}/availableRegisteredPaymentMean
**$ Passe à la caisse $**
POST /me/order/{orderId}/payWithRegisteredPaymentMean
Par contre je n'ai pas pas pu tester cette route là, je n'avais rien à acheter lors de l'écriture de ce tuto, désole.
En espérant que cela t'aidera
Bonne soirée
merci à toi, je vais essayer de regarder ça d'ici la fin de semaine.
Et mettre au moins un truc en test.
Merci pour les infos que tu as mises, ça me fait gagner énormément de temps.
Par contre, lorsque je teste sur le domaine que je vise, je vois ça :
[description] => Demande de transfert d'un domaine .com
Hors, c'est un domaine expiré.
Je ne veux pas un transfert, je veux juste l'acheter dès qu'il est disponible !
Y a-t-il un truc que j'ai raté ?
Mon script actuel :
include 'zzconf.php';
/**
* First, download the latest release of PHP wrapper on github
* And include this script into the folder with extracted files
*/
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;
/**
* Instanciate an OVH Client.
* You can generate new credentials with full access to your account on
* the token creation page
*/
$ovh = new Api( $appKey, // Application Key
$appSecret, // Application Secret
'ovh-eu', // Endpoint of API OVH Europe (List of available endpoints)
$consKey); // Consumer Key
//je crée mon panier
$result = $ovh->post('/order/cart', array(
'description' => 'achat', // Description of your cart (type: string)
'expire' => date('Y-m-d').'T23:59:59+01:00', // Time of expiration of the cart (type: datetime)
'ovhSubsidiary' => 'FR', // OVH Subsidiary where you want to order (type: nichandle.OvhSubsidiaryEnum)
)
);
$idCart = $result['cartId'];
//vérifie la dispo d'un domaine
$result = $ovh->post('/order/cart/'.$idCart.'/domain', array(
'domain' => $domain, // Domain name requested (type: string)
));
//print_r( $result );
//vérifie le contenu du panier
$result = $ovh->get('/order/cart/'.$idCart);
//print_r( $result );
//assigne le panier à la commande
$result = $ovh->post('/order/cart/'.$idCart.'/assign');
//vérification de la commande
$result = $ovh->get('/order/cart/'.$idCart.'/checkout');
//validation de la commande
$result = $ovh->post('/order/cart/'.$idCart.'/checkout');
$idOrder = $result['orderId'];
$urlOrder = $result['url'];
print_r( $result );
//Vérifier que la commande est bien éditée
$result = $ovh->get('/me/order/'.$idOrder);
Je vois que si je passe par le manager, je peux payer le transfert du domaine...
Galère... Bon, faut que je trouve la commande qui indique le statut du domaine.
Tu peux me communiquer le nom du domaine ? En MP si ca t'arrange que le nom ne soit pas public.
Quelle route te retourne une description ?
pour le domaine, je ne veux vraiment pas le donner.
Je vais en chercher un tout à l'heure, expiré, pour l'exemple.
Pas compris la question sur le route qui retourne une description.
++
Quelle route à tu utilisé ?
C'est automatique.
Si je passe par une commande manuelle OVH, le même domaine expiré est indiqué transférable.
Si je teste chez d'autres registres, c'est la même chose. Pas logique pour moi (mais ça doit être logique quand même quelque part, mais je vois pas bien où)
Je précise que le domaine (.com) est expiré depuis 15 jours seulement. Donc pas encore achetable.
qu'y a t il dans le whois?
dans les lignes * status: il devrait y avoir redemptionPeriod?
https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-en#redemptionPeriod
s'il est indiqué transférable, c'est qu'il a encore un proprio, ce n'est pas étonnant, par contre transférable pendant une redemption le serait effectivement
Pour l'instant, le domaine est : clientHold
Domain Status: clientHold http://www.icann.org/epp#clientHold
Mais je trouve bizarre qu'on puisse acheter le transfert, sachant que le propriétaire actuel ne pourra sans doute pas valider ? et/ou le registre actuel car domaine expiré ?
oui, c'est curieux
hold c'est litige? pas encore en redemption donc?
par exemple, ovh avec leur contrat à tacite reconduction doivent mettre en hold (supposition) retardant le processus?
Tu as fait un post non ?
sur un get, il me sort :
[duration] => Array
(
[0] => P1Y
)
[pricingMode] => default
[offer] => gold
[quantityMax] => 1
[deliveryTime] =>
[phase] =>
[offerId] => com-transfer
[configurations] => Array
(
)
[productId] => domain
[action] => transfer
[orderable] => 1
S'il est expiré peut être qu'il y a un délai pendant lequel le détenteur du domaine peut encore le récupérer ? Ce qui expliquerai qu'il est juste transférable
Je ne crois pas qu'on puisse transférer un domaine expiré. Mais peut-être que si finalement, puisque j'ai fait le test chez plusieurs registres, et ils proposent tous le transfert.
Mais du coup, c'est très pénible, car je dois tester l'état, avant d'envoyer l'achat !
Car si je paie pour un transfert qui n'aura finalement jamais lieu... je sens que j'aurai énormément de mal à me faire rembourser.
tu n'as pas dit qu'il était en *hold* ?
après il doit passer en redemption
j'l'ai pas dit, j'l'ai écrit un peu plus haut.
Bonjour,
Des avancées dans ton développement
Amicalement
Salut
Non, je n'ai pas avancé, là, je suis overbooké.
J'ai juste regardé avant-hier, ovh renvoyait un message d'erreur, mais je n'ai pas pris le temps de regarder.
Normalement, je vais regarder dans la semaine.
`Fatal error: Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: `GET https://api.ovh.com/1.0/order/cart/2044a973-3236-4303-996c-b4afedac1b20/domain?domain=monpetitdomaineici.com` resulted in a `400 Bad Request` response: {"message":"Check timeout. Please retry later"} ' in /home/admin/domains/moi.fr/public_html/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:107 Stack trace: #0 /home/admin/domains/moi.fr/public_html/vendor/guzzlehttp/guzzle/src/Middleware.php(65): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response)) #1 /home/admin/domains/moi.fr/public_html/vendor/guzzlehttp/promises/src/Promise.php(199): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response)) #2 /home/admin/domains/moi.fr/public_html/vendor/guzzlehttp/promises/src/Promise.php(152): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array) #3 /home/admin/domains/moi.fr/public_html/vendor/guzzlehttp/pro in /home/admin/domains/moi.fr/public_html/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 107`
Voilà le petit message d'erreur reçu.
Le domaine est en statut redemptionPeriod, ceci explique peut-être cela.
Je recreuserai dans la journée ou demain.
j'essaie tant bien que mal de faire fonctionne l'api d'ovh. Je suis le process décrit ci dessus aimablement décrit par Lota.
Malheureusement, lors de l'assignation d'un cart, j'ai cette erreur :
Client error: `POST https://api.ovh.com/1.0/order/cart/5dc57210-4099-409d-aefc-30a8857d5372/assign` resulted in a `400 Bad Request` response: {"message":"Invalid signature","httpCode":"400 Bad Request","errorCode":"INVALID_SIGNATURE"}
Pourtant, l'id du cart est le bon, lorsque je teste avec la console en ligne https://api.ovh.com/console/ , cela fonctionne. Or avec l'appel api à distance non !
Quelqu'un aurait-il une piste de réflexion ? :)
Merci par avance