QB SDK Error 3210 on Credit Card Year in Customer Insert - qbxml

I'm inserting a customer with credit card info (masked, but a test # in this example) and keep getting a 3210 error on the year. I've tried 2016 and 16, and both give the same results. What am I missing?
Here's the CC part of the insert request:
<CreditCardInfo>
<CreditCardNumber>4111111111111111</CreditCardNumber>
<ExpirationMonth>9</ExpirationMonth>
<ExpirationYear>2016</ExpirationYear>
<NameOnCard>ben test</NameOnCard>
</CreditCardInfo>
And the response:
<CustomerAddRs requestID="0" statusCode="3210" statusSeverity="Error" statusMessage="The "customer credit card expiration year" field has an invalid value "2016". QuickBooks error message: Invalid date." />
</QBXMLMsgsRs>

Had the same issue, check your QBXML version in the XML

Related

Quickbooks Desktop BillPaymentCheckAdd error object not found

I am trying to add a $20 payment to a bill. This is from the sample Quickbooks file. However i am getting the error Object \"3E42-1071498278\" specified in the request cannot be found. " Any ideas. I have tried multiple things. I have indeed checked that the bill exists. I have included below the generated qbxml from the sdk. I am using version 13 of the sdk and QB version 14. Changing the date has no bearing on the error response
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError = "continueOnError">
<BillPaymentCheckAddRq requestID = "0">
<BillPaymentCheckAdd>
<PayeeEntityRef>
<FullName>Sergeant Insurance</FullName>
</PayeeEntityRef>
<APAccountRef>
<FullName>Accounts Payable</FullName>
</APAccountRef>
<TxnDate>2017-01-21</TxnDate>
<BankAccountRef>
<ListID>20000-933270541</ListID>
<FullName>Checking</FullName>
</BankAccountRef>
<RefNumber>11000</RefNumber>
<Memo>786-35 Sample</Memo>
<ExchangeRate>1.000000</ExchangeRate>
<AppliedToTxnAdd>
<TxnID>3E42-1071498278</TxnID>
<PaymentAmount>20.00</PaymentAmount>
</AppliedToTxnAdd>
</BillPaymentCheckAdd>
</BillPaymentCheckAddRq>
</QBXMLMsgsRq>
</QBXML>
The error says the transaction with that ID cannot be found. You may see the transaction in QB, but how do you know that the transaction you are looking at in QB has that ID? QB does not think it does.
I would expect to see a BillToPayQueryRq and pulling the transactionID out of the BillToPayQueryRs.
Make sure the payeeEntityRef matches the Bill Txn. You can provide a valid TxnID but if it is not tied to the proper Payee QB will give a TXNID not found error.

$_REQUEST or $_POST phone number value in paypal

How to get buyer phone number in paypal after transaction.
i.e., in return_url or notify_url($_REQUEST or $_POST).
Thanks
You can get the phone number if you make sure that you have settings turn on in your PayPal account . Go to the below url after you login to your PayPal account :
https://www.paypal.com/us/cgi-bin/webscr?cmd=_profile-website-payments
Once you enable that you will get the phone in IPN as well as on PDT like below which includes phone number too .
IPN Text
mc_gross=0.01 &protection_eligibility=Eligible &address_status=confirmed &payer_id=XXXXX&tax=0.00 &address_street=sdfad sfcqa &payment_date=07:32:22 May 05, 2015 PDT &
amp;payment_status=Completed &charset=UTF-8 &address_zip=28202 &first_name=asas &mc_
fee=0.01 &address_country_code=US &address_name=asas sdas &notify_version=3.8 &custo
m= &payer_status=unverified &business=XXXXX&address_country=United State
s &address_city=Charlotte &quantity=1 &verify_sign=ApBHX6qbpxJW-Ll3oP22LSbo0WeuALhKG1yb8
vEI4Ru8T3R32uGwMFbU &payer_email=XXXXXX&**contact_phone=232-321-2345** &txn_id=8
2P55278LK622610P &payment_type=instant &last_name=sdas &address_state=NC &receiver_e
mail=XXXXX&payment_fee=0.01 &receiver_id=XXXXXX&txn_type=web_acc
ept &item_name=Test Item &mc_currency=USD &item_number=123 &residence_country=US &am
p;test_ipn=1 &receipt_id=1673-8486-0790-7009 &handling_amount=0.00 &transaction_subject=
&payment_gross=0.01 &shipping=0.00 &ipn_track_id=6e43b2c5f2c83

Getting the Unique Transaction ID seen by the customer from Express Checkout

I'm using PayPal Express Checkout on a sandbox account, and i'm trying to link up the Unique Transaction ID on the "customer" paypal site with the completed transaction via Express Checkout.
My DoExpressCheckoutPayment returned:
TOKEN=EC%2d2KG36160AM8868619&
SUCCESSPAGEREDIRECTREQUESTED=false&
TIMESTAMP=2015%2d01%2d29T09%3a45%3a09Z&
CORRELATIONID=44060412ed341&
ACK=Success&
VERSION=93&BUILD=15009693&
INSURANCEOPTIONSELECTED=false&
SHIPPINGOPTIONISDEFAULT=false&
PAYMENTINFO_0_TRANSACTIONID=011446947E558235S&
PAYMENTINFO_0_TRANSACTIONTYPE=expresscheckout&
PAYMENTINFO_0_PAYMENTTYPE=instant&
PAYMENTINFO_0_ORDERTIME=2015%2d01%2d29T09%3a45%3a08Z&
PAYMENTINFO_0_AMT=7%2e98&
PAYMENTINFO_0_FEEAMT=0%2e47&
PAYMENTINFO_0_TAXAMT=0%2e00&
PAYMENTINFO_0_CURRENCYCODE=GBP&
PAYMENTINFO_0_PAYMENTSTATUS=Completed&
PAYMENTINFO_0_PENDINGREASON=None&
PAYMENTINFO_0_REASONCODE=None&
PAYMENTINFO_0_PROTECTIONELIGIBILITY=Ineligible&
PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=None&
PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=W9SM36U76AXSS&
PAYMENTINFO_0_ERRORCODE=0&
PAYMENTINFO_0_ACK=Success
Then my GetExpressCheckoutDetails returned:
TOKEN=EC%2d2KG36160AM8868619&
BILLINGAGREEMENTACCEPTEDSTATUS=0&
CHECKOUTSTATUS=PaymentActionCompleted&
TIMESTAMP=2015%2d01%2d29T09%3a45%3a33Z&
CORRELATIONID=80e00a0067bea&
ACK=Success&
VERSION=93&
BUILD=15009693&
EMAIL=test1%40sud%2eco2euk&
PAYERID=H54VEN293PLFL&
PAYERSTATUS=verified&
FIRSTNAME=Test&
LASTNAME=User&
COUNTRYCODE=GB&
CURRENCYCODE=GBP&
AMT=7%2e98&
SHIPPINGAMT=0%2e00&
HANDLINGAMT=0%2e00&
TAXAMT=0%2e00&
INSURANCEAMT=0%2e00&
SHIPDISCAMT=0%2e00&
PAYMENTREQUEST_0_CURRENCYCODE=GBP&
PAYMENTREQUEST_0_AMT=7%2e98&
PAYMENTREQUEST_0_SHIPPINGAMT=0%2e00&
PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&
PAYMENTREQUEST_0_TAXAMT=0%2e00&
PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&
PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&
PAYMENTREQUEST_0_TRANSACTIONID=011446947E558235S&
PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&
PAYMENTREQUESTINFO_0_TRANSACTIONID=011446947E558235S&
PAYMENTREQUESTINFO_0_ERRORCODE=0
But the customer site says:
PayPal Express Checkout Payment Sent (Unique Transaction ID 7PK53077PJ222701T)
Oh..the (painful) memories :) That aforementioned "oddity" also exists elsewhere - e.g. eBay transactions
IINM, you'll need to send your own "custom ID" - the Invoice Id mentioned above (which is displayed to the end user) so both ends have some visual reference to a transaction.
In the REST API (unsure in Classic, haven't tried), if you send an Order, the Order Number (finally) is shared on both ends (same for both). Though it wouldn't hurt to still send your own "custom Id"/"Invoice Id".
Buyer/Customer Paypal UI:
Seller/Merchant Paypal UI:
Hth...

How do I resolve a 400 bad request error using the paypal rest api?

I am currently testing credit card payments using the PayPal payments pro Rest API.
I keep getting the following error:
Exception in HttpConnection Execute: Invalid HTTP response The remote server returned an error: (400) Bad Request. --->
I created and activated my PayPal test account and as following:
Credit card
Credit card number:
ccnumber here
Credit card type:
Visa
Expiration date:
3/2019
When I enter the above information in my payment form and submit I keep getting the 400 bad request error.
I have gotton this to work before with the PayPAl joe shopper account but lost the test cc number.
I am 100% sure I have authenticated with the oauth2 credentials
What is the likely cause of this error?:
I am entering a random payer first name and last name .
Does the name have to exsist?
What could be causing the error
If anything goes wrong in the data given, paypal api will return a 400 - Bad request error.
When I got the error(PHP SDK), I caught the exception and $ex->getData() returned a json which contains the details about the bad request, in my case the currency code I given was wrong.
try {
$payment->create($apiContext);
} catch (PayPal\Exception\PPConnectionException $ex) {
var_dump(json_decode($ex->getData()));
exit(1);
}
Like others here have said, there are several things that can cause the (HTTP 400 - Bad Request).
In my case it was due to using the same invoice number. For temporary testing I just used the ShoppingCartID that I generated with a guid. You could also use a Random number generator as well. Ultimately you will need to generate an invoice number to the clients specifications.
-Good luck
I just had the same problem (HTTP 400 - Bad Request). The cause is a REST API request with "errors". In my case I had two causes:
I passed amount details to an Amount object but the sum of subtotal, shipping an tax was not equal to the amount total.
I passed amount currency values including a fracture, but passed not exactly two decimals but only one. Obviously the REST API is a bit touchy and accepts only either no or two decimals.
I passed an item_list in the Transaction object but the sum of the prices in the Item object was not equal to the subtotal given in the amount details.
I don't know a way of finding the actual cause of the error (if there is one).
In your case it could be the name of the payer that you add. Try without.
Edit:
I just tried out: It is indeed the payer info. I passed a payer_info with first and lastname and got HTTP 400 (without everything worked). I assume that payer_info must not be set by us but is set by PayPal when returning a Payment object.
Payer payer = new Payer { payment_method = "paypal", payer_info = new PayerInfo {
first_name = "Zaphod", last_name = "Beeblebrox"} }; // => HTTP 400 - Bad Request
firstly find out what exactly what Your error is
payment = PayPal::SDK::REST::DataTypes::Payment.new(...)
payment.create
# got Response[400]: Bad Request here
payment.error
# got {"name"=>"VALIDATION_ERROR", "details"=>[{"field"=>"transactions", "issue"=>"
then find out what Your issue here to get more info
https://developer.paypal.com/webapps/developer/docs/api/#validation-issues
I had the same issue. In my case it was Credit Card issue which might be over used. So I have taken new Credit card Number from this site Testing Credit card and replaced with the old one.
Here is Credit Card Information that I used
credit_card = new CreditCard()
{
billing_address = new Address()
{
city = "Johnstown",
country_code = "US",
line1 = "52 N Main ST",
postal_code = "43210",
state = "OH"
},
cvv2 = "874",
expire_month = 11,
expire_year = 2018,
first_name = "Joe",
last_name = "Shopper",
number = "4024007185826731", //New Credit card Number, Only Card type should match other details does not matter
type = "visa"
}
Note: All the Credit Card mentioned in PayPal site are not working, giving same issue for me. If it working for you then it's good otherwise use new testing Credit Card Number. Hope this will help someone.
Thank you! Enjoy Coding!
I too got struck with this issue, there might be many other possible root cause for this failure but then in my case all my passing argument is correct, but then it failed in sandbox environment, I just changed Payment option from PayPal Balance to Visa then it started working.
I recently had a 400 bad request error as well. In my case, I was processing a refund using RefundRequest, and it appears that PayPal recently changed the constraints on the "reason" field (although it isn't documented that I can find) so my lengthy descriptions of what was being returned were no longer acceptable. I found the error only because I saw another field where PayPal was now requiring that it be only single-byte alphanumeric characters. What actually helped though, was shortening the data I was putting through as a reason to simply "Returned items".
Obviously this is an old thread, and I'm sure the original problem was solved long ago, but if using some of the above methods to determine more information about an error don't yield results I would suggest submitting a request with the bare minimum of information until you can get it to go through. Then, start adding additional fields/information back to see if you can identify which field contains the information causing the bad request. That would have worked for my issue, at least.
Understand your errors
PayPal returns detailed data on every exception (except 500 INTERNAL_SERVER_ERROR), explaining what was the exact error you are seeing. You can retrieve that as follows:
Update your exception handling to catch PayPalConnectionException and print $ex->getData() as shown below:
try {
$payment->create($apiContext);
} catch (PayPal\Exception\PayPalConnectionException $ex) {
echo $ex->getCode(); // Prints the Error Code
echo $ex->getData(); // Prints the detailed error message
die($ex);
} catch (Exception $ex) {
die($ex);
}
It is due to the wrong currency or amount you have given.
I faced the issue in React JS
I was doing this. in the createOrder method.
purchase_units: [{
amount: {
currency_code: 'PHP',
value: totalAmount
}
}],
that was the issue. If i gave any currency other than USD i will get the 400 Error. So i removed the currency_code from here
And I moved the currency declaration into my component declaration.
like this.
options={{
clientId: " Your_ID " ,
currency: "PHP"
}}
Here you can give any currency you want. This solves my 400 Error
If you use Paypal Sandbox for testing Driver and on first try with buggy code it shows the client a 400 Bad request error.
Reason:- Paypal sent JWT auth and it was stored in the client's local storage.
Suggestion:- Try to clear the client's local storage cache (You only need to clear the Paypal Token).
This works for me, I hope it works for you :)

Paypal - BMCreateButton - Subtotal amount is not valid

I've started to receive the error:
Ack: Failure
Correlation ID: d1ed16a437fc9
Version: 85
Error Number: 13117
Short Message: Invalid Argument
Long Message: Subtotal amount is not valid.
When making a BMCreateButton request, the script has been working fine, can anyone see what's wrong with the request below? Also I can't find a spec anywhere that states what the format for the subtotal amount should be.
METHOD=BMCreateButton
&VERSION=85
&PWD=xxxxxxx
&USER=xxxxxxx
&SIGNATURE=xxxxxxx
&BUTTONCODE=TOKEN
&BUTTONTYPE=PAYMENT
&L_BUTTONVAR0=address1=11 The Oaks
&L_BUTTONVAR1=address2=
&L_BUTTONVAR2=address_override=true
&L_BUTTONVAR3=billing_address1=11 The Oaks
&L_BUTTONVAR4=billing_address2=
&L_BUTTONVAR5=billing_city=Fleet
&L_BUTTONVAR6=billing_country=UNITED KINGDOM
&L_BUTTONVAR7=billing_first_name=Victoria
&L_BUTTONVAR8=billing_last_name=Fry
&L_BUTTONVAR9=billing_state=Hampshire
&L_BUTTONVAR10=billing_zip=GU51 4HQ
&L_BUTTONVAR11=business=XDQD9TZGYQ9YY
&L_BUTTONVAR12=buyer_email=xxxxxxx
&L_BUTTONVAR13=cancel_return=xxxxxxx
&L_BUTTONVAR14=city=Fleet
&L_BUTTONVAR15=country=UNITED KINGDOM
&L_BUTTONVAR16=currency_code=GBP
&L_BUTTONVAR17=first_name=Victoria
&L_BUTTONVAR18=invoice=8132
&L_BUTTONVAR19=last_name=Fry
&L_BUTTONVAR20=lc=US
&L_BUTTONVAR21=notify_url=xxxxxxx
&L_BUTTONVAR22=paymentaction=sale
&L_BUTTONVAR23=return=xxxxxxx
&L_BUTTONVAR24=shipping=0
&L_BUTTONVAR25=state=Hampshire
&L_BUTTONVAR26=subtotal=65
&L_BUTTONVAR27=zip=GU51 4HQ
The values are php url encoded.
Many thanks for any advise.
I was able to fix this error by adding a subtotal item ala:
"L_BUTTONVAR3" :"subtotal=10.99"