You can use the PHP library Imagick to add the metadata to the .png file by hand.
Please check how this custom small library use it:
https://github.com/jmunozdev/php-tiny-openbadges-image-baker
$im = new Imagick($image_url);
// Set the image properties.
$im->setimageproperty('openbadges', $this->assertionJsonUrl);
// Return the final baked blob of the imagefile.
return base64_encode($im->getimageblob());
It is using the Imagick library to create the donwloadable .png file with the data embedded, also providing an approach to Drupal 7. I used it and it is working great, you can check the integrity of your badge image here: http://bakery.openbadges.org/
Hope it helps.