I've done it!
I had to force amount and currency conversion. Here is how I've put the amount multiplied by the paypal currency rate 0.487806182.
public static function button($amount = '0.00', $description = '', $itemnumber = '', $extra_array = null) {
if($amount > 0) {
if(osp_param('paypal_standard') == 1) {
$amount = strval(intval($amount) * 0.487806182);
self::standardButton($amount, $description, $itemnumber, $extra_array);
} else {
self::dgButton($amount, $description, $itemnumber, $extra_array);
}
}
}
I know it would be better to set it dynamically, but that should be fine for BGN to EUR conversion, since the rate stays almost like a constant.
Then, inside of "public static function standardButton" I have hardcoded the currency to be 'EUR'.
<!-- <input type="hidden" name="currency_code" value="<?php echo osc_esc_html(osp_currency()); ?>" /> -->
<input type="hidden" name="currency_code" value="<?php echo osc_esc_html("EUR"); ?>" />
In this way all the prices on website are listed in BGN, and on paypal button click they are automatically being converted and sent in "EUR".
This is how all unsupported countries/currencies have to deal with paypal.
I hope this would help someone, who has stuck on this step.