Support » Plugin: License Manager for WooCommerce » Get license key by order id?

  • Resolved adamv2

    (@adamv2)


    Hi Drazen,

    I need to verify the license key (the string, not its status) from one of my hooks. I have an order id and the product id and I have to validate the license provided by a customer. How can I do that from a hook level??

    Additionally, is the plugin translation ready? I would need to do some translation to Polish, not necessarily an official one but if you could use it afterwards, I would be happy to help.

    Many thanks!

Viewing 9 replies - 1 through 9 (of 9 total)
  • Plugin Author Drazen Bebic

    (@drazenbebic)

    Hello @adamv2

    thank you for your message and for using my plugin.

    To find a license key by the license key itself, and its order ID, you could use the following code:

    /** @var \LicenseManagerForWooCommerce\Models\Resources\License $license */
    $license = \LicenseManagerForWooCommerce\Repositories\Resources\License::instance()->findBy(
        array(
            'hash'    => apply_filters('lmfwc_hash', 'YOUR-LICENSE-KEY'),
            'orderId' => 101
        )
    );
    
    if ($license) {
        echo $license->getDecryptedLicenseKey();
    }

    $license will either be “false”, if not found, or an instance of the License Resource Model. Let me know if you need further help with this.

    PS: Yes, the plugin is translation ready. Feel free to contribute to the Polish translation, I will see to it that the translations get approved asap. (Do you need help with this?)

    adamv2

    (@adamv2)

    Thank you for the prompt reply.
    To be honest, I am not quite sure if I use the above code properly.

    When I try to use the code directly it seems that $license is false, since the script displays nothing. When I use echo $license->getDecryptedLicenseKey() without boolean check, I got this error:
    Fatal error: Uncaught Error: Call to a member function getDecryptedLicenseKey() on bool

    What am I doing wrong here? Should I include something first?

    And yes, since I only did unofficial translation for my company purposes before, I would very much appreciate your guidance how can I contribute to your plugin.

    • This reply was modified 12 months ago by adamv2.
    Plugin Author Drazen Bebic

    (@drazenbebic)

    Hello @adamv2

    That means that the license key wasn’t found using the input parameters. Have you replaced YOUR-LICENSE-KEY (hash) and 101 (order ID) with actual values?

    PS: You can contribute to the Polish translation here:

    https://translate.wordpress.org/locale/pl/default/wp-plugins/license-manager-for-woocommerce/

    adamv2

    (@adamv2)

    Oh, I think I know where the problem lies.

    I do not have hash to provide. I do have ORDER_ID, PRODUCT_ID and the plain text license key. I want to check if the plain text license key matches the one stored in the databse for the order_id and product_id. One way or another.

    The simplest solution I first asked was to have a function to get PLAIN text license from the plugin database with given order_id and product_id and check if it is equal to the one from the user’s input (web form).

    Is there a solution like that available?

    Plugin Author Drazen Bebic

    (@drazenbebic)

    Hello @adamv2

    Currently there is no simple function to retrieve a license key from the database. It will be added in the near future however. Until then, the function I provided will work, you don’t need the hashed license key. The filter lmfwc_hash will hash the license key for you and search the database for its equivalent. In the code, you need to replace YOUR-LICENSE-KEY with your unhashed license key. I also noticed that I made a mistake there, so the correct code would be:

    /** @var \LicenseManagerForWooCommerce\Models\Resources\License $license */
    $license = \LicenseManagerForWooCommerce\Repositories\Resources\License::instance()->findBy(
        array(
            'hash'       => apply_filters('lmfwc_hash', 'YOUR-LICENSE-KEY'),
            'order_id'   => YOUR-ORDER-ID
            'product_id' => YOUR-PRODUCT-ID
        )
    );
    
    if ($license) {
        echo $license->getDecryptedLicenseKey();
    }

    Please note that I replaced orderId with order_id. I also added the product_id array key, so that it also queries by product ID.

    Let me know if this helps.

    Plugin Author Drazen Bebic

    (@drazenbebic)

    Hello @adamv2

    Do you still need help with this?

    Hi Drazen,
    Thank you very much for your help.
    Since I needed just a fraction of functionality of the plugin, I managed to create that from scratch in my own code, so no farther assistance is required.
    This is a very good plugin of yours though.
    Good luck with it!
    Adam

    Closing the case.

    Plugin Author Drazen Bebic

    (@drazenbebic)

    @adamv2

    Thanks Adam, good luck to you as well 🙂

Viewing 9 replies - 1 through 9 (of 9 total)
  • The topic ‘Get license key by order id?’ is closed to new replies.