Verify purchase class

Hi!

I’ve quickly put together a class to use for verifying the purchases with the new API, with a check for the support period as well.

Usage:

$o = EnvatoApi2::verifyPurchase( $purchase_code );

if ( is_object($o) ) {
   // valid...
   // $o contains the purchase data
}

Notes:

  • If the user purchased the item before sept 1. (thus the “supported_until” property is empty), the purchase is returned as verified.
  • Don’t forget to change the bearer to yours
  • No API key is needed, only the Bearer string

Code:

class EnvatoApi2 {

  // Bearer, no need for OAUTH token, change this to your bearer string
  // https://build.envato.com/api/#token
  private static $bearer = "xxxxxxxxxxxxxxxxxxxxxxxxxx";

  static function getPurchaseData( $code ) {
    
    //setting the header for the rest of the api
    $bearer   = 'bearer ' . self::$bearer;
    $header   = array();
    $header[] = 'Content-length: 0';
    $header[] = 'Content-type: application/json; charset=utf-8';
    $header[] = 'Authorization: ' . $bearer;
    
    $verify_url = 'https://api.envato.com/v1/market/private/user/verify-purchase:'.$code.'.json';
    $ch_verify = curl_init( $verify_url . '?code=' . $code );
    
    curl_setopt( $ch_verify, CURLOPT_HTTPHEADER, $header );
    curl_setopt( $ch_verify, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt( $ch_verify, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch_verify, CURLOPT_CONNECTTIMEOUT, 5 );
    curl_setopt( $ch_verify, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    
    $cinit_verify_data = curl_exec( $ch_verify );
    curl_close( $ch_verify );
    
    if ($cinit_verify_data != "")    
      return json_decode($cinit_verify_data);  
    else
      return false;
      
  }
  
  static function verifyPurchase( $code ) {
    $verify_obj = self::getPurchaseData($code); 
    
    // Check for correct verify code
    if ( 
        (false === $verify_obj) || 
        !is_object($verify_obj) ||
        !isset($verify_obj->{"verify-purchase"}) ||
        !isset($verify_obj->{"verify-purchase"}->item_name)
    )
      return -1;

    // If empty or date present, then it's valid
    if (
      $verify_obj->{"verify-purchase"}->supported_until == "" ||
      $verify_obj->{"verify-purchase"}->supported_until != null
    )
      return $verify_obj->{"verify-purchase"};  
    
    // Null or something non-string value, thus support period over
    return 0;
    
  }
}

I thought it might be usefult to someone to transition to the new API.

5 Likes

Hi,

Thank you for the code, can you please specify the option we need to check in order to verify purchases https://build.envato.com/create-token/ Thanks

View your items’ sales history

1 Like