Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   WebMoney Merchant Interface на flash (http://www.flasher.ru/forum/showthread.php?t=147065)

iseller 25.11.2010 06:08

WebMoney Merchant Interface на flash
 
Нужно вставить во флешку мерчант интерфейс вебмани. Webmoney.ru предлагает простой пример организации приема платежа через html:

Цитата:

<!-- pay.html -->
<html>
<head>
<title>Pay</title>
</head>
<body>

<form id=pay name=pay method="POST" action="https://merchant.webmoney.ru/lmi/payment.asp">

<p>пример платежа через сервис Web Merchant Interface</p>
<p>заплатить 1 WMZ...</p>

<p>
<input type="hidden" name="LMI_PAYMENT_AMOUNT" value="1.0">
<input type="hidden" name="LMI_PAYMENT_DESC" value="тестовый платеж">
<input type="hidden" name="LMI_PAYMENT_NO" value="1">
<input type="hidden" name="LMI_PAYEE_PURSE" value="Z145179295679">
<input type="hidden" name="LMI_SIM_MODE" value="0">
</p>
<p>
<input type="submit" value="submit">
</p>
</form>

</body>
</html>
Нужно сделать аналогичное на AS2, чтобы кнопка «оплатить» находилась во флеш-клипе.

mooncar 25.11.2010 10:08

Наверное, вам нужно не просто чтобы кнопка "находилась" во флеше, но и платеж обеспечивался при ее нажатии? Но приведенный код во флеш вы не вставите.
Для выполнения того, что делает форма, попробуйте использовать класс LoadVars и его метод sendAndLoad. См. пример в хелпе.
Второе.
По приведенному вами коду в браузер после нажатия кнопки загружается код, которые выдает payment.asp, то есть обрабатывающий скрипт. Нужен ли его вывод или нет, неизвестно, смотрите сами. Ведь если будете использовать sendAndLoad скрипт отработается, но перезагрузки страницы не произойдет. Если там есть какая-то важная инфа, необходимая для вывода юзеру, нужно получить вывод скрипта в том же sendAndLoad, распарсить и отрисовать во флешке.

iseller 25.11.2010 12:25

Благодарю за ответ
Мне нужно, чтобы при нажатии кнопки выполнялось это действие:

Цитата:

<form id=pay name=pay method="POST" action="https://merchant.webmoney.ru/lmi/payment.asp">
И соответственно отправлялись эти переменные:

Цитата:

<input type="hidden" name="LMI_PAYMENT_AMOUNT" value="1.0">
<input type="hidden" name="LMI_PAYMENT_DESC" value="тестовый платеж">
<input type="hidden" name="LMI_PAYMENT_NO" value="1">
<input type="hidden" name="LMI_PAYEE_PURSE" value="Z145179295679">
<input type="hidden" name="LMI_SIM_MODE" value="0">
Возвращать во флеш никакие данные не нужно.

mooncar 25.11.2010 12:38

Я же написал - используйте метод sendAndLoad. HTML код во флеше не будет работать.

Гляньте синтаксис в хелпе.
Вкратце - создаете экземпляр LoadVars, задаете ему переменные, которые есть в форме (LMI_PAYMENT_AMOUNT и т.д, то что name) и их значения (то, что в value), вызываете по нажатию произвольной кнопки скрипт payment.asp с помощью sendAndLoad методом POST.
Это сложнее описать, проще сделать - работы на 5 минут.

Если что-то тут и не получится - это по причине необходимости использования https, а не http.
Для этого надо почитать про метод allowInsecureDomain. Тут я вам не смогу подсказать, не использовал.

Добавлено через 9 минут
Код AS1/AS2:

var slv:LoadVars = new LoadVars();
slv.LMI_PAYMENT_AMOUNT = '1.0';
slv.LMI_PAYMENT_DESC = 'тестовый платеж';
slv.LMI_PAYMENT_NO = '1';
slv.LMI_PAYEE_PURSE = 'Z145179295679';
slv.LMI_SIM_MODE = '0';
 
var rlv:LoadVars = new LoadVars();
rlv.onLoad = function (suc:Boolean) //для получения ответа, что соединение со скриптом состоялось
{
        if (suc)
        {
                trace('отправка удалась');
        }
};
 
btn_send.onRelease = function()
{
        slv.sendAndLoad('https://merchant.webmoney.ru/lmi/payment.asp', rlv, 'POST');
};

Кнопочку нарисуйте и задайте ей на сцене имя btn_send.

iseller 25.11.2010 13:05

Пишет, что отправляет)
И еще вопрос - что где дописать, чтобы флеш сначала открывал браузер и в нем уже отправлял эти запросы на сервер?

mooncar 25.11.2010 13:18

Цитата:

Сообщение от iseller (Сообщение 952325)
Пишет, что отправляет)
И еще вопрос - что где дописать, чтобы флеш сначала открывал браузер и в нем уже отправлял эти запросы на сервер?

В контексте начала темы "Нужно вставить во флешку мерчант интерфейс вебмани" вопрос непонятен.
Зачем вам открывание браузера, если вы хотите все из флеша делать?

Если вы хотите, чтобы открывалась ваша HTML страничка с этой формой, просто используйте getURL
Код AS1/AS2:

btn_send.onRelease = function()
{
        getURL('pay.html', '_blank');
};


iseller 25.11.2010 13:57

Да, запутал я Вас..

На сайте есть флешка, где посетитель выбирает что оплачивать, за сколько, итого после выбора им товара(ов) в флешке остаются переменные – цена, название товара. После этого переменные подставляю в:

Цитата:

<input type="hidden" name="LMI_PAYMENT_AMOUNT" value="1.0">
<input type="hidden" name="LMI_PAYMENT_DESC" value="тестовый платеж">
<input type="hidden" name="LMI_PAYMENT_NO" value="1">
<input type="hidden" name="LMI_PAYEE_PURSE" value="Z145179295679">
<input type="hidden" name="LMI_SIM_MODE" value="0">
И отправяю их соответственно на

После этого браузер запрашивает авторизацию кошелька -> авторизация -> оплата товара с параметрами, которые были переданы.

mooncar 25.11.2010 15:12

Ну напишите php-скрипт, вызов которого происходил бы из флешки с открытием новой страницы и получением из нее введенных данных.
Данные передать ему можно с помощью GET-строки:
Код AS1/AS2:

LMI_PAYMENT_AMOUNT = value1;
LMI_PAYMENT_DESC = value2;
...
btn_send.onRelease = function()
{
        getURL('pay.php?LMI_PAYMENT_AMOUNT=' + value1 + '&LMI_PAYMENT_DESC=' + value2.... ,  '_blank');
};

В pay.php получите эти данные и пусть они будут сразу стоять в скрытых полях выведенной формы.
Кусок pay.php для такого решения:
PHP код:

....
<form id=pay name=pay method="POST" action="https://merchant.webmoney.ru/lmi/payment.asp">
....
<input type="hidden" name="LMI_PAYMENT_AMOUNT" value="<?php echo $_GET['LMI_PAYMENT_AMOUNT'] ?>" />
<input type="hidden" name="LMI_PAYMENT_DESC" value="<?php echo $_GET['LMI_PAYMENT_DESC'] ?>" />
....
<input type="submit" value="submit" />
</form>
.....

То есть юзеру нужно сперва кликнуть кнопку во флеше для подтверждения выбора, а потом, после загрузки страницы, сгенерированной pay.php, останется только кликнуть кнопку на этой странице уже для отправки данных к payment.asp.

iseller 25.11.2010 15:29

Ясно, так еще сложнее) Думал на флеше это все будет реализовать проще..
Буду искать обходные пути.
Благодарю за ответы!

mooncar 25.11.2010 15:34

Я вам указал обходной путь.
Превращаете pay.html в pay.php и вызываете его по клику из флеша с передачей данных и автоматической их подстановкой в скрытые поля формы.

Добавлено через 3 минуты
Ха, попробуйте более простое решение:
Код AS1/AS2:

var slv:LoadVars = new LoadVars();
slv.LMI_PAYMENT_AMOUNT = '1.0';
slv.LMI_PAYMENT_DESC = 'тестовый платеж';
slv.LMI_PAYMENT_NO = '1';
slv.LMI_PAYEE_PURSE = 'Z145179295679';
slv.LMI_SIM_MODE = '0';
 
 
btn_send.onRelease = function()
{
        slv.send('https://merchant.webmoney.ru/lmi/payment.asp', '_blank', 'POST');
};

send, в отличии от sendAndLoad, загрузит страницу.

Только пробуйте это из опубликованной на странице флешки, а не просто из запущенной swf!
Потому что
Цитата:

The Flash test environment always uses the GET method. To test using the POST method, be sure you are attempting to use it from within a browser.


Часовой пояс GMT +4, время: 20:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.