Voucher email don't send automatically - opencart

When user buys voucher, they get the confirmation purchase email but the recipient don't get the email with the voucher code. I have to log in the Admin and click the send email button to send the voucher code manually to the recipient. So the mail protocol is working fine, it's just that the code doesn't seem to call the send function after purchase. How come?

I the admin panel system settings "Option" tab there is a setting which reads:
Complete Order Status:
Set the order status the customers order must reach before they are allowed to access their downloadable products and gift vouchers.
Make sure the customer's order is set to match this setting and the voucher should be sent. Otherwise, the voucher will be sent anytime the order matches the Complete Order Status setting.

Related

Authorize.Net: How do I verify a hosted payment was successful once the user is redirected back to my site?

I am using the hosted form payment approach to accepting payments from users on my site. I dont see any examples of how to go about verifying the payment once the user is redirected back to my site. Here is how I'm trying to approach it:
Generate a token/form based on the cart
Post to the form url and send the user away
User returns to a verifying page
I have set up a webhook for all payment notifications
I receive the notification
?????
Verify the payment status and price are correct
Navigate the user away from the verifying screen to the next page
In step 6 all i have is the token that was generated for the transaction and the webhook doesnt provide that token back to me. How do I say "this transaction belongs to this user who is waiting to be verified"?
You can use the getTransactionDetailsRequest in their Transaction Reporting API to get the transaction details. The best place to put this information is in the refTransId field which is a value you can pass in as part of your transaction.

OpenCart 3.0 (3.x) + Authorize.net - how to disable ONLY the Authorize.net E-mail?

We currently accept credit cards by phone (entering the order info into the Virtual Terminal) as well as on the website (OpenCart, using the built-in Authorize.net AIM module).
Problem: when order is placed on website, the customer receives 2 E-mails - 1 from our site, 1 from Authorize. The Authorize E-mail, being plaintext, looks ugly AF, and my boss wants to have it disabled.
Attempt # 1: looked in the Authorize.net AIM plugin/module settings. No such option.
Attempt # 2: in the Authorize.net account, under "Settings -> E-mail Receipt", there is a checkbox "Email transaction receipt to customer (if email address is provided)".
Result #2: unfortunately, this disables ALL transaction E-mails - from website transactions (OK) and from Virtual Terminal phone-order transactions (NOT cool). We have to provide an E-mail receipt to phone customers.
Attempt #3: in the OpenCart system, editing file:
catalog/controller/extension/payment/authorizenet_aim.php
to comment out the line
$data['x_email'] = $order_info['email'];
Result #3: during checkout, even if a valid E-mail is entered, upon trying to submit the order, the "Email address is required" error message appears.
So...
Can't disable it in Authorize plugin/module in OpenCart.
Can't disable it in Authorize Account Settings.
Can't just delete the E-mail from the array of data that OpenCart collects during checkout.
How can I disable the Authorize.net E-mail (and ONLY the Authorize.net E-mail, I still want the website receipt to go out) on a site built on OpenCart 3.0?
Found the solution (via Authorize.net Developers Forum). Simpler than I expected:
Open file: public_html/catalog/controller/extension/payment/authorizenet_aim.php
Find line: $data['x_relay_response'] = 'false';
Add after: $data['x_email_customer'] = 'false';
This allows the checkout process to complete without errors, and sends the transaction to Authorize.net along with the instruction to not E-mail the customer.
This isn't a great solution but could you change the email address that gets sent to Authorize.net to be the store admin email, in that case it won't give you the "Email address is required" error message and you'll get that email instead of the customer.
In attempt number 3, can you confirm whether OpenCart gives the error about the email being required or if Authorize.Net gives that error? If Authorize.Net provides the error it may be reconciled by adjusting the payment form settings in Authorize.Net:
1. Sign into Authorize.Net
2. Account > Payment Form > Form Fields
3. Make sure the email field isn’t checked as required.
4. Save your changes at the bottom of the page

Customizing WooCommerce e-mail templates

I have used WooCommerce before, but have never done much customization to it until recently.
I customized the e-mail templates to show the payment information, like transaction number, etc.
This works fine except for one thing.
Right now if a person pays with PayPal the process goes like this:
– order is placed, and is pending payment
– user goes to paypal and makes a payment
– PayPal IPN message is received, order is updated to "processing"
– email is sent to user
However this e-mail does not have the payment info in it. The variables are empty. If I re-send the same e-mail manually it works as expected. other automated e-mails that go out during the order process work fine, it's just that initial e-mail that's missing the information.
What I don’t get is why it's missing the first time, when the PayPal IPN is received, and the transaction info with it, before the e-mail is even sent.
Since the IPN is received before the e-mail is sent why is that info not in the e-mail? If I go to the order and re-send the “processing” e-mail it has the info that we want it to show.
Or maybe even a way to have PayPal orders automatically put "on hold" would work, then when I manually change the order status the e-mail would be sent with the correct information.

Email button to call Web Service

I am creating an email that is sent to customers from my website. This email is triggered when the customer clicks an "Ask for Price" button. The email is then sent to our sellers with the information about the customer and the product they are requesting.
On this email, we want to allow the seller the option to directly respond to the customer, but I would like to have this trigger a flag in my database to show that the seller replied to the customer.
There are a couple of ways you could approach this.
You could have them respond to the customer by clicking on a mailto link that fills in the to address and the bcc address that emails some key information picked up by a script on the server (e.g. customernumber_some_keys#yourscriptwatchedserver.com)
The email message going to the sellers could have a link to respond to the customer that goes to a landing page on your server with a form for their response, which in turn sends the message and adds information to the database

how to get a users #facebook.com email?

I am trying to find out if a user has an #facebook.com email for messaging but can not see where to request that I do request perms for their regular email and can get that, but can't see where to get their #facebook.com email. It's not included in https://graph.facebook.com/me/ and since there's no guarantee that they have set one up I can't assume that it's based on their username
If a user has a facebook.com email address it will be their {username}#facebook.com. However, just because a user has a username setup, doesn't mean there's a corresponding email for it. I've had a username since Facebook landrushed them, and just the other day I setup an email for it. There's no way to tell if they've set it up. Your best bet is to ask the user for an email address that your app can use.
Just go to your privacy settings and from there act as you are editing you email address then there is a Facebook email button setup there.