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.