2016-08-22 12 views
0

Получил поставщика услуг (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?

ответ

0

Я надеюсь, что это не поздно для ответа: Для C2B сделок есть проект на GitHub https://github.com/kn9ts/project-mulla он принимает запрос от проверки в виде POST, преобразует его в запрос SOAP, отправить его в Safaricom, получает ответ от safaricom и дает ответ в формате Json.

Смежные вопросы