MICROS RES 3700 POS集成 - 与调味品一起下订单

时间:2015-09-30 16:53:23

标签: xml soap point-of-sale

我正在使用webservice API进行MICROS RES 3700 POS集成。 我已经能够下简单的订单,但我无法使调味品发挥作用。

POS只是忽略了我用MenuItem发送的调味品数组。有人能告诉我一个XML调味品数组结构的例子吗?文档说明它与MeuItem的结构相同,但它不起作用。

谢谢!

2 个答案:

答案 0 :(得分:0)

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:res="http://schemas.micros.com/RESPOS">
   <soap:Header/>
   <soap:Body>
      <res:PostTransactionEx>
         <res:pGuestCheck>
            <!--Optional:-->
            <res:CheckID>?</res:CheckID>
            <res:CheckTableObjectNum>?</res:CheckTableObjectNum>
            <res:CheckRevenueCenterObjectNum>?</res:CheckRevenueCenterObjectNum>
            <res:CheckOrderType>?</res:CheckOrderType>
            <res:CheckEmployeeObjectNum>?</res:CheckEmployeeObjectNum>
            <res:CheckSeq>?</res:CheckSeq>
            <res:CheckNum>?</res:CheckNum>
            <res:CheckDateToFire>?</res:CheckDateToFire>
            <res:CheckGuestCount>?</res:CheckGuestCount>
            <!--Optional:-->
            <res:pCheckInfoLines>
               <!--Zero or more repetitions:-->
               <res:string>?</res:string>
            </res:pCheckInfoLines>
            <res:CheckStatusBits>?</res:CheckStatusBits>
            <!--Optional:-->
            <res:pPrintJobIds>
               <!--Zero or more repetitions:-->
               <res:int>?</res:int>
            </res:pPrintJobIds>
         </res:pGuestCheck>
         <!--Optional:-->
         <res:ppMenuItems>
            <!--Zero or more repetitions:-->
            <res:ResPosAPI_MenuItem>
               <res:MenuItem>
                  <res:MiObjectNum>?</res:MiObjectNum>
                  <res:MiMenuLevel>?</res:MiMenuLevel>
                  <!--Optional:-->
                  <res:MiOverridePrice>?</res:MiOverridePrice>
                  <!--Optional:-->
                  <res:MiWeight>?</res:MiWeight>
                  <!--Optional:-->
                  <res:MiReference>?</res:MiReference>
                  <res:ItemDiscount>
                     <res:DiscObjectNum>?</res:DiscObjectNum>
                     <!--Optional:-->
                     <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
                     <!--Optional:-->
                     <res:DiscReference>?</res:DiscReference>
                  </res:ItemDiscount>
               </res:MenuItem>
               <!--Optional:-->
               <res:Condiments>
                  <!--Zero or more repetitions:-->
                  <res:ResPosAPI_MenuItemDefinition>
                     <res:MiObjectNum>?</res:MiObjectNum>
                     <res:MiMenuLevel>?</res:MiMenuLevel>
                     <!--Optional:-->
                     <res:MiOverridePrice>?</res:MiOverridePrice>
                     <!--Optional:-->
                     <res:MiWeight>?</res:MiWeight>
                     <!--Optional:-->
                     <res:MiReference>?</res:MiReference>
                     <res:ItemDiscount>
                        <res:DiscObjectNum>?</res:DiscObjectNum>
                        <!--Optional:-->
                        <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
                        <!--Optional:-->
                        <res:DiscReference>?</res:DiscReference>
                     </res:ItemDiscount>
                  </res:ResPosAPI_MenuItemDefinition>
               </res:Condiments>
            </res:ResPosAPI_MenuItem>
         </res:ppMenuItems>
         <!--Optional:-->
         <res:ppComboMeals>
            <!--Zero or more repetitions:-->
            <res:ResPosAPI_ComboMeal>
               <res:ComboMealMenuItem>
                  <res:MenuItem>
                     <res:MiObjectNum>?</res:MiObjectNum>
                     <res:MiMenuLevel>?</res:MiMenuLevel>
                     <!--Optional:-->
                     <res:MiOverridePrice>?</res:MiOverridePrice>
                     <!--Optional:-->
                     <res:MiWeight>?</res:MiWeight>
                     <!--Optional:-->
                     <res:MiReference>?</res:MiReference>
                     <res:ItemDiscount>
                        <res:DiscObjectNum>?</res:DiscObjectNum>
                        <!--Optional:-->
                        <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
                        <!--Optional:-->
                        <res:DiscReference>?</res:DiscReference>
                     </res:ItemDiscount>
                  </res:MenuItem>
                  <!--Optional:-->
                  <res:Condiments>
                     <!--Zero or more repetitions:-->
                     <res:ResPosAPI_MenuItemDefinition>
                        <res:MiObjectNum>?</res:MiObjectNum>
                        <res:MiMenuLevel>?</res:MiMenuLevel>
                        <!--Optional:-->
                        <res:MiOverridePrice>?</res:MiOverridePrice>
                        <!--Optional:-->
                        <res:MiWeight>?</res:MiWeight>
                        <!--Optional:-->
                        <res:MiReference>?</res:MiReference>
                        <res:ItemDiscount>
                           <res:DiscObjectNum>?</res:DiscObjectNum>
                           <!--Optional:-->
                           <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
                           <!--Optional:-->
                           <res:DiscReference>?</res:DiscReference>
                        </res:ItemDiscount>
                     </res:ResPosAPI_MenuItemDefinition>
                  </res:Condiments>
               </res:ComboMealMenuItem>
               <res:ComboMealObjectNum>?</res:ComboMealObjectNum>
               <res:ComboMealMainItem>
                  <res:MenuItem>
                     <res:MiObjectNum>?</res:MiObjectNum>
                     <res:MiMenuLevel>?</res:MiMenuLevel>
                     <!--Optional:-->
                     <res:MiOverridePrice>?</res:MiOverridePrice>
                     <!--Optional:-->
                     <res:MiWeight>?</res:MiWeight>
                     <!--Optional:-->
                     <res:MiReference>?</res:MiReference>
                     <res:ItemDiscount>
                        <res:DiscObjectNum>?</res:DiscObjectNum>
                        <!--Optional:-->
                        <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
                        <!--Optional:-->
                        <res:DiscReference>?</res:DiscReference>
                     </res:ItemDiscount>
                  </res:MenuItem>
                  <!--Optional:-->
                  <res:Condiments>
                     <!--Zero or more repetitions:-->
                     <res:ResPosAPI_MenuItemDefinition>
                        <res:MiObjectNum>?</res:MiObjectNum>
                        <res:MiMenuLevel>?</res:MiMenuLevel>
                        <!--Optional:-->
                        <res:MiOverridePrice>?</res:MiOverridePrice>
                        <!--Optional:-->
                        <res:MiWeight>?</res:MiWeight>
                        <!--Optional:-->
                        <res:MiReference>?</res:MiReference>
                        <res:ItemDiscount>
                           <res:DiscObjectNum>?</res:DiscObjectNum>
                           <!--Optional:-->
                           <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
                           <!--Optional:-->
                           <res:DiscReference>?</res:DiscReference>
                        </res:ItemDiscount>
                     </res:ResPosAPI_MenuItemDefinition>
                  </res:Condiments>
               </res:ComboMealMainItem>
               <!--Optional:-->
               <res:SideItems>
                  <!--Zero or more repetitions:-->
                  <res:ResPosAPI_MenuItem>
                     <res:MenuItem>
                        <res:MiObjectNum>?</res:MiObjectNum>
                        <res:MiMenuLevel>?</res:MiMenuLevel>
                        <!--Optional:-->
                        <res:MiOverridePrice>?</res:MiOverridePrice>
                        <!--Optional:-->
                        <res:MiWeight>?</res:MiWeight>
                        <!--Optional:-->
                        <res:MiReference>?</res:MiReference>
                        <res:ItemDiscount>
                           <res:DiscObjectNum>?</res:DiscObjectNum>
                           <!--Optional:-->
                           <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
                           <!--Optional:-->
                           <res:DiscReference>?</res:DiscReference>
                        </res:ItemDiscount>
                     </res:MenuItem>
                     <!--Optional:-->
                     <res:Condiments>
                        <!--Zero or more repetitions:-->
                        <res:ResPosAPI_MenuItemDefinition>
                           <res:MiObjectNum>?</res:MiObjectNum>
                           <res:MiMenuLevel>?</res:MiMenuLevel>
                           <!--Optional:-->
                           <res:MiOverridePrice>?</res:MiOverridePrice>
                           <!--Optional:-->
                           <res:MiWeight>?</res:MiWeight>
                           <!--Optional:-->
                           <res:MiReference>?</res:MiReference>
                           <res:ItemDiscount>
                              <res:DiscObjectNum>?</res:DiscObjectNum>
                              <!--Optional:-->
                              <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
                              <!--Optional:-->
                              <res:DiscReference>?</res:DiscReference>
                           </res:ItemDiscount>
                        </res:ResPosAPI_MenuItemDefinition>
                     </res:Condiments>
                  </res:ResPosAPI_MenuItem>
               </res:SideItems>
            </res:ResPosAPI_ComboMeal>
         </res:ppComboMeals>
         <res:pServiceChg>
            <res:SvcChgObjectNum>?</res:SvcChgObjectNum>
            <!--Optional:-->
            <res:SvcChgAmountOrPercent>?</res:SvcChgAmountOrPercent>
            <!--Optional:-->
            <res:SvcChgReference>?</res:SvcChgReference>
         </res:pServiceChg>
         <res:pSubTotalDiscount>
            <res:DiscObjectNum>?</res:DiscObjectNum>
            <!--Optional:-->
            <res:DiscAmountOrPercent>?</res:DiscAmountOrPercent>
            <!--Optional:-->
            <res:DiscReference>?</res:DiscReference>
         </res:pSubTotalDiscount>
         <res:pTmedDetail>
            <res:TmedObjectNum>?</res:TmedObjectNum>
            <!--Optional:-->
            <res:TmedPartialPayment>?</res:TmedPartialPayment>
            <!--Optional:-->
            <res:TmedReference>?</res:TmedReference>
            <res:TmedEPayment>
               <res:PaymentCommand>?</res:PaymentCommand>
               <res:AccountDataSource>?</res:AccountDataSource>
               <res:AccountType>?</res:AccountType>
               <!--Optional:-->
               <res:AcctNumber>?</res:AcctNumber>
               <res:ExpirationDate>?</res:ExpirationDate>
               <!--Optional:-->
               <res:AuthorizationCode>?</res:AuthorizationCode>
               <res:StartDate>?</res:StartDate>
               <res:IssueNumber>?</res:IssueNumber>
               <!--Optional:-->
               <res:Track1Data>?</res:Track1Data>
               <!--Optional:-->
               <res:Track2Data>?</res:Track2Data>
               <!--Optional:-->
               <res:Track3Data>?</res:Track3Data>
               <!--Optional:-->
               <res:BaseAmount>?</res:BaseAmount>
               <!--Optional:-->
               <res:TipAmount>?</res:TipAmount>
               <!--Optional:-->
               <res:CashBackAmount>?</res:CashBackAmount>
               <!--Optional:-->
               <res:KeySerialNum>?</res:KeySerialNum>
               <!--Optional:-->
               <res:DeviceId>?</res:DeviceId>
               <!--Optional:-->
               <res:PinBlock>?</res:PinBlock>
               <!--Optional:-->
               <res:CVVNumber>?</res:CVVNumber>
               <!--Optional:-->
               <res:AddressVerification>?</res:AddressVerification>
               <!--Optional:-->
               <res:InterfaceName>?</res:InterfaceName>
               <!--Optional:-->
               <res:SvcResponse>?</res:SvcResponse>
               <!--Optional:-->
               <res:SvcAccountType>?</res:SvcAccountType>
            </res:TmedEPayment>
         </res:pTmedDetail>
         <res:pTotalsResponse>
            <!--Optional:-->
            <res:TotalsSubTotal>?</res:TotalsSubTotal>
            <!--Optional:-->
            <res:TotalsTaxTotals>?</res:TotalsTaxTotals>
            <!--Optional:-->
            <res:TotalsOtherTotals>?</res:TotalsOtherTotals>
            <!--Optional:-->
            <res:TotalsAutoSvcChgTotals>?</res:TotalsAutoSvcChgTotals>
            <!--Optional:-->
            <res:TotalsTotalDue>?</res:TotalsTotalDue>
         </res:pTotalsResponse>
         <!--Optional:-->
         <res:ppCheckPrintLines>
            <!--Zero or more repetitions:-->
            <res:string>?</res:string>
         </res:ppCheckPrintLines>
         <!--Optional:-->
         <res:ppVoucherOutput>
            <!--Zero or more repetitions:-->
            <res:string>?</res:string>
         </res:ppVoucherOutput>
      </res:PostTransactionEx>
   </soap:Body>
</soap:Envelope>

答案 1 :(得分:0)

我知道这个问题很旧,但是与我非常相关,我希望以后可以帮助其他一些开发人员。

  

POS仅忽略我通过MenuItem发送的调味品数组。

请确保您发送的调味品已在Micros 3700中配置为调味品。

  

我已经可以简单地下订单,但是我不能使调味品起作用。

我认为这是一个更有趣的问题-(尽管与我更相关,以及我如何偶然发现此线程)。

我的问题稍有不同,因为提供调味品会导致ResPosApiWeb服务中出现未处理的异常-因此,我要通过响应来解决的问题是。

我怀疑是因为ResPosApiWeb.dll包装了Interop.ResPosApi.dll,所以出现问题的原因是不受管理的代码。使用dotPeek可以进一步支持该功能。

请参见下面的代码,以获取有效的请求构造菜单的代码示例:

var menuItems = new ResPosAPI_MenuItem[]
{
    new ResPosAPI_MenuItem()
    {
        MenuItem = new ResPosAPI_MenuItemDefinition
        {
            MiObjectNum = 123,
            MiMenuLevel = 1,
            MiOverridePrice = "10.00", // optional
            MiWeight = "1", // optional
            MiReference = "", // optional
            ItemDiscount = new ResPosAPI_Discount()
        },
        Condiments = new ResPosAPI_MenuItemDefinition[]
        {
            new ResPosAPI_MenuItemDefinition()
            {
                MiObjectNum = 456,
                MiMenuLevel = 1,
                MiOverridePrice = "1.00", // optional
                MiWeight = "1", // optional
                MiReference = "", // IMPORTANT: MiReference *must* be defined on Condiments, for some reason, or it will result in an unhandled exception in the ResPosApi web service
                ItemDiscount = new ResPosAPI_Discount()
            }
        }
    }
};

然后使用其他必需参数发出请求...

_apiClient.CalculateTransactionTotals(
    ppMenuItems: ref menuItems, // our menu object we created above
    ppComboMeals: ref comboMeals,
    pSvcCharge: ref serviceCharge,
    pSubtotalDiscount: ref discount,
    revenueCenter: _revenueCenterId,
    orderType: _orderTypeId,
    employeeNumber: _employeeId,
    pTotalsResponse: ref totalsResponse);