Im currently using PayPals rest api. When executing payment it is returning as 'Pending' and the reason its stating is 'Multi Currency'.
The reason behind this is because the default 'facilitators' account is set to US i need it to all be in GB. The problem is I can login to user-facilitators#email.co.uk's account on sandbox.paypal.co.uk. I'm entering the email and password (which is 100% correct) and It wont let me login to sandbox so I can change the currency preferences back to GBP.
Does anybody no why?
In order to log into a Sandbox Paypal account, you have to be logged into your Paypal Developer Account
as the default 'facilitators' account is set to US and you want to change it to other country. but this edit is not possible in sandbox.
so an alternate solution is to create an another sandbox account and set it to business account. set your desired country and then currency will be your country currency, automatically.
after doing this, use this business account for testing instead of that default 'facilitators' account.
like this you can create any number of business accounts for any country/currency.
hope this will help to you and understood.
Yes, once we register on Paypal developer site, as default, Paypal will issue us two default test account, one is merchant account and another is user test account. All there are fine.
But the problem is their default currency is US, and We can't change them.
When your Magento store's base currency has been set others, like AU, this issue definitely will come out with following system log:
[CURRENCYCODE] => AUD
[PAYMENTSTATUS] => Pending
[PENDINGREASON] => multicurrency
Create another merchant account and set the same currency with your Magento store, it will be fixed.
payment_paypal_express.log
2014-12-12T01:51:34+00:00 DEBUG (7): Array
(
[url] => https://api-3t.sandbox.paypal.com/nvp
[GetTransactionDetails] => Array
(
[TRANSACTIONID] => 15Y48062WM0910211
[METHOD] => GetTransactionDetails
[VERSION] => 72.0
[USER] => ****
[PWD] => ****
[SIGNATURE] => ****
[BUTTONSOURCE] => OneStepCheckout_SI_MagentoCE
)
[response] => Array
(
[RECEIVEREMAIL] => john.yin.au-facilitator#gmail.com
[RECEIVERID] => VQ37QYGD3SFPW
[EMAIL] => john.yin.au-buyer#gmail.com
[PAYERID] => LXDH2RT89NRAS
[PAYERSTATUS] => verified
[COUNTRYCODE] => US
[SHIPTONAME] => john h
[SHIPTOSTREET] => 33
[SHIPTOSTREET2] => esdfd re
[SHIPTOCITY] => ddw
[SHIPTOSTATE] => AL
[SHIPTOCOUNTRYCODE] => AU
[SHIPTOCOUNTRYNAME] => Australia
[SHIPTOZIP] => 34343
[ADDRESSOWNER] => PayPal
[ADDRESSSTATUS] => Confirmed
[INVNUM] => 100000036
[SALESTAX] => 0.00
[TIMESTAMP] => 2014-12-12T01:51:34Z
[CORRELATIONID] => 2ef746f5f1a77
[ACK] => Success
[VERSION] => 72.0
[BUILD] => 14077178
[FIRSTNAME] => Test
[LASTNAME] => Buyer
[TRANSACTIONID] => 15Y48062WM0910211
[TRANSACTIONTYPE] => cart
[PAYMENTTYPE] => instant
[ORDERTIME] => 2014-12-12T01:50:39Z
[AMT] => 44.00
[TAXAMT] => 0.00
[SHIPPINGAMT] => 0.00
[HANDLINGAMT] => 0.00
[CURRENCYCODE] => AUD
[PAYMENTSTATUS] => Pending
[PENDINGREASON] => multicurrency
[REASONCODE] => None
[PROTECTIONELIGIBILITY] => Eligible
[PROTECTIONELIGIBILITYTYPE] => ItemNotReceivedEligible,UnauthorizedPaymentEligible
[L_NAME0] => color swatch te
[L_NUMBER0] => ZP-D3241-WHITE-L
[L_QTY0] => 1
[L_TAXAMT0] => 0.00
[L_SHIPPINGAMT0] => 0.00
[L_HANDLINGAMT0] => 0.00
[L_CURRENCYCODE0] => AUD
[L_AMT0] => 44.00
)
[__pid] => 30696
)
Related
Paypal's Sandbox API responds to a DoCapture with "Invalid TransactionID" error code 10609. The same operation works correctly in the PayPal live site. I think there might be some deprecated params that are rejected in the Sandbox, but accepted in the PayPal live site.
The ff. is POST data from IPN:
[mc_gross] => 1.05
[auth_exp] => 05:28:33 May 26, 2016 PDT
[protection_eligibility] => Ineligible
[payer_id] => SCBNBBCFDWQ54
[tax] => 0.00
[payment_date] => 05:28:33 Apr 26, 2016 PDT
[payment_status] => Pending
[charset] => windows-1252
[first_name] => SandboxStephen
[option_selection1] => Lc1tCoAwCAbgu3iCxtYHdpghtEKoUc2IEd09G_ulPq8oYYtPwh7hSuH0PMGYlMCYbrB_r8kUaK2JRXCuqc7JLzzLPxmEogPCcVEUllzZlKq-U95CFL-QhJtyPagb-ub9AA,,~7634f
[transaction_entity] => auth
[option_selection2] => VU7LDgIhEPuX-QACw_CavfoHxjPZAAdNBLO4h43x3wXjxfYybZNOVyZ-dUaG6wOWzooYnBZIQSiDQqH8upphvbe9PmMtJZcMS2YlpJF_ICLpA8rgR2DRqsFABq11qK1Gr9D82tK-baWmI6aWy3wxvMv5NC83tvR4661OJRlgeX8A~97b17
[option_selection3] => S7QytKoutjK3UspNLS5OTE9Vsi62MrBSUrKuBQA,~2c5b4
[option_selection4] => S7QytqoutjK3UkrPTCuJL8lXsi62MrBSAlGWUMG0ovxcJGFDA6h4am5iZg5cohYA~2aa63
[notify_version] => 3.8
[custom] =>
[payer_status] => verified
[business] => xxxxxxx#xxxxx
[quantity] => 1
[verify_sign] => AvzodxdQ1l47jbnC5iCE7iEjAVYEAnMT6fQE9TdHnShf4zX8V6L99Kpe
[payer_email] => xxxxxx#xxxx
[option_name1] => Transkey
[parent_txn_id] =>
[option_name2] => Syskey
[option_name3] => Message
[option_name4] => Gift
[txn_id] => 4R146799GX924083N
[payment_type] => instant
[remaining_settle] => 10
[auth_id] => 4R146799GX924083N
[last_name] => xxxxx
[receiver_email] => xxxxxxx#xxxxx
[auth_amount] => 1.05
[shipping_discount] => 0.00
[insurance_amount] => 0.00
[receiver_id] => F3XAHZBJYATHU
[pending_reason] => authorization
[txn_type] => web_accept
[item_name] => Test New Deal 2 (Topic)
[discount] => 0.00
[mc_currency] => USD
[item_number] =>
[residence_country] => US
[test_ipn] => 1
[shipping_method] => Default
[handling_amount] => 0.00
[transaction_subject] =>
[payment_gross] => 1.05
[auth_status] => Pending
[shipping] => 0.00
[ipn_track_id] => ff07a74b6ad10
The ff. are parameters for DoCapture:
[authorization_id] => 4R146799GX924083N
[amount] => 1.05
[invoice_id] => 9569
[currency] => USD
[CompleteCodeType] => Complete
[note] => Acuerdo de pago
The ff. is PayPal's response to DoCapture:
[AUTHORIZATIONID] => 4R146799GX924083N
[TIMESTAMP] => 2016-04-26T12:28:57Z
[CORRELATIONID] => 82d81683c3cc8
[ACK] => Failure
[VERSION] => 62
[BUILD] => 21669447
[L_ERRORCODE0] => 10609
[L_SHORTMESSAGE0] => Invalid transactionID.
[L_LONGMESSAGE0] => Transaction id is invalid.
[L_SEVERITYCODE0] => Error
I have tested the new PayPal security upgrades on the site and they work correctly. I specify a very old version (62) of the API, so that might be the problem, but I don't see what I need to change to get the Sandbox to work correctly.
Thanks.
It looks like you mix up the sandbox environment and live environment. You call DoCapture in the live environment, but the 4R146799GX924083N transaction is generated in sandbox environment.
When you call Docapture API, please make sure the API endpoint is https://api-3t.sandbox.paypal.com/nvp , the endpoint change to sandbox , not live.
We are using Woocommerce and Woocommerce Subscriptions. For some reason by default, Woocommerce Subscriptions (Reference Transactions) do not pass or include the Tax amount to Paypal. So I ended up modifying the class files and added in the field "TAXAMT" in the IPN.
However, when I did so, it is now giving us the error:
[L_ERRORCODE0] => 10413
[L_ERRORCODE1] => 10004
[L_SHORTMESSAGE0] => Transaction refused because of an invalid argument. See additional error messages for details.
[L_SHORTMESSAGE1] => Invalid Data
[L_LONGMESSAGE0] => The totals of the cart item amounts do not match order amounts.
[L_LONGMESSAGE1] => This transaction cannot be processed.
[L_SEVERITYCODE0] => Error
[L_SEVERITYCODE1] => Error
Can anybody please help me identify what's missing or what is wrong here?
Below is the IPN request sent to paypal (via woocommerce paypal logs)
This is a recurring product. The product costs $7.70 and the Tax is $0.77 with a total of $8.47
[USER] => ****************
[PWD] => ****************
[SIGNATURE] => ********************************************************
[VERSION] => 124
[METHOD] => DoReferenceTransaction
[REFERENCEID] => B-4CR65046J0487452E
[BUTTONSOURCE] => WooThemes_Cart
[RETURNFMFDETAILS] => 1
[AMT] => 7.70
[CURRENCYCODE] => AUD
[INVNUM] => WC-5184
[PAYMENTACTION] => Sale
[NOTIFYURL] => https://affgo.co/go/wc-api/WC_Gateway_Paypal/
[CUSTOM] => {"order_id":5184,"order_key":"wc_order_56bad2660bf0f"}
[TAXAMT] => 0.77
[ITEMAMT] => 8.47
[L_PAYMENTREQUEST_0_NAME0] => Subscriptions → IMMag Monthly
[L_PAYMENTREQUEST_0_AMT0] => 7.70
[L_PAYMENTREQUEST_0_QTY0] => 1
[PAYMENTREQUEST_0_ITEMAMT] => 7.70
[PAYMENTREQUEST_0_SHIPPINGAMT] => 0.00
[PAYMENTREQUEST_0_TAXAMT] => 0.77
I am trying to create recurring profile and I get his log output with error
[METHOD] => CreateRecurringPaymentsProfile
[SUBSCRIBERNAME] => testuser
[PROFILESTARTDATE] => 2014-05-14T16:01:36-04:00
[DESC] => Monthly Payment for Package:Package 4
[MAXFAILEDPAYMENTS] => 1
[AUTOBILLOUTAMT] => NoAutoBill
[TRIALBILLINGPERIOD] => Month
[TRIALBILLINGFREQUENCY] => 1
[TRIALTOTALBILLINGCYCLES] => 1
[TRIALAMT] => 129.00
[BILLINGPERIOD] => Month
[BILLINGFREQUENCY] => 12
[TOTALBILLINGCYCLES] => 0
[AMT] => 129.00
[CURRENCYCODE] => USD
[CREDITCARDTYPE] => MasterCard
[ACCT] => 5473878247587096
[EXPDATE] => 012015
[CVV2] => 962
[STARTDATE] =>
[ISSUENUMBER] =>
[FIRSTNAME] => John
[LASTNAME] => Doe
[STREET] => 1324 Adams Street
[CITY] => Omaha
[STATE] => AL
[COUNTRYCODE] => US
[ZIP] => 68138
[PHONENUM] => 1402935200
[L_PAYMENTREQUEST_0_L_ITEMCATEGORY0] => Digital
[L_PAYMENTREQUEST_0_L_NAME0] => Package 4
[L_PAYMENTREQUEST_0_L_DESC0] => test package
[L_PAYMENTREQUEST_0_L_AMT0] => 129.00
[L_PAYMENTREQUEST_0_L_NUMBER0] => 4
[L_PAYMENTREQUEST_0_L_QTY0] => 3500
RESULT=2&PNREF=A7X06BD15AD4&RESPMSG=Invalid tender.
The description suggests that merchant account does not support said credit card.But in my manager.paypal.com account I see visa/master and other credit cards are supported. I tried with visa/master , for both I get same error. May be I missing something, please help out.
I have paypal payments advanced subscription.
Sounds like maybe you're signed up for Payments Pro, but not for Recurring Payments, which is an add-on feature.
According to the PayPal PayFlow API documentation, receiving a result with the status "2" means:
Invalid tender type. Your merchant bank account does not support the
following credit card type that was submitted.
Source: https://developer.paypal.com/docs/classic/payflow/integration-guide/#result-values-and-respmsg-text
I have already spent a lot of hours to find an answer for my problem but unfortunately i can't find a soloution.
I implement PayPal (Express Checkout) in our Shop-System. In our shop, the customer enters his shipping address. I don't want the customer to get the option to change his shipping address in PayPal. I only want the shipping address to be displayed which was entered before.
For example, here is an express checkout implementation like I want it:
Shipping Address only displayed:
How can i make this possible?
I use the PayPalSDK for ASP.NET
In your SetExpressCheckout request you can add the ADDROVERRIDE parameter and set its value to 1. Then make sure to include the shipping address parameters in your SEC request as well.
What this will do is simply display the address you pass over to PayPal without the ability for the user to change it.
The value 1 indiciates that the PayPal pages should display the
shipping address set by you in the SetExpressCheckout request, not the
shipping address on file with PayPal. This does not allow the
customer to edit the address here. Must be 1 or 0
Here's a sample of an SEC request I just sent to the PayPal sandbox:
[REQUESTDATA] => Array
(
[USER] => *****
[PWD] => *****
[VERSION] => 97.0
[BUTTONSOURCE] => AngellEYE_PHPClass
[SIGNATURE] => *****
[METHOD] => SetExpressCheckout
[MAXAMT] => 200.00
[RETURNURL] => http://paypal.angelleye.com/standard/samples/DoExpressCheckoutPayment.php
[CANCELURL] => http://paypal.angelleye.com/paypal/class/cancel.php
[REQCONFIRMSHIPPING] => 0
[NOSHIPPING] => 1
[ALLOWNOTE] => 1
[ADDROVERRIDE] => 1
[BRANDNAME] => Angell EYE
[CUSTOMERSERVICENUMBER] => 555-555-5555
[BUYEREMAILOPTIONENABLE] => 1
[SURVEYENABLE] => 1
[BUYERREGISTRATIONDATE] => 2012-07-14T00:00:00Z
[PAYMENTREQUEST_0_AMT] => 100.00
[PAYMENTREQUEST_0_CURRENCYCODE] => USD
[PAYMENTREQUEST_0_ITEMAMT] => 80.00
[PAYMENTREQUEST_0_SHIPPINGAMT] => 15.00
[PAYMENTREQUEST_0_TAXAMT] => 5.00
[PAYMENTREQUEST_0_DESC] => This is a test order.
[PAYMENTREQUEST_0_SHIPTONAME] => Tester Testerson
[PAYMENTREQUEST_0_SHIPTOSTREET] => 123 Test Ave.
[PAYMENTREQUEST_0_SHIPTOCITY] => Kansas City
[PAYMENTREQUEST_0_SHIPTOSTATE] => MO
[PAYMENTREQUEST_0_SHIPTOZIP] => 64111
[PAYMENTREQUEST_0_SHIPTOCOUNTRY] => US
[PAYMENTREQUEST_0_SHIPTOPHONENUM] => 816-555-5555
[PAYMENTREQUEST_0_NOTETEXT] => This is a test note before ever having left the web site.
[PAYMENTREQUEST_0_PAYMENTACTION] => Sale
[L_PAYMENTREQUEST_0_NAME0] => Widget 123
[L_PAYMENTREQUEST_0_DESC0] => Widget 123
[L_PAYMENTREQUEST_0_AMT0] => 40.00
[L_PAYMENTREQUEST_0_NUMBER0] => 123
[L_PAYMENTREQUEST_0_QTY0] => 1
[L_PAYMENTREQUEST_0_ITEMURL0] => http://www.angelleye.com/products/123.php
[L_PAYMENTREQUEST_0_NAME1] => Widget 456
[L_PAYMENTREQUEST_0_DESC1] => Widget 456
[L_PAYMENTREQUEST_0_AMT1] => 40.00
[L_PAYMENTREQUEST_0_NUMBER1] => 456
[L_PAYMENTREQUEST_0_QTY1] => 1
[L_PAYMENTREQUEST_0_ITEMURL1] => http://www.angelleye.com/products/456.php
[L_PAYMENTREQUEST_0_ITEMCATEGORY1] => Digital
)
And here's what I see when I log in to PayPal as the buyer after this SEC call...
I need the buyer transaction ID that correspond to the transaction PayPal notifies me by IPN.
I'm using
$_POST['txn_id']
but this stores the transaction ID for the seller, not the transaction ID of the buyer. At the same time the buyer hasn't access to the transaction ID of the seller.
I understand that PayPal assign two different transactions ID, but the seller needs to stores the buyer transaction ID in order to be able to communicate with the user about an specific transaction.
Anyone know how I can receive (or search for) the buyer transaction ID when PayPal send a notification to my IPN script?
I only receive the follow data:
Array
(
[mc_gross] => 7.00
[protection_eligibility] => Ineligible
[payer_id] => F6912JHUIIHA
[tax] => 0.00
[payment_date] => 10:14:55 Sep 11, 2011 PDT
[payment_status] => Completed
[charset] => windows-1252
[first_name] => Name
[mc_fee] => 2.08
[notify_version] => 3.2
[custom] =>
[payer_status] => verified
[business] => myemail#gmail.com
[quantity] => 1
[verify_sign] => 123232jh4i32u4u3h5n435i43u5455645
[payer_email] => payermail#gmail.com
[txn_id] => 123u4324324yuy4574
[payment_type] => instant
[btn_id] => 35428120
[last_name] => lastname
[receiver_email] => receiver#gmail.com
[payment_fee] => 2.08
[shipping_discount] => 0.00
[insurance_amount] => 0.00
[receiver_id] => OIUWDWUERWEU
[txn_type] => web_accept
[item_name] => Product name
[discount] => 0.00
[mc_currency] => USD
[item_number] => PRODNum
[residence_country] => SE
[handling_amount] => 0.00
[shipping_method] => Default
[transaction_subject] => Product to sell
[payment_gross] => 7.00
[shipping] => 0.00
[ipn_track_id] => ydedi23484rl4itm54oi
)
From the looks of the list of variables paypal sends back, there is no buyer transaction id.
Another option:
Usually when you send your order information to paypal, you can include an invoice/order number, the buyer, if needed, is able to search his history by your invoice number (the same way they would search by transaction id) if you include it when you send the info to paypal.
You can use the GetTransactionDetails API and pass in the buyer's transaction ID.
A sample API call would be:
METHOD=GetTransactionDetails&
TRANSACTIONID=buyers transaction ID&
See also: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_GetTransactionDetails