• Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
  • Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

Paypal hosted solution

Collapse
X
  •  
  • Filter
  • Time
  • Show
Clear All
new posts

    Paypal hosted solution

    Plan B Co have a C# ASP.NET shopping basket that uses PayPal for payments. The user gets to choose between either entering credit card details on the site (which then uses the PayPal .NET API to make the payment, called "DirectPayment"), or using Paypal directly, which redirects them to a paypal hosted form where they can either use their PayPal account, or enter their credit card details as a guest account (this is called "ExpressCheckout").

    Unfortunately PayPal have told us we can no longer do the former. Instead they suggest using a "hosted solution", which means the user is redirected to a PayPal hosted site that we can customise with our logos etc. to enter the credit card details. Fine.

    I feel fairly sure that the C# code we have for the ExpressCheckout option will work more or less the same with this new option, IF I could find out what it's meant to be. But I feel like I've read a million web pages trying to find out some actual facts about how to do this. Unfortunately, it's all in that style that only professional technical authors can acheive - gives the impression of being comprehensive but somehow doesn't tell you anything you actually need to know.

    Anyone done this and have any hints? I keep reading about a "ButtonAPI", but I don't understand why I want to create buttons - I only want one, and I just want it to call my onClick handler on the server.
    Will work inside IR35. Or for food.

    #2
    Originally posted by VectraMan View Post
    Plan B Co have a C# ASP.NET shopping basket that uses PayPal for payments. The user gets to choose between either entering credit card details on the site (which then uses the PayPal .NET API to make the payment, called "DirectPayment"), or using Paypal directly, which redirects them to a paypal hosted form where they can either use their PayPal account, or enter their credit card details as a guest account (this is called "ExpressCheckout").

    Unfortunately PayPal have told us we can no longer do the former. Instead they suggest using a "hosted solution", which means the user is redirected to a PayPal hosted site that we can customise with our logos etc. to enter the credit card details. Fine.

    I feel fairly sure that the C# code we have for the ExpressCheckout option will work more or less the same with this new option, IF I could find out what it's meant to be. But I feel like I've read a million web pages trying to find out some actual facts about how to do this. Unfortunately, it's all in that style that only professional technical authors can acheive - gives the impression of being comprehensive but somehow doesn't tell you anything you actually need to know.

    Anyone done this and have any hints? I keep reading about a "ButtonAPI", but I don't understand why I want to create buttons - I only want one, and I just want it to call my onClick handler on the server.
    I did a PayPal solution for someone last year, VM. It didn't use the Shift operator, though, so you might not get it.

    Basically, you need to set up a "listener" URL on which you have an ASP.Net page waiting for messages from PayPal, which arrive in the form of HTTP Post requests. Your app then needs to re-broadcast the message back to PayPal (again as a HTTP Post) to confirm receipt.

    Within your page logic, you'll probably have a database connection and some way to persist the messages you receive back to your Db. You'll also include any logic that's specific to your process such as ordering stock, etc.

    Each message received concerns things like "an order has been received", "a payment for order X has been confirmed", "subscription cancelled", "subscription payment failed", etc. There's a Sandbox environment that you can use to test your solution without using real money or payment methods. If your listener app is down for any reason when a message arrives, PayPal will re-send any message that you don't confirm, so you need to handle that within your page's logic too.

    It was relatively simple to do All Of The Above from a cold start. It only took about two days (despite the "architect" that had originally scoped the work insisting it would take him three weeks and playing stupid games like withholding passwords from me for their existing store - he wasn't very happy when I had a prototype ready in short order anyway, despite his childish attempts at disruption!)

    If the above is beyond your knowledge of C# at present, there are also PayPal options that cost more, but where you do less of the actual development yourself. I don't have any info on those, other than to say that when I did review them as options they seemed to be fairly comprehensive.
    Last edited by Gentile; 5 August 2012, 23:45. Reason: typo

    Comment


      #3
      If it was as simple as a few bitwise shifts and operators I'd have had it done in 30 seconds .

      I think I have all that (including the sandbox account). The existing "ExpressCheckout" system does much the same. The bit I can't figure out is how to kick it off. The current system sets up some name-value pairs (in the C# onClick), does something where I think it communicates with PayPal to initiate a session, and then redirects the user to the PayPal URL. That then calls back with the same token, or something like that.

      Maybe I'm trying too hard to look for the shortcut, but I'd hoped the new system would work exactly the same, with just a different redirect URL and a different mode in the NVP params. But I can't find what those things might be.

      Thanks for the reply.
      Will work inside IR35. Or for food.

      Comment


        #4
        Originally posted by VectraMan View Post
        If it was as simple as a few bitwise shifts and operators I'd have had it done in 30 seconds .

        I think I have all that (including the sandbox account). The existing "ExpressCheckout" system does much the same. The bit I can't figure out is how to kick it off. The current system sets up some name-value pairs (in the C# onClick), does something where I think it communicates with PayPal to initiate a session, and then redirects the user to the PayPal URL. That then calls back with the same token, or something like that.

        Maybe I'm trying too hard to look for the shortcut, but I'd hoped the new system would work exactly the same, with just a different redirect URL and a different mode in the NVP params. But I can't find what those things might be.

        Thanks for the reply.
        I can't really advise, unfortunately, without actually seeing the code (for which I'd need to invoice you, which I'm sure isn't what you're after! ). However, one thing I will say is that, you know how I mentioned that there was a difficult "architect" (read: 'sole developer with a grossly-inflated ego and attitude problem that had built up a fortress of crappy code around himself') that was trying to be obstructive when I did my PayPal implementation? It turned out that was a blessing in disguise. Apparently, there are two types of PayPal store, the identifiers for which begin with different letters. And - here's the key bit - only the newer type of store worked with the above type of messaging/verification mechanism. I stumbled upon that fact because I *had* to set up a new store to get around The Incredible Sulk's refusing to hand over all the passwords, etc.

        There was no indicator that the 'new' type of store was materially different to the 'old' type: they both had the same ostensible functionality in allowing you to set up products, etc., and the developer guides treated them the same. The only indicator that there was a difference was the fact that the new type of store caused messages to be sent correctly by PayPal, and the old type didn't. I had to Google the dev forums and debug for quite a bit to find that key fact out.

        Your best option, if you're having trouble implementing a custom solution, is to go for PayPal's more-expensive but better-supported option. It's called Website Payments Pro, and costs £20 per month.

        Comment


          #5
          If its just a Paypal IPN solution you are after then I used to produce some commercial scripts to do just that and can give you the code.

          Not done Paypal for a while but it just used to be that your app executes a form post against Paypals servers containing a list of key values, the user is then redirected to Paypals site which presents a payment form customised according to what keys you sent, they make the payment and then Paypal makes a form post to a URL you specify and your app updates your sales tables based on the response codes.

          Does what you want to do sound different to that?

          Paypal Pro is more complex to implement but is the 'better' solution, IPN is simple to implement.

          Comment


            #6
            Half the problem is finding out what the terms mean. Website Payments Pro is what we have now, but I'm not sure if that means we now can't use it, or whether it includes this hosted solution stuff or not.

            IPN sounds like the old old system which used regular ASP and JS, but that seems like a major step backwards from a C# .NET solution.
            Will work inside IR35. Or for food.

            Comment


              #7
              I'll be looking at integrating PayPal into a system I'm developing for my company in the next few months so this thread is of interest to me, thank you Gentile

              GE

              Comment

              Working...
              X