У меня есть демо-счет на 2checkout. Мне необходимо принять онлайн-платеж через 2checkout. так что для этого я тестирую код с демо-счета. проблема в том, что на демо-счете я получил сообщение, что заказ успешно обработан, но когда я проверяю то же самое на myside, используя документацию, он всегда терпит неудачу.
ниже HTML-код для оплаты онлайн
<form action='https://www.2checkout.com/checkout/purchase' method='post'>
<input type='hidden' name='sid' value='202351337'>
<input type='hidden' name='quantity' value='1'>
<input type='hidden' name='product_id' value='1'>
<input name='submit' type='submit' value='Buy from 2CO' >
</form>
ниже проверочный код взят из официальной документации 2checkout
<?php
print_r($_REQUEST);
$hashSecretWord='james007'; //2Checkout Secret Word
$hashSid=202351337; //2Checkout account number
$hashTotal=100.00; //Sale total to validate against
$hashOrder=1; //2Checkout Order Number
$StringToHash = strtoupper(md5($hashSecretWord . $hashSid . $hashOrder . $hashTotal));
echo "<br/> And StringToHash is $StringToHash <br/>";
if ($StringToHash != $_REQUEST['key'])
{
$result = 'Fail - Hash Mismatch';
}
else
{
$result = 'Success - Hash Matched';
}
echo $result;
я всегда к сообщению Fail-Hash Mismatch
ваша подача $hashOrder=1;
но заказ № 1 будет работать только для демонстрационных продаж
если ваш пост URL, как показано ниже, только $hashOrder=1;
буду работать
(https://sandbox.2checkout.com/checkout/purchase ‘method =’ post ‘>).
но вы используете <form action='https://www.2checkout.com/checkout/purchase' method='post'>
, это означает, что ваша продажа вживую.
в этом случае $hashOrder=$_REQUEST['hashOrder'];
Я надеюсь, что это будет работать для вас.
Я думаю, что ваша проблема связана с тем, что вы устанавливаете hashTotal
как число, а не строка. Попробуйте изменить эту строку на это:
$hashTotal='100.00';