В общем, компался я и копался, в итоге решил свою проблему, было еще куча ошибок, но вроде исправил.
Дело было 1. Из-за того что в ссылке было указано RUB а в ключе нет.
2. Порядок добавления параметров.
3. Описание заказа, # <- символ не пропускала платежка эта, пришлось заменить на №. Пробовал шифровать, но не получалось с первым символом.
Все, вот рабочий код:
private function getUrl($sum, $user_id, $order_id)
{
$desc = 'Оплата заказа №' . $order_id;
$hashStr = hash('sha256', $order_id.'{up}'.$desc.'{up}'.$sum.'{up}'.Config::SECRET_KEY);
return 'https://unitpay.ru/pay/'.Config::PUBLIC_KEY.'/card?account=' . $order_id . '&desc=' . $desc . '&sum=' . $sum . '&signature=' . $hashStr;
}
Я тут вывожу ссылку на форму, вы можете по своему переделать.