Разработка Панели Управления игровых хостингом - C#
Формулировка задачи:
Добрый день. Не давно вернулся с армии и понял, что все забыл . Сейчас разрабатываю новый проект, и заглох, когда время подошло к разработке системы оплаты через приложение на яндекс/webmoney/qiwi. Начал смотреть примеры, но к сожалению есть только один, и не раскрытый. Может кто нибудь сможет подкинуть примеры, либо подсказки, что нибудь? Заранее буду благодарен)
Вообще нету никого на форуме?)
Решение задачи: «Разработка Панели Управления игровых хостингом»
textual
Листинг программы
using System;
using System.Web;
using System.Text;
using System.Security.Cryptography;
using System.Collections.Generic;
public class PaymentForm : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// Секретный ключ интернет-магазина
string merchantKey = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
// Добавление полей формы в словарь, сортированный по именам ключей.
SortedDictionary<string, string> formField
= new SortedDictionary<string, string>();
formField.Add("WMI_MERCHANT_ID", "123456789012");
formField.Add("WMI_PAYMENT_AMOUNT", "100.00");
formField.Add("WMI_CURRENCY_ID", "643");
formField.Add("WMI_PAYMENT_NO", "12345-001");
formField.Add("WMI_DESCRIPTION", "BASE64:" + Convert.ToBase64String(Encoding.UTF8.GetBytes("Payment for order #12345-001 in MYSHOP.com")));
formField.Add("WMI_EXPIRED_DATE", "2019-12-31T23:59:59");
formField.Add("WMI_SUCCESS_URL", "https://myshop.com/w1/success.php");
formField.Add("WMI_FAIL_URL", "https://myshop.com/w1/fail.php");
formField.Add("MyShopParam1", "Value1"); // Дополнительные параметры
formField.Add("MyShopParam2", "Value2"); // магазина тоже участвуют
formField.Add("MyShopParam3", "Value3"); // при формировании подписи!
// Формирование сообщения, путем объединения значений формы,
// отсортированных по именам ключей в порядке возрастания и
// добавление к нему "секретного ключа" интернет-магазина
StringBuilder signatureData = new StringBuilder();
foreach (string key in formField.Keys)
{
signatureData.Append(formField[key]);
}
// Формирование значения параметра WMI_SIGNATURE, путем
// вычисления отпечатка, сформированного выше сообщения,
// по алгоритму MD5 и представление его в Base64
string message = signatureData.ToString() + merchantKey;
Byte[] bytes = Encoding.GetEncoding(1251).GetBytes(message);
Byte[] hash = new MD5CryptoServiceProvider().ComputeHash(bytes);
string signature = Convert.ToBase64String(hash);
// Добавление параметра WMI_SIGNATURE в словарь параметров формы
formField.Add("WMI_SIGNATURE", signature);
// Формирование платежной формы
StringBuilder output = new StringBuilder();
output.AppendLine("<form method="POST" action="https://wl.walletone.com/checkout/checkout/Index">");
foreach (string key in formField.Keys)
{
output.AppendLine(String.Format("{0}: <input name="{0}" value="{1}"/>", key, formField[key]));
}
output.AppendLine("<input type="submit"/></form>");
context.Response.ContentType = "text/html; charset=UTF-8";
context.Response.Write(output.ToString());
}
}