Получил поставщика услуг (Safaricom), который решил использовать SOAP для отправки уведомлений о денежных средствах мобильной связи предприятиям. Когда мобильный пользователь платит (через USSD или через веб-интерфейс), мобильная денежная служба отправляет сообщение SOAP, которое мы должны использовать.Получение и обработка сообщения SOAP
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:c2b="http://cps.huawei.com/cpsinterface/c2bpayment">
<soapenv:Header/>
<soapenv:Body>
<c2b:C2BPaymentValidationRequest>
<TransactionType>PayBill</TransactionType>
<TransID>1234560000007031</TransID>
<TransTime>20140227082020</TransTime>
<TransAmount>123.00</TransAmount>
<BusinessShortCode>12345</BusinessShortCode>
<BillRefNumber></BillRefNumber>
<InvoiceNumber></InvoiceNumber>
<MSISDN>254722703614</MSISDN>
<KYCInfo>
<KYCName>[Personal Details][First Name]</KYCName>
<KYCValue>Hoiyor</KYCValue>
</KYCInfo>
<KYCInfo>
<KYCName>[Personal Details][Middle Name]</KYCName>
<KYCValue>G</KYCValue>
</KYCInfo>
<KYCInfo>
<KYCName>[Personal Details][Last Name]</KYCName>
<KYCValue>Chen</KYCValue>
</KYCInfo>
</c2b:C2BPaymentValidationRequest>
</soapenv:Body> </soapenv:Envelope>
Не беспокойся вышеуказанные детали общественной информации
Вопрос, с помощью такой структуры, как бутылки (или даже Django), как я «принять» это сообщение и как извлечь детали из сообщения.
Я использовал suds-jurko
, чтобы потреблять мыльные услуги, но я никогда не был на приемной стороне вызова SOAP.
Как минимум, хотя я в состоянии получить сообщение, используя payment_data = request.body.read()
from bottle import request
payment_data = request.body.read()
print(payment_data)
Оттуда, хотя я попытался с помощью XML-парсеров в питоне, но его получение сложных. Есть ли способ для пены (или zeep), чтобы позволить мне получить данные из объекта xml?