When I go through the payment process I end up on a url like http://www.example.com/8/xxxxxxxx-c40d-4b0c-a783-1d8938dc3a7d/PaymentRequest.axd which is displaying an encryption key an a "Post it" button. Not sure where to go from here as we don't really want customers seeing this page so perhaps something is not quite right in the configuration?
That intermediate page displays in the sandbox mode. You can use the PayPal developer sandbox to test your site. This sandbox will have different encryption keys that you will need to download. Check your PayPal.config to enable/disable the sandbox and debug options.
As far as the different appearance of PayPal, I was able to find a button in the PayPal UI to return to the "Legacy" view. Once I did that the instructions looked the same. I couldn't find any of the links I needed using the new PayPal layout either.
Thanks Justin that helped however still struggling to complete a transaction using the Sandbox. I've disabled Encryption for the moment just so I can try and get a transaction completed but still no joy. Currently with Encryption off I am getting through to PayPal but when attempting to login and pay with the Sandbox account I just get the error message "This transaction cannot be completed...". I was expecting PayPal integration to be the easiest of all to get up and running but doesn't seem to be the case.
If your site is availble publicly (not localhost) then PayPal will send a IPN notification back to your site. uCommerce has a httpHandler that will process the IPN notification and update the order to see that the payment has been approved. This is the step that will make it show up as a "new" order in the uCommerce Orders tree. It is up to you to handle moving the order along in your pipeline either by hand or by extending the New Item pipeline.
Thanks Justin. I understand about the IPN I was asking more with regards to the return url which sends the user to an "Order Completed" page on the site to be able to display any confirmation details.
Simon, you can save a cookie with the order guid for the customer and look that up once the customer is redirected to the confirm page. The payment gateways will typically include various information in the redirect, but it's different for each of them. Using a cookie will give a universial way to handle it.
- The order goes to the PayPal (Sandbox) & I can make the payment via PayPal.
However no order appears in uCommerce and PayPal does not automatically return me to my configured Confirmation page. However if I click 'Return to merchant' I go back to the /confirmation page with the orderguid in tact.
So the callback / IPN notification is not being processed at all, could this be a Firewall issue (the site is on a public URL), where can I check for failed callback?
More Info:
- There is nothing in the log files (except for missing uCommerce license)
- I've disabled encyption.
- No logging in the PayPal Sandbox that I can see.
- Paypal payment provider is set to execute the 'Checkout' pipeline
I'm a little lost and don't know what I can use to debug?
I would check to see if the PaymentProcessor.axd is available from an external IP. When you're not seeing any issues in the Umbraco log that's typically the issue.
Try accessing the URL www.yoursite.com/PaymentProcessor.axd from your phone or device sitting on an external network and see if you get a YSOD (that's the expected behavior when the proper security params are not passed to the service).
I think I fixed this if anyone comes across the post.
It looks like i take things out of the normal process and it runs the checkout pipeline, so I just needed to take the order GUID parameter and load the purchase order for referencing.
orderGuid comes back from the paypal redirect.
<xsl:variable name="postedOrder" select="CommerceLibrary:GetPurchaseOrderByGuid(umbraco.library:Request('orderGuid'))"></xsl:variable> <!-- Begin Order Confirmation --> <div class="order-confirmation"> <span class="title">Thank you for your order</span> <span class="order-number">Your order number<br />is: <xsl:value-of select="$postedOrder/purchaseOrder/@orderNumber" /></span> <p>Your fruit will be with you in 3-7 working days. Sign in to your account to track your order and make easier purchases from now on.</p> </div> <!-- End Order Confirmation -->
My PaymentProcessor.axd is working (order completes from the paypal IPN callback) but I don't get an orderGuid from the paypal redirect, so can't get the order back using the method descibed by Craig above (CommerceLibrary:GetPurchaseOrderByGuid).
Is there anything special you have to do in order for paypal to pass you back uCommerce's orderGuid? this is what my querysting looks like when coming back from paypal: ?tx=2BK3707803512473B&st=Pending&amt=43.95&cc=GBP&cm=&item_number= Have tried using CommerceLibrary:GetPurchaseOrderByPaymentReference instead, but not sure if payment reference and transaction id are the same thing. Probably not as it doesn't work.
anything I'm missing? why would the transaction ID be in the redirect url but not the orderGuid?
I'm a little rusty on the issue at the moment but I'm due to dig the code out over the weekend for the customer. Unless Søren gets back to you in the meantime "and he ususally does", I will take a look a see if I can work it out to help.
So I got it working in debug mode, and as it doesnt seem that easy to get the GetPurchaseOrderByGuid back after Paypal (for whatever reason that is unknown to me) Instead I am running a custom pipeline from within my paypay-success page which clears the basket using: ${Processing.ClearBasketInformationTask} which seems to work ok (so far)
But, now that I am ready to test it Live I ran into the following error on the PaymentRequest.axd page:
Blocked loading mixed active content "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"
PaymentRequest.axd is trying to load a version of jQuery from a non-https url, which is being blocked by the browser (I guess this is a fairly recent default behaviour with later browser versions), which is causing the page to fail. I know this has probably been fixed in future versions of uCommerce (think I am running 2.6), but what are my options here? Can't believe this hasn't cropped up anywhere for anyone else.
unfortunately I think I'm stuck with a pretty 'special' build. I have tried to upgrade previously without any success. mainly SQL scripts failing when running through the upgrade process.
Is it possible to upgrade to 3 without totally breaking my site? I might try to replace the dll responsible for the paypal payment provider? could you give me any clue as to whether that's possible or is all within the main UCommerce.dll ?
There are, to my knowledge, nothing to hinder an upgrade to version 3. But there are breaking changes, so you probably need to change a bit of code to get it to compile.
The PayPal provider is located in the "UCommerce.Transactions.Payments.dll". They are all IOC-configured in the "Payments.config" file. So you could try switching the dll. But there are no guarantees. It might explode. :-S
Another option would be to override the "PayPalWebsitePaymentsStandardPageBuilder" class and change the BuildHead implementation to use https instead of http for the javascript source.
I'm using a Sandbox Paypal account. PayPal payment is success. It returns to the Confirmation page. Order is not getting stored in the table [uCommerce_PurchaseOrder], but it's not getting displayed in Orders in uCommerce section at the back-office.
Can anyone help me to resolve the issue?
uCommerce 6.0.3.14141
Avenue Clothing Demo Store for uCommerce 5 - Razor 3.0.1.14013
Problem with PayPal Integration and PaymentRequest.axd
I've now got a store up and running and trying to configure the PayPal provider. I have run through the instructions at http://www.publicvoid.dk/SetupUCommerceToIncludePayPalAsAPaymentMethod.aspx which need updating I think as the PayPal side of things looked a lot different for me.
When I go through the payment process I end up on a url like http://www.example.com/8/xxxxxxxx-c40d-4b0c-a783-1d8938dc3a7d/PaymentRequest.axd which is displaying an encryption key an a "Post it" button. Not sure where to go from here as we don't really want customers seeing this page so perhaps something is not quite right in the configuration?
Thanks, Simon
That intermediate page displays in the sandbox mode. You can use the PayPal developer sandbox to test your site. This sandbox will have different encryption keys that you will need to download. Check your PayPal.config to enable/disable the sandbox and debug options.
As far as the different appearance of PayPal, I was able to find a button in the PayPal UI to return to the "Legacy" view. Once I did that the instructions looked the same. I couldn't find any of the links I needed using the new PayPal layout either.
Justin
Thanks for helping out, Justin :)
Thanks Justin that helped however still struggling to complete a transaction using the Sandbox. I've disabled Encryption for the moment just so I can try and get a transaction completed but still no joy. Currently with Encryption off I am getting through to PayPal but when attempting to login and pay with the Sandbox account I just get the error message "This transaction cannot be completed...". I was expecting PayPal integration to be the easiest of all to get up and running but doesn't seem to be the case.
Simon
Unfortunately the PayPal Sandbox can be a bit tricky. Basically you'll have three accounts in play to test it:
The sandbox account itself - used to set up the actual test accounts
The buyer account, which represents the customer - used when you place an order
The business account, which represents the store receiving the paypal - used when you verify transactions coming in
Do you ever get to the step where you enter the account credentials?
Excellent - thanks Søren. I feel a blog post in order when I am done to help anyone else out that may have similar issues.
Does the post back from PayPal allow the order to be retrieved for display on the Order Confirmation page?
If your site is availble publicly (not localhost) then PayPal will send a IPN notification back to your site. uCommerce has a httpHandler that will process the IPN notification and update the order to see that the payment has been approved. This is the step that will make it show up as a "new" order in the uCommerce Orders tree. It is up to you to handle moving the order along in your pipeline either by hand or by extending the New Item pipeline.
Thanks Justin. I understand about the IPN I was asking more with regards to the return url which sends the user to an "Order Completed" page on the site to be able to display any confirmation details.
Oh, I see. I am not sure about that one then. Sorry.
Simon, you can save a cookie with the order guid for the customer and look that up once the customer is redirected to the confirm page. The payment gateways will typically include various information in the redirect, but it's different for each of them. Using a cookie will give a universial way to handle it.
We're having problems too.
I've got to the point where:
- The order goes to the PayPal (Sandbox) & I can make the payment via PayPal.
However no order appears in uCommerce and PayPal does not automatically return me to my configured Confirmation page. However if I click 'Return to merchant' I go back to the /confirmation page with the orderguid in tact.
So the callback / IPN notification is not being processed at all, could this be a Firewall issue (the site is on a public URL), where can I check for failed callback?
More Info:
- There is nothing in the log files (except for missing uCommerce license)
- I've disabled encyption.
- No logging in the PayPal Sandbox that I can see.
- Paypal payment provider is set to execute the 'Checkout' pipeline
I'm a little lost and don't know what I can use to debug?
Any ideas appreciated, cheers
Rich
I would check to see if the PaymentProcessor.axd is available from an external IP. When you're not seeing any issues in the Umbraco log that's typically the issue.
Try accessing the URL www.yoursite.com/PaymentProcessor.axd from your phone or device sitting on an external network and see if you get a YSOD (that's the expected behavior when the proper security params are not passed to the service).
Hi Rich,
Did you have any luck with this I'm doing my first uCommerce site and having the same problem as you have described above.
I think I fixed this if anyone comes across the post.
It looks like i take things out of the normal process and it runs the checkout pipeline, so I just needed to take the order GUID parameter and load the purchase order for referencing.
orderGuid comes back from the paypal redirect.
<xsl:variable name="postedOrder" select="CommerceLibrary:GetPurchaseOrderByGuid(umbraco.library:Request('orderGuid'))"></xsl:variable>
<!-- Begin Order Confirmation -->
<div class="order-confirmation">
<span class="title">Thank you for your order</span>
<span class="order-number">Your order number<br />is: <xsl:value-of select="$postedOrder/purchaseOrder/@orderNumber" /></span>
<p>Your fruit will be with you in 3-7 working days. Sign in to your account
to track your order and make easier purchases from now on.</p>
</div>
<!-- End Order Confirmation -->
Hi Craig,
Thanks for being awesome and posting your soluton in the thread! :)
My PaymentProcessor.axd is working (order completes from the paypal IPN callback)
but I don't get an orderGuid from the paypal redirect, so can't get the order back using the method descibed by Craig above (CommerceLibrary:GetPurchaseOrderByGuid).
Is there anything special you have to do in order for paypal to pass you back uCommerce's orderGuid?
this is what my querysting looks like when coming back from paypal: ?tx=2BK3707803512473B&st=Pending&amt=43.95&cc=GBP&cm=&item_number=
Have tried using CommerceLibrary:GetPurchaseOrderByPaymentReference instead, but not sure if payment reference and transaction id are the same thing. Probably not as it doesn't work.
anything I'm missing? why would the transaction ID be in the redirect url but not the orderGuid?
thanks,
- Tim
Hi Tim,
I'm a little rusty on the issue at the moment but I'm due to dig the code out over the weekend for the customer. Unless Søren gets back to you in the meantime "and he ususally does", I will take a look a see if I can work it out to help.
Craig
So I got it working in debug mode, and as it doesnt seem that easy to get the GetPurchaseOrderByGuid back after Paypal (for whatever reason that is unknown to me) Instead I am running a custom pipeline from within my paypay-success page which clears the basket using: ${Processing.ClearBasketInformationTask}
which seems to work ok (so far)
But, now that I am ready to test it Live I ran into the following error on the PaymentRequest.axd page:
PaymentRequest.axd is trying to load a version of jQuery from a non-https url, which is being blocked by the browser (I guess this is a fairly recent default behaviour with later browser versions), which is causing the page to fail. I know this has probably been fixed in future versions of uCommerce (think I am running 2.6), but what are my options here? Can't believe this hasn't cropped up anywhere for anyone else.
why is javascript even needed for this to work?
help!?
- Tim
Hi Tim,
Sorry for the delay, have you had any luck with this. I've been so busy I really just havent had a chance to dig the code out?
Hi Tim,
This was fixed in uCommerce 3 back in 2012 :)
Hope this helps.
Hi Søren, thanks
unfortunately I think I'm stuck with a pretty 'special' build. I have tried to upgrade previously without any success. mainly SQL scripts failing when running through the upgrade process.
Is it possible to upgrade to 3 without totally breaking my site?
I might try to replace the dll responsible for the paypal payment provider? could you give me any clue as to whether that's possible or is all within the main UCommerce.dll ?
- Tim
Hi Tim,
Upgrading is clearly the recommended option. :-)
There are, to my knowledge, nothing to hinder an upgrade to version 3.
But there are breaking changes, so you probably need to change a bit of code to get it to compile.
The PayPal provider is located in the "UCommerce.Transactions.Payments.dll". They are all IOC-configured in the "Payments.config" file. So you could try switching the dll. But there are no guarantees. It might explode. :-S
Another option would be to override the "PayPalWebsitePaymentsStandardPageBuilder" class and change the BuildHead implementation to use https instead of http for the javascript source.
Kind regards,
Jesper
I'm facing exactly the similar issue now.
I'm using a Sandbox Paypal account. PayPal payment is success. It returns to the Confirmation page. Order is not getting stored in the table [uCommerce_PurchaseOrder], but it's not getting displayed in Orders in uCommerce section at the back-office.
Can anyone help me to resolve the issue?
uCommerce 6.0.3.14141
Avenue Clothing Demo Store for uCommerce 5 - Razor 3.0.1.14013
Payment Method: PayPal
Pipeline: Checkout
is working on a reply...