Shalimar
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Реализую система платежа он-лайн (через интернет-банк). От банка получаю два ответа. Первый - банк приступил к обработке платежа, второй - принял банк платеж или нет. Оба запроса получаю от банка в виде XML. Первый запрос банк посылает с помощью POST метода, второй - с помощью GET метода. Пробовалось два варианта. Первый - с помощью публичного ключа банка, второй - с помощью банковского сертификата. Первый вариант : SignedXml signedXml = new SignedXml(xmlDocument); XmlNodeList nodeList = xmlDocument.GetElementsByTagName("Signature"); signedXml.LoadXml((XmlElement)nodeList[0]); return signedXml.CheckSignature(<публичный банковский ключ>); Второй вариант : X509Certificate2 cert = new X509Certificate2(<сертификат банка>); SignedXml signedXml = new SignedXml(xmlDocument); XmlNodeList nodeList = xmlDocument.GetElementsByTagName("Signature"); signedXml.LoadXml((XmlElement)nodeList[0]); return signedXml.CheckSignature(cert, false); Различие во входных данных только в том, что в случае POST метода я получаю данные в виде единой строки, а в случае GET метода - в виде форматированного XML-файла. Моя проблема - проверка подписи. В случае первого запроса - все в порядке. Во втором случае подпись не подтверждается. Может кто сталкивался с такой проблемой? Заранее спасибо. |