2checkout custom plugin not working with woocommerce - plugins

i have added a new WooCommerce Custom Payment Gateway plugin, this plugin show me the 2checkout features in woocommerce setting page like this
![enter image description here][1]
but how can I send my product value in 2co site when user check the 2checkout option and click the place order button then what action perform in front of site
Ive attached an image of my woocommerce custom payment gateway plugin, file name is class-wc-custom_payment_gateway_1 so in this file i have use the below code
<form action='https://www.2checkout.com/checkout/purchase' method='post'>
<input type='hidden' name='sid' value='5456777' >
<input type='hidden' name='product_id' value='10' >
<input type='hidden' name='quantity' value='1' >
<input name='submit' type='submit' value='Add to Cart' >
</form>
how can i get get form value in this form which i have set in payment gateway 2checkout page
and how to redirect form value on click the place order button on site
this is my product detail and i sent the product detail on click the place order button
Thank you for your reply

You need to add all the parameters which need to be send to 2co in the form with a for loop
foreach ($this->params as $name => $value) {
echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n";
}
And submit the form , I found this on 2CO Dynamic payment gateway plugin

When using a third party cart like WooCommerce, you do not want to create products in your 2Checkout account. You can pass your lineitem details in dynamically using the Pass Through Products parameter set or Third Party Cart parameter set.
In your custom WooCommerce module, under the generate_*your_gateway_name*_form method, you need to generate your 2Checkout form or link from the order object and output the HTML to initiate the redirect. Your custom configuration inputs would be set as properties on your custom Gateway class so they can be set and accessed like below:
```
// Set Value
$this->my_property_name = $this->get_option('my_property_name');
// Get Value
$this->my_property_name;
```
You can see an example in this custom 2Checkout module I did for 2Checkout's PayPal Direct method. Feel free to use this module as a template for your own custom module.
You can also contact 2Checkout tech support directly for help at any time at techsupport#2co.com.

Related

How to do a form submit in moodle from some other page?

In moodle, when you go to Quiz Administration-> User overrides -> Add user override, you get a form (overrideedit.php) to add the details of the user override to be created.
You need to fill that form and submit it. After you submit, the form is processed (in overrideedit.php itself) and then you are redirected to overrides.php page.
Now, I want that form to take post data from my plugin and process it in overrideedit.php and do the redirect.
How do I send post data in this case from my plugin?
You could set a different action for the form you're having in your plugin (this assumes you are using Moodle Form API for your custom form):
// Instantiate your form
// Data will be submitted to /mod/quiz/overrideedit.php
$mform = new custom_form_your_are_having(new moodle_url('/mod/quiz/overrideedit.php'));
Or simply change the action attribute of your custom for to point to /mod/quiz/overrideedit.php:
<form action="/mod/quiz/overrideedit.php" method="post">
...
</form>

Form posted to paypal but callback doesn't contain custom fields

I set up a sandbox account and I'm simulating payments with sandbox and logging $_POST array posted by paypal sandbox (simulating).
This is the form that I'm sending to paypal (not simulating)
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
// charset, name, email, etc.
// ...
<input type='hidden' name='on0' value='Custom field 1 NAME'>
<input type='hidden' name='os0' value='Custom field 1 VALUE'>
</form>
As you can see I have 1 custom field named on0.
How am I supposed to retrieve that value? I can't create custom fields on paypal's sandbox page.
These should be variables that get returned back to you. Can you provide the full PayPal button code that you are using. Also, what is the method that you are using to return data back to your site?

paypal redirect on successful checkout

I am trying to get my Paypal subscription to redirect to a custom page after a successful checkout.
Before submitting to Paypal I overload the submit handler, run my own function (to store details) and return a unique id. I want to attach that id to my return URL. (as a GET or POST var so to speak)
I have turned auto redirect "on" in my Paypal sandbox sellers preferences, but it only seems to re-direct to the URL that I HAVE to put in there.
using the <input type="hidden" name="return" value="someurl" /> does no seem to work.
I want it this way so that I can capture the user information when entered with a "non-paid" flag, then via the IPN I can update that record with a "PAID" flag, and I want to use the unique ID to tie it all together so to speak.
Your hidden field name needs to comply with the accepted variable name required by PayPal. Does ReturnUrl (not case-sensitive) not work?
<input type=hidden name="RETURNURL" value="https://www.YourReturnURL.com">
Note: I have only investigated and implemented express checkout so this may not apply to your implemenation: https://cms.paypal.com/en/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECGettingStarted

Paypal custom field not propergating

I have set up a sandbox for paypal with a buyer and a seller. I have created a button for a subscription and pasted the code into my website along with the custom hidden field with the value ofv 121. In the Optional Fields I added "custom=0" as just adding "custom" alone would not save.
I processed the payment and checked the returned post for the custom variable in the $_REQUEST() string and it was not their, how do I get at it. What I got was bellow:
http://www.socialise4fun.co.uk/success.php?auth=Cjr-longstring-OSBx...&form_charset=UTF-8
What do I do with it to get my data back.
I'm trying to pass through the user_id in the custom field that paypal says in many places you can.
You have to use IPN to receive this data. This data is not supposed to be available in the GET of the return URL.
Have a look at https://www.paypal.com/ipn/
In short: include <input type="hidden" name="notify_url" value="http://link-to-your-IPN-script"> in your PayPal button, and you'll receive a POST with this data once the transaction has gone through.

Can I send a variable to paypal, and have it post it back to me when payment completes?

Ive been using express checkout API to convert people's accounts on my site to premium accounts after paying. The only problem with it is that it doesn't send the user back to the site until they click the button to return, and it updates their permission when that happens. About 40% of the users don't seem to do that.... so their accounts never get credited after payment.
Although paypal does an instant post-back upon the successful payment, I was never able to make it actually update the user's account right away, since I cant get it to send back some sort of informational that would identify the user that just completed the payment. I could only do that when you are sent back to the site, which sends the transaction ID, that I logged with a post-back. It searches for it, and grants permission if it was found int he DB.
Is there a way to submit some sort of a variable to paypal, that it will then post back to me? Something like &user_id=123, which would make it very handly to update the user's permission.
Iten_number hidden variable don't work in my application. But i found that custom hidden field works fine. Just add this field to the form, generated by paypal: <input type="hidden" name="custom" value="YOUR VALUE FROM DB"/>. After, you can read this value to identify, for example, what product have been purchased. (Java code): String custom = request.getParameter("custom");
Yes, if you send item_number, the IPN notification will include that when it posts back to you. I record a unique ID in the database when the user starts the payment process, and include that when sending them to PayPal. When the IPN comes in, that unique ID matches up with the record in the database, giving me all the info I need.
Edit Re your comment:
I expect there's a code example somewhere on the site linked above, but basically in my case I'm using a form that I POST to https://www.paypal.com/cgi-bin/webscr. Within that form are various hidden fields documented in the IPN stuff (cmd for what command to perform, business to specify your business ID, item_name for a nice description in the PayPal UI, item_number for the item number I mentioned above, etc., etc.). When IPN posts back to your IPN address, it includes various fields (such as payment_status — kind of important! &mdash and the item_number you fed in when posting to them).
Just to add to this old question...
There are option parameters that are commonly used for custom data sending through paypal.
These option tags are on0, on1, or on2 for the custom field names and os0, os1, and os2 for the custom field values.
I would send on0 with a value of "UserID" and os0 the actual ID.
These values will be represented in the IPN as follows:
os0 is represented as option_selection1
os1 is represented as option_selection2
os2 is represented as option_selection3
on0 is represented as option_name1
on1 is represented as option_name2
on2 is represented as option_name3
Here's the info on PayPal's HTML parameters
According to HTML Variables for PayPal Payments Standard you can send all the "Pass-through" variables:
item_number Pass-through variable for you to track product or service
purchased or the contribution made. The value you specify is passed
back to you upon payment completion. This variable is required if you
want PayPal to track inventory or track profit and loss for the item
the button sells.
custom Pass-through variable for your own tracking purposes, which buyers do not see. Default – No variable is passed back to you.
and
invoice Pass-through variable you can use to identify your invoice number for this purchase. Default – No variable is passed back to
you.
All these pass-through variables are sent back by the IPN in the payment response info.
You just have to render your HTML template server-side and write the fields back in the HTML code like
<input type="hidden" name="item_number" value="{{ productID }}">
<input type="hidden" name="invoice_id" value="{{ invoiceID }}">
<input type="hidden" name="custom" value="{{ jsonInfo }}">
Technically the field "custom" can be a JSON encoded string if you want to handle more data like
myItemObject = {
"customerEmail" : "john#doe.com
"customerID: "AAFF324"
}
jsonInfo = json.dumps( myItemObject )
return render_template(tmpl_name, jsonInfo=jsonInfo, productID=productID, invoiceID=invoiceID)
I finally get this answer, I want to share with all of you look:
on your HTML form put this code (this is Paypal sandbox):
form action="https://www.sandbox.paypal.com/cgi-bin/webscr?custom=YOUR_VAR" method="post"
On your PHP after the Paypal redirect to your page success: use the cm GET variable:
$example = $_GET["cm"];
I hope this URL solves your issue. As it solved mine as well. Add a custom variable to your form and then retrieve it on your success payment page.
Example :
<input type='hidden' name='custom' value='<?php echo $email; ?>'/>
and then retrieve it as :
$_POST['custom']
<input type="hidden" name="on0" value="Ajay Gadhavana">
<input type="hidden" name="on1" value="my_phone_number">
<input type="hidden" name="on2" value="my_third_extra_field">
Response from paypal would be
[option_name1] => Ajay Gadhavana
[option_name1] => my_phone_number
[option_name1] => my_third_extra_field
What worked for me in 2021 is passing "custom_id" (inside the "purchase_units" array) to PayPal in my client app and checking "custom" on my backend.
Yes, it looks like PayPal renames the parameter for some reason.