In app purchase issue "Your order could not be processed"? - android-billing

I have been working in "In App Subscription", i followed all the steps given in http://www.robotmedia.net/2011/06/android-billing-library-in-app-billing-made-simple/ everything works fine but when i try to purchase and do payment i got "Your payment could not be processed. Please try again" and i log i got some errors like
03-11 18:19:14.489: E/Volley(10235): [13] BasicNetwork.performRequest: Unexpected response code 500 for https://android.clients.google.com/fdfe/completePurchase
03-11 18:19:14.535: W/Finsky(10235): [1] CheckoutPurchase.onErrorResponse: DisplayErrorMessage[Your order could not be processed. Please try again.]
03-11 18:19:14.539: E/Finsky(10235): [1] CheckoutPurchase.setError: type=UNKNOWN, code=-1, permissionCode=-1, message=Your order could not be processed. Please try again.
I have been breaking my head for past three days. Can some one help me to solve this issue. Thanks in advance.

This usually means you are using the same account to buy the in-app purchase as the one you are selling the in-app purchase with. Google does not allow this.
If you want to do this for testing purposes, please check the following page: http://developer.android.com/google/play/billing/billing_testing.html

Related

URL for Verifying PayPal IPN messages

My PaypalIPN.php has this line:
const VERIFY_URI = 'https://ipnpb.paypal.com/cgi-bin/webscr';
My Buy Now button says different:
"https://www.paypal.com/cgi-bin/webscr"
Is that correct with one going to ipnpb. and one going to www.paypal.com
Orders are scarce, there's something wrong somewhere, I'm doing a process of illimintation, can anyone verify the above?
If yours is working OK, can you take a look por favor?
Either URL can work, but the ipnpb one is newer and preferred, per the current IPN documentation.

Payouts errors on Sandbox

I am trying to create Payout functionality using REST API, and I have few errors.
While I am sending this request :
{"sender_batch_header":{"sender_batch_id":"test_0","email_subject":"RaceBets Withdrawal","recipient_type":"PAYPAL_ID"},"items":[{"recipient_type":"PAYPAL_ID","amount":{"currency":"EUR","value":"20.0"},"receiver":"XXXX","note":"Hello there!","sender_item_id":"71292226"}]}
I received:
JAXBException occurred : 4 counts of IllegalAnnotationExceptions.
or :
{"name":"REQUIRED_SCOPE_MISSING","message":"Access token does not have required scope.","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#REQUIRED_SCOPE_MISSING"}
the second error is also strange, because payments are working fine, and scope is also fine
{"scope":"https://uri.paypal.com/services/subscriptions https://api.paypal.com/v1/payments/.* https://api.paypal.com/v1/vault/credit-card https://uri.paypal.com/services/applications/webhooks openid https://uri.paypal.com/services/invoicing https://api.paypal.com/v1/vault/credit-card/.*","access_token":"xxx","token_type":"Bearer","app_id":"APP-xxx","expires_in":28800}
Any idea?
For the second error make sure you have checked the option for "payouts" under your application at developer.paypal.com .
Go to developer.paypal.com --> DashBoard --> My APP -- > Click your APP Name --> App Feature . Select Payout here .
Regarding the REQUIRED_SCOPE_MISSING error, I experienced this as well. Adding the scope as the other poster describes fixed the issue.
Please note that after changing scope (i.e. adding Payouts) it can take a few hours for the change to be reflected, so you'll continue getting the error for awhile. This confused me when I was testing because I didn't expect sandbox to have this latency.

Payment Transaction State Failed

I am trying to make In-app purchase in my application using phonegap plugin which is https://github.com/phonegap/phonegap-plugins/tree/master/iPhone/InAppPurchaseManager
but in sandbox testing i'm getting following error
plugins.inAppPurchaseManager.updatedTransactionCallback.apply(plugins.inAppPurchaseManager, ["PaymentTransactionStateFailed",0,"Cannot connect to iTunes Store","","",""])
and then the application gets struck...can anyone help me out with this??
Take a look inside of InAppPurchaseManager.js, and you'll see the first call of InAppPurchaseManager.prototype.updatedTransactionCallback is:
alert(state);
Replace that with PhoneGap's preferred:
navigator.notification.alert(state);
And it should clear up fine.

Paypal shows old version error on express check out , I got my page run first but now shows this error

I doing paypal express checkout in jsp on sandbox with out using the sdk I am getting the ACK as sucess when generating the token after that when i redirected to sandbox now it shows error message on sandbox as
You have requested an outdated version of PayPal. This error often results from the use of bookmarks.
This is the Ack response i got
TOKEN=EC%2d5PT30649GD612951T&TIMESTAMP=2012%2d03%2d04T16%3a44%3a18Z&CORRELATIONID=4ed0e9de9ec8a&ACK=Success&VERSION=84%2e0&BUILD=2571254
I decoded the response using URLDecoder and redirected to the sandbox
if (ack.equals("Success")) { String logurl = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=express-checkout&token="+token;
response.sendRedirect(logurl);
}
Thanks in advance for any suggestions and answers
If you are receiving this error, it is best to check the url you are redirecting.
Documentation says that the URL is
https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout
Careful with the _express-checkout part. If you are using an ide (like Visual Studio) that marks the urls as links, you might think that it is a space (as it becomes invisible) and at the first error you encounter, you might delete the underscore char.
I got it working and I am answering because i found many one have same error This error occurs mainly due to any of the samll errors or changes in your NVP if you are using it.
I think This link will be helps , deals with "You have requested an outdated version of PayPal"

Magento Strange Redirect Behaviour on OnePage Checkout

My Magento Verison is - 1.4.1.1
I am having two problems:
1) When I am going through various steps of Onepage checkout (registration, billing, shipping, and payment tabs), sometimes during this process I am redirected to the cart page. There is no error, no exception, no report gets generated in var/report. I dont know how to debug it. Aren’t there any logs I can look for?
2) In same Onepage Checkout process after clicking on place the order (last step) , some times it redirects to the cart page, sends an email saying that the order failed with the message:
Quote totals must be collected before this operation.
To resolve it I commented this line in prepareRecurringPaymentProfiles in the file magento/app/code/core/Mage/Sales/Model/Quote.php, which solved the problem:
throw new Exception("Quote totals must be collected before this operation.");
I dont know if these 2 problems are related or not. But I am not having the 2nd problem now but having 1st one quite frequent. What could be the reason and how to resolve it?
further update-I checked the firebug trace, It is 500 internal server error which comes sometimes in any of the step in one page checkout. I was able to dig down into savebillingaction, saveshippingaction functions in onepagecontroller.php and found that error comes when $this->getRequest()->isPost() is blank , If it is 1 then it goes ahead, and goes to the next step else it redirects to cart, No I dont know why this is not 1 or is it because ajax is not able to send post data but I checked XHR request, Ajax send the post data every time (checked with firebug extension). Can Someone tell me What I could do next to troubleshoot. Where I can look for these Ajax Calls?
Shipping.phtml (any step.phtml) has JS at the bottom , How does it call OnePagecontroller saveshippingaction function ?
Since it's internal server error, try to access the error log of the server. Will tell you where is the problem. I' ve had the same problem in 1.7.0. In my example the problem was at /app/code/core/Mage/Usa/Model/Shipping/Carrier/Fedex.php
For anyone else coming across the "Quote totals must be collected before this operation." error, check your Apache logs for the reason of the 500 internal server error. If it's something like this:
mod_fcgid: read data timeout in 40 seconds
Premature end of script headers: index.php
process 26126 graceful kill fail, sending SIGKILL
..PHP is taking too long to respond. Usually its the onepage/checkout saveOrder action because it's quite heavy and often needs to connect to third party services (payment gateways, newsletter services like mailchimp, etc.). These calls to third party services can take a while, depending on the network state and might be the reason of PHP timing out.
You can start by increasing the timeout, but it's not a good permanent solution because you want to find out why this is happening in the first place.
New Relic is a good tool to monitor these calls (and a good tool to monitor your Magento store in general).
Firstly, commenting an error message is almost never the way to solve a problem, as you are just covering up some issue that may have severe consequences for your system.
Nailing down errors like this can be hard, but there are a few places to look first:
Did you install this system on a lower version and then upgrade? If so, how?
Are you using any extensions that modify the sales/checkout portion of the site?
Have you overridden any of the models concerned with this part of the site?
Have you changed the JS or HTML for the checkout?
If one of those is the case, you should review those changes for bugs. If not, try turning on the default theme for the site and checking out again. If the bug disappears, there is a problem with the theme that you are using. If it still appears, the problem is in code.
In that latter case, use Firebug to verify that the offending page requests result in Magento sending back "redirect" commands to the frontend. If that isn't the case, it may be some kind of JS error, but more likely you are ending up with invalid data in the system somewhere that causes Magento to choke during checkout.
Also (just thought of this, haven't tried it), try the multi-address checkout. As I recall, it uses regular page posts, and may even have more useful messaging than the OnePage checkout. Please edit your post with your findings from the above so that we can help more if that doesn't do it.
Hope that helps!
Just in case someone gets the "Quote totals must be collected before this operation." error, and none of these solutions fixes their particular problem, I'll mention that mine was an issue with this:
skin/frontend/base/default/js/opcheckout.js
var params = Form.serialize(payment.form);
There was a JS error unique to this site which was clearing the Payment form and preventing JS from reading it's contents. The module or theme that you use will differ, but check to make sure that the payment form can serialize correctly. If not, then that could be your problem.
I had the very same problem on my store Princessly:
It takes about 20 to 130 seconds or even longer for "Submitting order information ..." to go through and redirect to the payment gateway such as PayPal, if at all, after clicking the Place Order button, last step of one page checkout.
If it doesn't go through, very probably because something timed out since it took too long, it will redirect back to shopping cart, leaving the customer an empty cart and a Pending Payment order, OR, it will give the exception of:
Quote totals must be collected before this operation.
Since obviously, well, something timed out and the script ends before quote totals are collected (which is just my theory), thus sending the Payment Transaction Failed Reminder email.
After 12 hours of research and debug, I finally found the culprit and the solution.
Magento enables RSS stock and new order notification by default, so every time Place Order is pressed ('sales/order' resources are then saved), cache is refreshed so RSS will be published. Cache cleaning can be very time-expensive for Magento. Therefore the solution is simple. Just disable RSS notification for save of 'sales/order' resources.
Find /app/code/core/Mage/Rss/etc/config.xml and locate this block:
<sales_order_item_save_after>
<observers>
<notifystock>
<class>rss/observer</class>
<method>salesOrderItemSaveAfterNotifyStock</method>
</notifystock>
</observers>
</sales_order_item_save_after>
<sales_order_item_save_after>
<observers>
<ordernew>
<class>rss/observer</class>
<method>salesOrderItemSaveAfterOrderNew</method>
</ordernew>
</observers>
</sales_order_item_save_after>
Simply remove or comment it out and refresh Magento cache in System => Cache Management => Select All => Submit.
Now it only takes 1 second or even less for my store to go through Place Order and redirect to payment gateway.