Колесник В.
53 сообщения
#17 лет назад
Здравствуйте, кто нибуть работал с EGOLD ?
Вот встал вопрос, нужно принять EGOLD валюту от пользователя на сайте.
Собственно посмотрел как это сделано в одном скрпте:


<form method='POST' action=';
<input type="hidden" name="PAYEE_ACCOUNT" value="7777777777">
<input type="hidden" name="PAYEE_NAME" value="SITE">
<input type="hidden" name="PAYMENT_AMOUNT" value="531">
<input type=hidden name="PAYMENT_UNITS" value=1>
<input type=hidden name="PAYMENT_METAL_ID" value=0>
<input type="hidden" name="STATUS_URL" value="mailto:***">
<input type="hidden" name="NOPAYMENT_URL" value="http://www.site.com/?transaction_result=failure">
<input type="hidden" name="NOPAYMENT_URL_METHOD" value="LINK">
<input type="hidden" name="PAYMENT_URL" value="http://www.site.com/?transaction_result=success">
<input type="hidden" name="PAYMENT_URL_METHOD" value="LINK">
<input type="hidden" name="BAGGAGE_FIELDS" value="CUSTOMERID">
<input type="hidden" name="CUSTOMERID" value="">
<input type="hidden" name="SUGGESTED_MEMO" value="Thank you!">
<input type="hidden" name="PAYMENT_ID" value="1">
<input type="submit" name="PAYMENT_METHOD" value="Продолжить оплату на сервере E-Gold">


Это форма передаёться на сервер еголд, после чего серевер редиректит либо на страницу ?transaction_result=failure либо ?transaction_result=success и вносит данные в бд.. Только вот наверно сервер должен передать ещё какую то инфу.. Например сгенерированный ключ или что-то в этом роде..
Вобщем попробовал передать форму на сервер, он говорит ошибку 403...

Подскажите как это правильно организовать, или хотябы куда копать.
Андрей Щ.
190 сообщений
#17 лет назад
Не сталкивался с этим "на поле боя", но правда есть пара букмарков. например
Никита Б.
67 сообщений
#17 лет назад
kolesnik,
<input type="hidden" name="STATUS_URL" value="mailto:***">

Разве он на мыло результат может отсылать?
Подставте туда скрипт и запишите куда нибудь то что он вернёт (это будет такое же жёлтое окошко как и на их сайте с результатом операции).
Потом просто переберите ответ и извлеките нужные данные.
Алексей Б.
897 сообщений
#17 лет назад
Форма рабочая.
Если твой сайт матерится, дабавь в BAGGAGE_FIELDS transaction_result и transaction_result
+ соотв. поля и значения, метод post/get
Алексей Б.
897 сообщений
#17 лет назад
Ой не то написал
Алексей Б.
897 сообщений
#17 лет назад
Покажите код реальный
Колесник В.
53 сообщения
#17 лет назад
lyoxa,

Реальный код формы сейчас выглядет так:

<FORM action=\"https://www.e-gold.com/sci_asp/payments.asp\" method=\"post\">
<input type=\"hidden\" name=\"PAYEE_ACCOUNT\" value=\"2741313\">
<input type=\"hidden\" name=\"PAYEE_NAME\" value=\"".SITE_URL."'\">
<input type=\"hidden\" name=\"PAYMENT_AMOUNT\" value=\"".$summ."\">
<input type=\"hidden\" name=\"PAYMENT_UNITS\" value=\"1\">
<input type=\"hidden\" name=\"PAYMENT_METAL_ID\" value=\"1\">
<input type=\"hidden\" name=\"PAYMENT_ID\" value=\"".$id."\">
<input type=\"hidden\" name=\"STATUS_URL\" value=\"http://".SITE_URL."/pay.php\">
<input type=\"hidden\" name=\"PAYMENT_URL\" value=\"http://".SITE_URL."/account/payment_success/\">
<INPUT type=\"hidden\" name=\"PAYMENT_URL_METHOD\" value=\"POST\">
<input type=\"hidden\" name=\"NOPAYMENT_URL\" value=\"http://".SITE_URL."/account/payment_error/\">
<INPUT type=\"hidden\" name=\"NOPAYMENT_URL_METHOD\" value=\"POST\">
<input type=\"hidden\" name=\"SUGGESTED_MEMO\" value=\"Payment plan\">
<input type=\"hidden\" name=\"BAGGAGE_FIELDS\" value=\"\">
<INPUT type=submit value=\"Выполнить\" name=Submit>
</FORM>
Колесник В.
53 сообщения
#17 лет назад
Код скрипта которому SCI должен скидывает параметры в случае успешно транзакции:
define('EG_ALTERNATE', 'Alternate password');
$PAYEE_ACCOUNT = isset($_POST) ? (string)$_POST : '';
$PAYMENT_ID = isset($_POST) ? (string)$_POST : '';
$PAYMENT_AMOUNT = isset($_POST) ? (string)$_POST : '';
$PAYMENT_UNITS = isset($_POST) ? (string)$_POST : '';
$PAYMENT_METAL_ID = isset($_POST) ? (string)$_POST : '';
$PAYMENT_BATCH_NUM = isset($_POST) ? (string)$_POST : '';
$PAYER_ACCOUNT = isset($_POST) ? (string)$_POST : '';
$ACTUAL_PAYMENT_OUNCES = isset($_POST) ? (string)$_POST : '';
$USD_PER_OUNCE = isset($_POST) ? (string)$_POST : '';
$FEEWEIGHT = isset($_POST) ? (string)$_POST : '';
$TIMESTAMPGMT = isset($_POST) ? (string)$_POST : '';

if (isset($_POST)){
$V2_HASH = $_POST;
$code = md5($PAYMENT_ID.':'.$PAYEE_ACCOUNT.':'.$PAYMENT_AMOUNT.':'.$PAYMENT_UNITS.':'.
$PAYMENT_METAL_ID.':'.$PAYMENT_BATCH_NUM.':'.$PAYER_ACCOUNT.':'.
strtoupper(md5(EG_ALTERNATE)).':'.$ACTUAL_PAYMENT_OUNCES.':'.
$USD_PER_OUNCE.':'.$FEEWEIGHT.':'.$TIMESTAMPGMT);
if ($code != strtolower($V2_HASH)){
exit; //неверный хеш-код
}else{
$DB->query("UPDATE payment SET status='o' WHERE id='".$PAYMENT_ID."'");
}
}
Алексей Б.
897 сообщений
#17 лет назад
Всё работает.
Проверь вручную:
http://".SITE_URL."/account/payment_success/
и
http://".SITE_URL."/account/payment_error
Алексей Б.
897 сообщений
#17 лет назад
Платеж проходит, а ошибка скорей всего в payment и nopayment url's
Колесник В.
53 сообщения
#17 лет назад
Странно, сейчас всё передаёт и перенаправляет на страницу об усепешной оплате, но данные для http://".SITE_URL."/pay.php не передаёт, либо они хеши не совпадают почему то..