问题
I am trying to automatically create a sales receipt AND charge the credit card through QBOE. The APIs appear to indicate this is possible by setting the Detail->CreditCard->CreditChargeInfo. I would expect to receive some information in the CreditChargeResponse Element, however I receive no information in the response regarding the attempted CC charge. Furthermore a sales receipt is created and the proper payment method is selected but no CC information is saved under the payment and it does not appear that there is an attempt to charge the card provided in the below request. I'm left with the following questions
- Are there elements required that I am missing in order to retain and charge the CC within QBOE?
- Is there any documentation regarding the business logic required in order to process a CC using the IPP APIs?
- Can anyone provide a working example of how this request should look?
REQUEST :::
<SalesReceipt xmlns='http://www.intuit.com/sb/cdm/v2'>
<Header xmlns:ns3='http://www.intuit.com/sb/cdm/v2'>
<ns3:TxnDate>2013-04-17-07:00</ns3:TxnDate>
<ns3:TaxRate>9.2</ns3:TaxRate>
<ns3:TaxAmt>0.138</ns3:TaxAmt>
<ns3:CustomerId>1027</ns3:CustomerId>
<ns3:TotalAmt>1.64</ns3:TotalAmt>
<ShipAddr>
<Line1>1234 Fake St SE</Line1>
<City>Fake City</City>
<CountrySubDivisionCode>WA</CountrySubDivisionCode>
<PostalCode>98258</PostalCode>
</ShipAddr>
<ns3:PaymentMethodId>13</ns3:PaymentMethodId>
<ns3:PaymentMethodName>MasterCard</ns3:PaymentMethodName>
<ns3:Detail xmlns:ns5='http://www.intuit.com/sb/cdm/v2'>
<ns5:CreditCard xmlns:ns7='http://www.intuit.com/sb/cdm/v2'>
<ns7:CreditChargeInfo xmlns:ns8='http://www.intuit.com/sb/cdm/v2'>
<ns8:Number>[ACTUALY_VALID_CC#]</ns8:Number>
<ns8:Token>************1111</ns8:Token>
<ns8:Type>MasterCard</ns8:Type>
<ns8:NameOnAcct>Andrew L Reifers</ns8:NameOnAcct>
<ns8:CcExpirMn>**</ns8:CcExpirMn>
<ns8:CcExpirYr>**</ns8:CcExpirYr>
<ns8:BillAddrStreet>1234 Fake St SE</ns8:BillAddrStreet>
<ns8:ZipCode>98258</ns8:ZipCode>
<ns8:Cvv>***</ns8:Cvv>
<ns8:CCTxnMode>CardPresent</ns8:CCTxnMode>
<ns8:CCTxnType>Charge</ns8:CCTxnType>
</ns7:CreditChargeInfo>
</ns5:CreditCard>
</ns3:Detail>
</Header>
<Line xmlns:ns11='http://www.intuit.com/sb/cdm/v2'>
<ns11:Id>1</ns11:Id>
<ns11:Desc>Fake Sale Item</ns11:Desc>
<ns11:Amount>1.50</ns11:Amount>
<ns11:Taxable>true</ns11:Taxable>
<ns11:ItemId>359</ns11:ItemId>
<ns11:UnitPrice>0.50</ns11:UnitPrice>
<ns11:Qty>3</ns11:Qty>
</Line>
RESPONSE :::
<SalesReceipt xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:qbp="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:qbo="http://www.intuit.com/sb/cdm/qbo">
<Id idDomain="QBO">7413</Id>
<SyncToken>0</SyncToken>
<MetaData>
<CreateTime>2013-04-17T11:50:06-07:00</CreateTime>
<LastUpdatedTime>2013-04-17T11:50:06-07:00</LastUpdatedTime>
</MetaData>
<Header>
<DocNumber>4170</DocNumber>
<TxnDate>2013-04-17-07:00</TxnDate>
<CustomerId idDomain="QBO">1027</CustomerId>
<SalesTaxCodeId idDomain="QBO">1</SalesTaxCodeId>
<SalesTaxCodeName>IS_TAXABLE</SalesTaxCodeName>
<SubTotalAmt>1.50</SubTotalAmt>
<TaxRate>9.2</TaxRate>
<TaxAmt>0.14</TaxAmt>
<TotalAmt>1.64</TotalAmt>
<ToBePrinted>false</ToBePrinted>
<ToBeEmailed>false</ToBeEmailed>
<ShipAddr>
<Line1>1234 Fake St SE</Line1>
<City>Fake City</City>
<CountrySubDivisionCode>WA</CountrySubDivisionCode>
<PostalCode>98258</PostalCode>
<GeoCode>LAT=47.974638,LNG=-122.073567</GeoCode>
</ShipAddr>
<ShipMethodId idDomain="QBO"/>
<DepositToAccountId idDomain="QBO">37</DepositToAccountId>
<DepositToAccountName>Undeposited Funds</DepositToAccountName>
<PaymentMethodId idDomain="QBO">13</PaymentMethodId>
<PaymentMethodName>MasterCard</PaymentMethodName>
<DiscountTaxable>true</DiscountTaxable>
</Header>
<Line>
<Id>1</Id>
<Desc>Fake Sale Item</Desc>
<Amount>1.50</Amount>
<Taxable>true</Taxable>
<ItemId>359</ItemId>
<UnitPrice>0.5</UnitPrice>
<Qty>3</Qty>
</Line>
回答1:
Unfortunately v2 does not support credit card, the annotation explains that it is a readonly field.
There is no v2 workaround. The supported api is v3, if you would like to sign up for the v3 beta here:
http://ippblog.intuit.com/blog/2013/03/application-for-early-access-to-quickbooks-api-v3.html
thanks
Jarred
回答2:
The workaround for the V2 IPP APIs is to create an invoice rather than a sales receipt and then immediately accept payment for the invoice using the Payment API with an appropriate Credit Card and setting the ProcessPayment boolean to true. As Jared mentioned : It is not possible to apply this payment to a Sales Receipt.
来源:https://stackoverflow.com/questions/16067969/sales-receipt-process-credit-card-payment-qbo-v2