Удаление имени метода WSDL из сгенерированного XML - PullRequest
0 голосов
/ 06 ноября 2018

Извините, я не знаю, является ли это проблемой или запросом функции. Я погуглил, но не смог найти ответ, поэтому разместил его здесь.

Я генерирую SOAP, используя следующий код

@client = Savon.client(wsdl: "https://easypaystg.easypaisa.com.pk/easypay-service/PartnerBusinessService/META-INF/wsdl/partner/transaction/PartnerBusinessService.wsdl",
ssl_verify_mode: :none,
log: true,
log_level: :debug,
pretty_print_xml: true,
env_namespace: :soapenv,
namespaces: {"xmlns:soapenv" => "http://schemas.xmlsoap.org/soap/envelope/",
    "xmlns:dto" => "http://dto.transaction.partner.pg.systems.com/",
       "xmlns:dto1" => "http://dto.common.pg.systems.com/"}
)

message = {
"dto:initiateTransactionRequestType": { "dto1:username": "xyz@gmail.com", "dto1:password": "adasdasdasdsadasddas", channel: "internet", storeId: "4886", transactionType: "MA", msisdn: "M", mobileAccountNo: "+xxxxxxxxxx", emailAddress: "xyz@gmal.com" }
}
        @client.call(:initiate_transaction,
            :message => message, soap_action: false
)



<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://transaction.partner.pg.systems.com/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dto="http://dto.transaction.partner.pg.systems.com/" xmlns:dto1="http://dto.common.pg.systems.com/">
  <soapenv:Body>
    **<wsdl:initiateTransaction>**
      <dto:initiateTransactionRequestType>
        <dto1:username>xyz@abc.com</dto1:username>
        <dto1:password>asdssadasdasdasdsa</dto1:password>
        <channel>internet</channel>
        <storeId>4886</storeId>
        <transactionType>MA</transactionType>
        <msisdn>M</msisdn>
        <mobileAccountNo>xxxxxxxx</mobileAccountNo>
        <emailAddress>abc@gmail.com</emailAddress>
      </dto:initiateTransactionRequestType>
    </wsdl:initiateTransaction>
  </soapenv:Body>
</soapenv:Envelope>

Но услуга требует

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:dto="http://dto.transaction.partner.pg.systems.com/" xmlns:dto1="http://dto.common.pg.systems.com/">
**<soapenv:Header />
<soapenv:Body>
<dto:initiateTransactionRequestType>**
<dto1:username>pgsystems</dto1:Username>
<dto1:password>9b01234324vxddc0b</dto1:Password>
<channel>Internet</channel>
<orderId>000000001</orderId> <storeId>465</storeId>
<transactionAmount>5000.00</transactionAmount>
<transactionType>OTC</transactionType>
<msisdn></msisdn>
<mobileAccountNo>034632401722</mobileAccountNo>
<emailAddress>abc@test.com</emailAddress>
</dto:initiateTransactionRequestTyp
e>
</soapenv:Body>
</soapenv:Envelope>

Единственная разница между системой, необходимой для конверта и моей, заключается в следующем. Так что проблема в том, что SAVON автоматически добавляет тег к запросу, когда я использую функцию @ client.call (: method), пожалуйста, помогите мне решить эту проблему.

...