SABUN PHP: karmaşık bir dizi oluşturma web servisine geçmek için

0 Cevap php

2 farklı sorunlar.

Ben bir webcoder bazı XML geçmek için PHP SOAP sınıfını kullanıyorum. Ben gayet basit diziler üretebilir ve bu webservice ile mükemmel çalışır.

Ben bir kompleks (diziler içinde diziler) sorgusu oluşturmak için denemek 1.When ben hatalar alıyorum.

Ben XML etiketinin içine bir parametre (?) Eklemek için nasıl anlamıyorum 2.Also.

Aşağıda webcoder dokümantasyon gelen örnek XML sorgunun bir kopyası

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <InsertInvoice xmlns="KashFlow">
      <UserName>string</UserName>
      <Password>string</Password>
      <Inv>
        <InvoiceDBID>int</InvoiceDBID>
        <InvoiceNumber>int</InvoiceNumber>
        <InvoiceDate>dateTime</InvoiceDate>
        <DueDate>dateTime</DueDate>
        <Customer>string</Customer>
        <CustomerID>int</CustomerID>
        <Paid>int</Paid>
        <CustomerReference>string</CustomerReference>
        <EstimateCategory>string</EstimateCategory>
        <SuppressTotal>int</SuppressTotal>
        <ProjectID>int</ProjectID>
        <CurrencyCode>string</CurrencyCode>
        <ExchangeRate>decimal</ExchangeRate>
        <ReadableString>string</ReadableString>
        <Lines>
          <anyType />
          <anyType />
        </Lines>
        <NetAmount>decimal</NetAmount>
        <VATAmount>decimal</VATAmount>
        <AmountPaid>decimal</AmountPaid>
        <CustomerName>string</CustomerName>
      </Inv>
    </InsertInvoice>
  </soap:Body>
</soap:Envelope>

Sorun kod <Lines></Lines> bölümünde oluştuğunu.

XML etiketi parametre açısından ... Ben bu üretmek gerekir:

<Lines>
<anyType xsi:type="InvoiceLine">
 <Quantity>1</Quantity>
 <Description>Description here</Description>
 <Rate>99</Rate>
 <ChargeType>0</ChargeType>
 <VatRate>0</VatRate>
 <VatAmount>0</VatAmount>
 <ProductID>0</ProductID>
 <LineID>0</LineID>
 </anyType>
</Lines>

Ben sorun yaşıyorum biraz

<anyType xsi:type="InvoiceLine">

type = "InvoiceLine" .....: yani xsi ekleme

İşte anda kullanarak php kod.

    $invoice_array = array 
(
'InvoiceDBID' => "",
'InvoiceNumber' => 1,
'InvoiceDate' => date("c",strtotime($invoice_data['date_purchased'])),
'DueDate' => date("c",strtotime($invoice_data['date_purchased'])),
'Customer' => $invoice_data['customers_name'],
'CustomerID' => $KFcust->CustomerID,
'Paid' => 0,
'CustomerReference' => "",
'EstimateCategory' => "",
'SuppressTotal' => 0,
'ProjectID' => 0,
'CurrencyCode' => 0,
'ExchangeRate' => 1,
'NetAmount'=> 0,
'ReadableString' =>"this invoice created by osc for order ".$invoice_data['orders_id']);

foreach($line_data as $line)
{
$line_array[] = array(
'Quantity'=>$line['products_quantity'],
'Description'=>$line['products_name'],
'Rate'=>$line['products_tax'],
'ChargeType'=>0,
'VatAmount'=>$totals_data['ot_tax']['value'],
'VatRate'=>$line['products_tax'],
'Sort'=>1,
'ProductID'=>$line['products_id']);
}

$invoice_array['Lines']=array('anyType'=> array('_'=>$line_array, 'xsi:type'=>"InvoiceLine"));
$invoice_array['Netamount']=$totals_data['ot_subtotal']['value']+$totals_data['ot_shipping']['value'];
$invoice_array['VATAmount']=$totals_data['ot_tax']['value'];
$invoice_array['AmountPaid']=$totals_data['ot_total']['value'];
$invoice_array['CustomerName']=$invoice_data['customers_name'];

$invID = $client->createInvoice($invoice_array);

Maalesef bu soruşturma biraz karışmıştır - ama gördüğünüz gibi, bu sorunların her ikisi de el ele gider.

* * Alınan Gerçek bir hata mesajı

Unable to cast object of type 'System.Xml.XmlNode[]' to type 'KashFlow.InvoiceLine'.

Ama bu beklenen formatta değil XML göndererek am bu sadece bir göstergesidir.

Kimse lütfen yardımcı olabilir misiniz?

0 Cevap