Skip to content

Instantly share code, notes, and snippets.

@dtbaker
Created October 9, 2015 02:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save dtbaker/67b2e969f24d4c18b80b to your computer and use it in GitHub Desktop.
Save dtbaker/67b2e969f24d4c18b80b to your computer and use it in GitHub Desktop.
Using the verify-purchase endpoint of the new Envato API to validate a purchase code.
<?php
// NOTE: verify-purchase has been deprecated and it's best to use the new /author/sale endpoint as documented on http://build.envato.com/
// created by Envato user wpdreams https://forums.envato.com/t/verify-purchase-class/3526
// usage example:
$o = EnvatoApi2::verifyPurchase( $purchase_code );
if ( is_object($o) ) {
// valid...
// $o contains the purchase data
}
// class:
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;
}
}
@radykal
Copy link

radykal commented Sep 20, 2016

I copied your code and tried to make an API call to https://api.envato.com/v1/market/total-items.json.

I tried everything but I always get access denied:

Access Denied You don't have permission to access "http://api.envato.com/v1/market/total-items.json" on this server.

Do you have any idea?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment