using paypal button - can my webpage tell if paypa

2019-02-27 23:00发布

问题:

I am using joomla and have brought a component which allows users to post listings on my site. The plugin uses a credit system to pay for the listing but the credit system is quite complex and confusing so i have disabled it.

I found that PayPal provides some code which inserts a Buy Now button on any webpage :) perfect, just what i wanted!

The only problem I am having is at the moment the button is displayed on my Add Listing form (which is again part of the component) but it can easily be bypassed by just clicking on the form's submit button, meaning the listing can be published without having to pay.

So my questions are:

  1. Once the user clicks on the Buy It Now button is it possible to redirect them back to the 'Add Listing' form they were just filling out?
  2. Can I disable the submit button on the form until the payment has been confirmed?
  3. Does the PayPal 'Buy Now' button return any information confirming the process was successful?

i am using html + php :)

the code i used to produce the buy now button is

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="smyacc@hotmail.com">
    <input type="hidden" name="lc" value="GB">
    <input type="hidden" name="item_name" value="listing-purchase">
    <input type="hidden" name="amount" value="2.99">
    <input type="hidden" name="currency_code" value="GBP">
    <input type="hidden" name="button_subtype" value="services">
    <input type="hidden" name="no_note" value="0">
    <input type="hidden" name="shipping" value="0.00">
    <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest">
    <input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
    <img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>

would really appreciate any help with this!!!

Luke

回答1:

Good news - the answer to your questions is essentially yes. Your end goal is definitely doable, but in order to really solve your problem in its entirety, we may need a little bit more information.

How you go about it can vary from case to case, however, and unfortunately it's been a while since I configured these buttons, so bear with me ;-)

once the user clicks on the buy it now button is it possible to redirect them back the the add listing form they were just filling out?

Yes, this is a very standard functionality that PayPal has built into their buttons and their process. What you are looking for here is what PayPal calls "Return URLs" or "Auto Return". Here's the page with more of the documentation I quoted below so you can decide whether the Return URL or the Auto Return or the Payment Data Transfer option is best suited for you.

Returning buyers to your website after they check out

The basic checkout experience leaves buyers on the PayPal website after they check out. Use one of the following techniques to enhance the checkout experience so that buyers return to your website, instead.

Return URL: Allow buyers return to a page on your website if they click a return link or button on the PayPal payment confirmation page.

To learn more, see item #5 under Step 3: Adding advanced features to your Buy Now button or HTML variables for displaying PayPal checkout pages.

Auto Return: Have PayPal return customers automatically to a page on your website.

Important: PayPal recommends that you turn Payment Data Transfer on when you turn Auto Return on. With Auto Return on, PayPal redirects buyers to your website from an alternative PayPal payment confirmation page, which does not allow them to print PayPal receipts. Payment Data Transfer provides the transaction information that you need to allow buyers to print receipts from your website.

To learn more, see Auto Return.

Payment Data Transfer: PayPal includes information about the completed transaction when you use a return URL or Auto Return to send customers back to your website. Use the information that Payment Data Transfer provides to display a "thank you, print your receipt" page on your website. To learn more, see the Payment Data Transfer.


Question Can I disable the submit button on the form until the payment has been confirmed?

Certainly. To disable the submit button on the form until the payment has been confirmed, simply do one of two things until you can detect that the payment has been confirmed:

  1. Add the 'disabled' attribute to the Submit button. This will grey out and disable the Submit button, rendering it unusable. However, since the button would still be visible and all, a web-savvy end user might just go into the HTML and remove the disabled attribute and be on his merry way.

<button type="submit" disabled>Submit Listing</button>

  1. Hide the Submit button. In this case, the web-savvy end user could technically still go into the HTML and remove the styling so that the button is visible, but without seeing it...well, you know, 'out of sight, out of mind'

<button type="submit" style="display:none">Submit Listing</button>


Question Does the PayPal 'Buy Now' button return any information confirming the process was successful?

Again, there's a few ways of attacking this.

Method 1 The simplest way might be to use the PayPal Return URLs and some GET parameters to tell you whether or not things were completed or cancelled. There is something like a Return URL for Cancellations and a Return URL for Completions. From that same page that I linked, PayPal documents the creation of a button with respect to this feature:

Take buyers to a specific webpage (URL) after checkout cancellation (optional)?

Select the checkbox and enter a URL in the text box if you have a special page on your website where you want buyers to return to if they cancel their checkouts before completing their transactions.

Take buyers to a specific webpage (URL) after successful checkout (optional)?

Select the checkbox and enter a URL in the text box if you have a special page on your website where you want buyers to return to after they complete checkout successfully.

Method 2 The more advanced way (which is also more foolproof, given that in the first Method a hacker could try and guess your Successful Return URL) is using PayPal's Instant Payment Notification feature. With this feature, PayPal sends a POST request to a private (behind the scenes) URL which allows you to capture the data it sends you pertaining to the payment completion.

So your backend receives the information on the completion of the payment, and there are countless ways (AJAX requests, require the user refresh the browser or send the user an email telling them to come back and finish it, etc) that you can go about updating the frontend for the user so that they can use the now visible/enabled Submit button.

For details and documentation on PayPal's notify_url through their IPN system.

Best of luck!



回答2:

I think you will find PayPal supply merchant scripts which will do something like that. Instant Payment Notification under PayPal settings - only available in a business account.

The php scripts you can download can be customised to do pretty much whatever you want once they return from payment. On a successful purchase you can echo the submit button so that it is physically not present unless they are returning after payment echo '<input type="submit" name="submit">';

Under "Tools and Settings" "Process My Orders"

You then need to make adjustments in the PayPal merchant interface to return the user to your IPN script.