Skip to content

Instantly share code, notes, and snippets.

@mrqaidi
Forked from dtbaker/class.envato2.php
Created March 1, 2017 19:32
Show Gist options
  • Save mrqaidi/77d6bbeb055c39c0f02118e78fea5544 to your computer and use it in GitHub Desktop.
Save mrqaidi/77d6bbeb055c39c0f02118e78fea5544 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;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment