Если кому-то интересно, сам столкнулся с такой проблемой, как делал оплату для сайта
https://vsedizaineri.com - там тоже на PHP была админка и проблема была с передачей параметра Receipt.
В итоге проблема решилась вот как. Параметр в эту сигнатуру передается без rawurlencode, а вот уже для формирования ссылки - там уже с rawurlencode.
Грубо говоря, если по аналогии с кодом выше, получится так:
$receipt_array= Array(
"sno" => "usn_income",
"items" => Array(
Array(
"name" => "Услуга",
"quantity" => "1",
"sum" => $out_summ,
"payment_method" => "full_payment",
"payment_object" => "payment",
"tax" => "none"
)
)
);
$receipt = json_encode($receipt_array);
$receipt_url = rawurlencode(json_encode($receipt_array));
$crc = md5("$mrh_login:$out_summ:$inv_id:$receipt:$mrh_pass1:Shp_item=$shp_item");
print "<html><script language=JavaScript ".
"src='https://auth.robokassa.ru/Merchant/PaymentForm/FormV.js?".
"MerchantLogin=$mrh_login&OutSum=$out_summ&invoiceID=$inv_id&Shp_item=$shp_item&Receipt=$receipt_url".
"&Description=$inv_desc&SignatureValue=$crc'></script></html>";