Looking for better solution to implement multiple payment forms

  • Bali-Chris
    Asked on December 1, 2019 at 12:06 AM

    Hi there,

    I read this article about adding multiple payment forms:
    https://www.jotform.com/help/182-How-to-Create-a-Basic-Multiple-Payment-Form

    I don't like the approach of asking the client first how he/she wants to pay, before they haven't even selected the product/service.

    Would it be possible to use a purchase order on the main form and then transfer the the product data and total amount of the products to the selected payment form (Stripe/PayPal etc.)? So the "destination form" would only contain a payment widget, but no products. The source form would send the product data and amount to the destination form upon submission. Is that achievable? 

    Looking forward to your reply. 

    Cheers,
    Chris

  • AshtonP
    Replied on December 1, 2019 at 12:49 AM

    Thank you for writing to Jotform Support.

    I can see that you are looking forward to adding a purchase order to your form. Jotform offers you Payment Integration with Purchase order as well. Please refer to this guide which will provide you all the necessary details to complete the integration: How-to-Create-Payment-Form-with-Purchase-Order

    Feel free to reach us in case you have any further questions or need any help.

  • Bali-Chris
    Replied on December 1, 2019 at 7:10 AM

    Dear Ashton, thanks for the quick reply.

    However, I wasn’t asking how to create a purchase order form ;)

    I was asking if it is possible to send data from one JotForm to another upon submission. As stated before, I would like to have a main form with purchase order and 3-4 forms that receive the data from purchase order to fulfill the payment (PayPal/Stripe ect.). It seems that each payment widget needs to have products with prices. I would prefer to use the payment widgets without adding any products and prices. They should receive the data from the maim form. Is this possible? If yes, how? 

  • Victoria_K
    Replied on December 1, 2019 at 8:04 AM

    Yes, this would be possible. You can redirect users from Purchase Order integrated form to a PayPal/Stripe one and pass the total along. 

    Please take a look through this help guide: 

    How-to-Automatically-Pass-Form-Data-to-Another-Form

    Let us know if you need more help. 

  • Bali-Chris
    Replied on December 1, 2019 at 6:11 PM

    Dear Victoria, thanks for the update.

    Are you 100% certain this works from a purchase order widget to a PayPal or Stripe widget? Also this wouldn't be secure. Everyone could change the amount in the URL. Is there no better way?

     

    The PayPal form still displays the message that I should add products. But as described before, the products should be received from the main form. 
    1575241787Screen Shot 2019 12 02 at 06 Screenshot 10

  • Bali-Chris
    Replied on December 1, 2019 at 6:23 PM

    This is the source form (main form): https://form.jotform.com/82322742850959
    T
    his is the destination form (PayPal): https://form.jotform.com/93338481663970

    There are field ID's for the products, but I couldn't find the field ID for the total.

    1575242565Screen Shot 2019 12 02 at 07 Screenshot 10

  • Girish JotForm Support
    Replied on December 1, 2019 at 8:47 PM

    Also this wouldn't be secure. Everyone could change the amount in the URL. Is there no better way?

    Yes, it should work as per the guide. You should be linking the field IDs between the two forms. Since the URL contains the fields IDs and not the amount, it will not be possible for anyone to change the amount.

    The PayPal form still displays the message that I should add products.

    I can see from your second from that you have sorted this out.

    Are you 100% certain this works from a purchase order widget to a PayPal or Stripe widget?

    A Purchase order payment field though a payment app functions as a normal form without payment integration. So I would suggest that you remove the purchase order payment field from the main form and replace it with single choice/multiple choice field element, which will send the total to a different field. Now it will be easy for you to pass on the total amount to a different form.

    Example: 

    15752503470212 2 Screenshot 10

    You can also add a multiple choice field instead. Assign calculation values to each option: How-to-Assign-Calculation-Value 

    Add a Form Calculation widget to get the Total:

    15752504870212 3 Screenshot 21

    Related Guide: How-to-Perform-Form-Calculation-Using-a-Widget 


    Now use this guide to pass on this Total value to the PayPal payment form: How-to-Pass-a-Form-s-Calculated-Value-to-Another-Form-s-Payment-Total-Field 

    Let us know how it goes.

  • Bali-Chris
    Replied on December 1, 2019 at 9:30 PM

    Dear Gerard! Thanks a lot for the elaborate answer! 

    1.) Security: You are totally right! Thanks for the heads up. Happy to hear that :D

    2.) PayPal widget (destination form): Yes, I think I figured that out now. 

    Basically I have 2 options: Collect donations or User Defined amount

    1575252188Screenshot 2019 12 02 09 Screenshot 10

    If I use a user-defined amount. But then the user could change the total since this field can't be hidden, am I right?


    1575252239Screenshot 2019 12 02 10 Screenshot 21


    3.) Purchase Order widget (main form): I understand that it would be easier to use a multiple-choice or single-choice field. But I love how easy it is to manage products in the purchase order widget (quantity selector, special pricing, product options). It would be easier for my staff to make changes to the forms. Is there any way to make it work with the Purchase Order widget? All I need is to extract the total I guess?

  • Victoria_K
    Replied on December 2, 2019 at 12:04 AM

    Hi!

    2. Yes, you are right. If calculation field is hidden, users will not be able to adjust it. 

    3. To get the total from Purchase Order selected products, you can add a Form Calculation widget (also hidden) and then pass a value from that field to your second form. Below is a screenshot. 

    Please let us know if you need more help on this.

    1575262874a7qqy Screenshot 10

  • Bali-Chris
    Replied on December 2, 2019 at 9:13 AM

    Dear Victoria,

    I believe I am doing everything as described in the links above. It already works fine to transfer the total amount from the first form to the PayPal form. However, it is possible for the user to edit the amount by making changes to the URL and is therefore not secure. What am I doing wrong? 


    1575373854Screenshot 2019 12 03 19 Screenshot 10 

    Also, I followed exactly the same steps for the Stripe form, and I am unable to get the amount copied from the main form to the Stripe form. 


    Here are the form URLs:
    Main form (source)
    PayPal form
     (destination)
    Stripe form (destination)

    Here are are the URLs I used for the thank you pages:
    PayPal: https://form.jotform.com/93338481663970?calculation={total146}
    Stripe: https://form.jotform.com/93338259250965?calculation={total146}


    You would make me super happy if you can help me to make this working! I spent a couple of hours trying all kinds of combinations, but it just won't work. What is the mistake?

    Thank you for your patience!

    Kind Regards,

    Chris

     

  • Bali-Chris
    Replied on December 3, 2019 at 7:06 AM

    Also is there a way to display the total without the user being able to edit it? (main form)

     

    1575374766Screenshot 2019 12 03 20 Screenshot 10

    Update: Even though the user can edit this number, it will transfer the correctly calculated amount to the payment form. 

  • AshtonP
    Replied on December 3, 2019 at 7:10 AM

    Let me run a few tests and get back to you with relevant information.

    Thank you for your patience.

  • AshtonP
    Replied on December 3, 2019 at 8:40 AM

    However, it is possible for the user to edit the amount by making changes to the URL and is therefore not secure. What am I doing wrong? 

    Unfortunately, we do not have a mechanism to protect prepopulated data.

    Also, I followed exactly the same steps for the Stripe form, and I am unable to get the amount copied from the main form to the Stripe form. 

    Instead of using the URL : https://form.jotform.com/93338259250965?calculation={total146}

    Use this one in the Form Conditons: https://form.jotform.com/93338259250965?input3[price]={total146} for Stripe form.

    I have tested it and it works as expected.

    1575380073conditons Screenshot 10

    Also is there a way to display the total without the user being able to edit it? (main form)

    Yes, there is a way, we have an option of Read-Only where your user won't be able to edit the field, please follow the GIF to implement it:

    1575380263signature GIF Screenshot 21

    Hope this will help. Let us know if you need further assistance.

  • Bali-Chris
    Replied on December 3, 2019 at 1:50 PM

    Dear Ashton, thanks for your reply. This means I am not able to add fees depending on the payment gateway? :-/ (PayPal +4.9% / Stripe + 2.9%)

  • Welvin Support Team Lead
    Replied on December 3, 2019 at 6:55 PM

    Why not? You can do that on the main form by just calculating it based on the percentage that you want to add. Please note that if Paypal or Stripe finds that out, they may block you from accepting payments since it is against their terms to charge your customer the fees.

    I see you have the following conditions:

    Looking for better solution to implement multiple payment forms Image 1 Screenshot 20

    This works as far as I could see. Are you all set now? It seems like you have sorted that out already. 

  • Bali-Chris
    Replied on December 3, 2019 at 8:23 PM

    Ashton confirmed that it is not working to transfer the calculation field to the stripe form. Instead I have to use the purchase order field. Meaning I can’t adjust the price based on the payment gateway. Will this bug be fixed in the future? It should be possible to calculate a price for a service and then forward it to a payment gateway.

    Thanks for the heads up about the fees. I will probably turn it around and give customers a discount that pay in cash or by bank transfer.

  • Welvin Support Team Lead
    Replied on December 4, 2019 at 12:24 AM

    I'm sorry for the confusion.

    You can transfer the calculation to the Stripe/Paypal form.

    You can use Purchase Order and transfer its total to the Stripe/Paypal form. Victoria has suggested you to use calculator to fetch the Purchase Order total.

    Here's a demo: https://form.jotform.com/93370939487978

    You can add another calculation widget to calculate the final total including the surcharge based on the payment gateway. Lastly, pass this final total to the next form, which is the payment form. 

  • Bali-Chris
    Replied on December 4, 2019 at 3:01 AM

    I feel like everyone wants to put a comment under this thread just for the sake of commenting, but not everyone is willing to read the history or goal of this discussion.

    Since decades it is best practice to put products or services in a virtual basket, add addons and then go to the check-out where the client can decide how to pay. 

    I do understand that multiple payment gateway support (best practice) is currently not supported by Jotform (and most likely never will) and you are only offering a workaround.

    But it seems the workaround doesn't is either insecure or just not working. Either I run the risk that the client is manipulating the total amount due to displaying the amount in the URL or I have to charge everyone the same amount regardless of the payment form the customer chooses. 

    So I decided to charge everyone the same amount, although I feel it would be fair not to charge our customers the high costs that come with PayPal if he/she makes a bank transfer (free in Europe). For now this thread can be considered as closed. If I run into more issues I will open a new ticket. 

    Jotform always had best support a software company can possibly offer. But it seems with increasing popularity the goal is to deliver quick links to how-to guides instead of taking the time to read what the client actually wants to achieve and what he has already tried. I hope the right person will read this and I also hope that this will not be the new quality standard. 

    --- THREAD CLOSED ---

  • Victoria_K
    Replied on December 4, 2019 at 12:05 PM

    Hi Chris, 

    I think it may be possible to hide the total from the link so users could not adjust it there. What I suggest would be to POST the data to a payment form. Let's say you have first form where a user selects products and chooses the gateway. Fees are also applied in this form to get the pure total. Then, once a user hits 'Submit', they are redirected to a php page, where second form is embedded. The total is passed along through POST method. 

    Does this sound like something to do with in your case? 

    I have this test form so you could review to make sure that email address entered to form is not available in URL: https://form.jotform.com/90511897003959 

  • Bali-Chris
    Replied on January 9, 2020 at 9:42 PM

    It's not visible to the naked eye, but someone who knows how to use the Developer tools in Google chrome can click "inspect" and then change the value: 

    1578623997Screenshot 2020 01 10 10 Screenshot 10

    1578624075Screenshot 2020 01 10 10 Screenshot 21


    Is there really no secure solution to receive payments from more than one provider with jotform? :(

  • Bali-Chris
    Replied on January 9, 2020 at 9:43 PM

    I just don't want to double-check every single form submission if the person has eventually changed the total amount...

  • Bali-Chris
    Replied on January 9, 2020 at 11:14 PM

    @Victoria, could you please share the .php code? 

    I tried the following but it is not working:

    <?php

    <iframe id="paypal" src="<?= $_GET[https://form.jotform.com/93338481663970?calculation={total146}] ?>"/>


    ?>

  • Victoria_K
    Replied on January 10, 2020 at 1:22 AM

    Hello Chris,

    Here is what used in a test form:

    <iframe

    id="JotFormIFrame-90511897003959"

    onDISABLEDload="window.parent.scrollTo(0,0)"

    allowtransparency="true"

    allowfullscreen="true"

    allow="geolocation; microphone; camera"

    src="<?php

    $val = $_POST['email'];

    $url = 'https://form.jotform.com/90511897003959?email=' . $val;

    echo $url;

    ?>"

    frameborder="0"

    style="width: 1px;

    min-width: 100%;

    height:539px;

    border:none;"

    scrolling="no"

    >

    </iframe>

    Unfortunately the other option would be only to set up several similar forms with different payment gateways and combine them into a multi-payment form: https://www.jotform.com/help/182-How-to-Create-a-Basic-Multiple-Payment-Form