thedarkwinter / Net-DRI

Perl EPP Client: Net-DRI-0.X_tdw based on Net-DRI-0.96_09
GNU General Public License v2.0
19 stars 15 forks source link

Premium .tv domains not work #433

Closed ivan1986 closed 3 years ago

ivan1986 commented 3 years ago

Check premium domains on tv got error

<domain:reason>Fee check extension missing</domain:reason>
thedarkwinter commented 3 years ago

Hi @ivan1986

VeriSign switched to using Regext-Fee extension last year. (https://github.com/thedarkwinter/Net-DRI/commit/5a4274962af6dad123f4ca45c3b416735daf1721)

Since then, there seems like an issue where VeriSign returns this error only if its a premium domain, but correctly returns info if its not premium. So in effect, if it returns this error, you to redo the domain:check with $rd->{premium_domain} = 1; (Or always enable premium check probably solves the issue).

Let me know if this helps!

ivan1986 commented 3 years ago

I always enable premium domain and also disable Fee add enable VeriSign::PremiumDomain in default_extensions list for NameStore - this works. Looks like then not switch

thedarkwinter commented 3 years ago

Does it work for you if you in that configuration?

I think its better to enable Fee and Disable VeriSign::PremiumDomain completely.

ivan1986 commented 3 years ago

If enable Fee and disable VeriSign::PremiumDomain it's not work

thedarkwinter commented 3 years ago

It works fine for me. See below example

2021-06-16 11:07:34.691813 [NOTICE] OUT 
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
<command>
<check>
<domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
<domain:name>example.tv</domain:name>
</domain:check>
</check>
<extension>
<fee:check xmlns:fee="urn:ietf:params:xml:ns:epp:fee-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:epp:fee-1.0 fee-1.0.xsd">
<fee:command name="create"/>
<fee:command name="renew"/>
<fee:command name="transfer"/>
<fee:command name="restore"/>
</fee:check>
<namestoreExt:namestoreExt xmlns:namestoreExt="http://www.verisign-grs.com/epp/namestoreExt-1.1" xsi:schemaLocation="http://www.verisign-grs.com/epp/namestoreExt-1.1 namestoreExt-1.1.xsd">
<namestoreExt:subProduct>dotTV</namestoreExt:subProduct>
</namestoreExt:namestoreExt>
</extension>
<clTRID>EXAMPLE</clTRID>
</command>
</epp>

2021-06-16 11:07:34.798050 [NOTICE] IN 
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
ivan1986 commented 3 years ago

for not premium domains is ok, for premium - fail

thedarkwinter commented 3 years ago

My example above was a premium domain (but I removed the details because its public). Can you please provide an example of the error you are receiving? It is working fine for us for months...

ivan1986 commented 3 years ago

If VeriSign::PremiumDomain on

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
<command>
    <check>
        <domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
                      xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
            <domain:name>namesilo125.tv</domain:name>
        </domain:check>
    </check>
    <extension>
        <premiumdomain:check xmlns:premiumdomain="http://www.verisign.com/epp/premiumdomain-1.0"
                             xsi:schemaLocation="http://www.verisign.com/epp/premiumdomain-1.0 premiumdomain-1.0.xsd">
            <premiumdomain:flag>1</premiumdomain:flag>
        </premiumdomain:check>
        <namestoreExt:namestoreExt xmlns:namestoreExt="http://www.verisign-grs.com/epp/namestoreExt-1.1"
                                   xsi:schemaLocation="http://www.verisign-grs.com/epp/namestoreExt-1.1 namestoreExt-1.1.xsd">
            <namestoreExt:subProduct>dotTV</namestoreExt:subProduct>
        </namestoreExt:namestoreExt>
    </extension>
    <clTRID>VERISIGN::NAMESTORE-105-1623852840354927</clTRID>
</command>
</epp>

<?xml version="1.0" encoding="UTF-8"?><epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
    <result code="1000">
        <msg>Command completed successfully</msg>
    </result>
    <resData>
        <domain:chkData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
            <domain:cd>
                <domain:name avail="1">NAMESILO125.TV</domain:name>
            </domain:cd>
        </domain:chkData>
    </resData>
    <extension>
        <premiumdomain:chkData xmlns:premiumdomain="http://www.verisign.com/epp/premiumdomain-1.0">
            <premiumdomain:cd>
                <premiumdomain:name premium="1">NAMESILO125.TV</premiumdomain:name>
                <premiumdomain:price unit="USD">125.00</premiumdomain:price>
                <premiumdomain:renewalPrice unit="USD">125.00</premiumdomain:renewalPrice>
            </premiumdomain:cd>
        </premiumdomain:chkData>
    </extension>
    <trID>
        <clTRID>VERISIGN::NAMESTORE-105-1623852840354927</clTRID>
        <svTRID>1623852840464-224301888</svTRID>
    </trID>
</response>
</epp>

if VeriSign::PremiumDomain on, and independ of Fee is on or off

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
<command>
    <check>
        <domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
                      xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
            <domain:name>namesilo125.tv</domain:name>
        </domain:check>
    </check>
    <extension>
        <namestoreExt:namestoreExt xmlns:namestoreExt="http://www.verisign-grs.com/epp/namestoreExt-1.1"
                                   xsi:schemaLocation="http://www.verisign-grs.com/epp/namestoreExt-1.1 namestoreExt-1.1.xsd">
            <namestoreExt:subProduct>dotTV</namestoreExt:subProduct>
        </namestoreExt:namestoreExt>
    </extension>
    <clTRID>VERISIGN::NAMESTORE-109-1623852899414443</clTRID>
</command>
</epp>

<?xml version="1.0" encoding="UTF-8"?><epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
    <result code="1000">
        <msg>Command completed successfully</msg>
    </result>
    <resData>
        <domain:chkData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
            <domain:cd>
                <domain:name avail="0">NAMESILO125.TV</domain:name>
                <domain:reason>Fee check extension missing</domain:reason>
            </domain:cd>
        </domain:chkData>
    </resData>
    <trID>
        <clTRID>VERISIGN::NAMESTORE-109-1623852899414443</clTRID>
        <svTRID>1623852899559-224301910</svTRID>
    </trID>
</response>
</epp>
thedarkwinter commented 3 years ago

Hi @ivan1986 . Yes, as I mentioned earlier, with the Fee extension in use, Verisign returns this error if you don't actually include the extension in the check command if the domain happens to be a premium. So if they return this error, then you must resend the command including the Fee extension (or just always use the Fee extension).

<extension>
<fee:check xmlns:fee="urn:ietf:params:xml:ns:epp:fee-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:epp:fee-1.0 fee-1.0.xsd">
<fee:command name="create"/>
<fee:command name="renew"/>
<fee:command name="transfer"/>
<fee:command name="restore"/>
</fee:check>

This is a "feature" in Verisign's system, its not a flaw in Net-DRI. If you choose to continue using the PremiumDomain extension then go for it, but personally I think its better to try to use the new standard Fee (even if its a bit messy).

ivan1986 commented 3 years ago

Hm, what you do for send?

<fee:check xmlns:fee="urn:ietf:params:xml:ns:epp:fee-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:epp:fee-1.0 fee-1.0.xsd">
<fee:command name="create"/>
<fee:command name="renew"/>
<fee:command name="transfer"/>
<fee:command name="restore"/>
</fee:check>

I has Fee in default extensions, but this part not exist in request

in sub default_extensions Fee exist in list

thedarkwinter commented 3 years ago

When running the domain check, you need to parse requested check method(s). See examples in the Fee test file: https://github.com/thedarkwinter/Net-DRI/blob/master/t/Net/DRI/Protocol/EPP/Extensions/Fee/Fee-1.0.t#L75

ivan1986 commented 3 years ago

Sorry for late response - working

thedarkwinter commented 3 years ago

Thanks for confirming! (y)