Recurring & Subscription Payments

WELCOME TO MILOPLE HELP LIBRARY !

  • General Queries
  • Setup and Configuration
  • Payment Gateway Integration
  • Theme Integration
  • Subscription Handling and Related Queries

General Queries

Yes, extension allows purchasing multiple recurring products and recurring products with normal products both together in a single order.

Yes it creates an order for each subscription created.

Yes, admin can create orders for recurring from backend as well.

Yes, our extension supports products with custom options.

Yes, our extension supports guest checkout.

Registered customers can terminate their subscription from their “My Account” section but guest customers will have to contact admin to terminate their subscriptions. 

Setup and Configuration

Yes, you can create and manage subscription plans as per your choice. You just need to create a plan having monthly term and you can repeat it for 6 times for creating  subscription cycle for 6 months.

Surely you can offer. We have developed the extension to set discounts based on  terms selected. You can set discounts by selecting any from all terms, first term or all  except first term.

Yes, when you setup various terms (e.g. weekly, monthly,etc.) inside the plan configuration, you need to define the price for that particular term in either fixed or percentage value. Buyer will be able to buy product outright on regular price and on subscription based on term price. If you set 'Percentage' amount then it will calculate the term price based on percent value of regular price.
No, our extension is not based on the recurring profiles of Magento. The extension executes Recurring and Subscription payments based on Cron job. This needs setting up cron job in cPanel.
There is one required field named as “Send Notifications for Status” inside “Subscription Status Notifications Settings” tab. You should be missing this field to select. Kindly select one or multiple value from this field and you will be able to save configuration.

Yes, our extension allows you to do that. You can go to "Catalog - - > Manage Products - - > Edit - - > Prices" and at the admin side and you will notice "First Term Price" attribute. You may define your fixed discounted price there and our extension will consider this price for first subscription order only.

 

For the remaining subscription orders which are suppose to be created in future for the same subscription, admin user needs to configure price at "Recurring and Subscription Payments - - > Manage Plans - - > Edit - - > Terms" in the admin section. Our extension will consider term specific price defined according to selected term while placing an initial subscription order.

Yes, our extension will carry forward the magento discount applied to the first order to all its subsequent recurring orders.

You need to upload your course or magazine downloadable file for each month at the back-end within “Manage Products - - > Edit - - > Downloadable Information” section. The next step is to start assigning sort order starting from one, to each file. Our extension will attach each downloadable file with the new order created every month according to the sort order assigned to each file.

Customer will be able to download new course file within new order created at every month. For example, the first order will have the downloadable file with the sort order 1 attached to it and so on.
 

Downloadable Products


In this case if you have assigned the same sort order to multiple files then all those files will be available for download with their respective subscription order.

Payment Gateway Integration

We have integrated our extension with default Magento Authorize.net. We can’t  assure you about its compatibility still you can contact us for the further help and  integration with third party module.  

No, our extension works to capture secured payments and thus the respective  payment gateways provides us a token each time to initiate auto capture of  subscription payment.

We had developed the auto-capturing facility with PayPal pro payment method earlier in our Recurring and Subscription payment extension. But due to some PayPal gateway limitations, we had to remove this feature from our extension.

 

The Limitations are as below:
PayPal pro has two payment actions. 1) Authorization, 2) Sale.

 

Authorization: An authorization payment action represents an agreement to pay and places the buyer’s funds on hold for up to three days.
When customers use PayPal pro method, they have to enter their Credit Card details. And due to issue of confidentiality, we do not store customers’ details in the site of a merchant and so it is stored on PayPal gateway. Now when next subscription order is required to be processed, our extension sends request to the PayPal gateway to capture the required order amount.
But, as per the above definition, if the request will be on hold for three days, PayPal will not respond to the given request due to the expiration of the base transaction.

 

Sale: A sale payment action represents a single payment that completes a purchase for a specified amount. You cannot capture further payment or void any part of the payment when you use this payment action.
In this case, we can’t make any reference to create and capture pending subscription order amount.

 

Due to both these limitations, we have decided to exclude PayPal pro auto-capturing facility from our Recurring and Subscription payment extension.



For this, you can also refer the help guide: https://developer.paypal.com/docs/classic/paypal-payments-pro/integration-guide/ 

Generally, paypal do not display this option for guest users. So you should be creating new account just on checkout page or following guest checkout process in this case. So as a solution please follow the following steps:

1) First we would like to suggest you to keep Billing Agreement configuration as 'Auto'. This will display the billing agreement option to agree on paypal gateway. If you set it as 'Ask Customer' then customer may forget to tick mark it on store and his/her subscription will not subscribe in future due to this.

2) We will have to change some code into core file of PayPal module if you want to display Billing Agreement option on paypal gateway to new users who created their account just on checkout before redirecting on paypal. You will have to overwrite “_setBillingAgreementRequest()” function of “Checkout.php” file located at “/app/code/core/Mage/Paypal/Model/Express” directory. For this, you need to add “Checkout.php” file entry in “config.xml” file of our extension located at “/app/code/local/Indies/Recurringandrentalpayments/etc” written as below:

<models>
  <paypal>
    <rewrite>
      <express_checkout>Indies_Recurringandrentalpayments_Model_Express_Checkout</express_checkout>
    </rewrite>
  </paypal>
</models>

Then, add “Checkout.php” file at “app/code/local/Indies/Recurringandrentalpayments/Model/Express”. Here, you need to create Express folder inside the Model directory.
As we informed earlier, you just need to overwrite “_setBillingAgreementRequest()” function in this file. So kindly copy this function form core file and paste it into the override file.
In this function you will notice one line at last “$this->_api->setBillingType($this->_api->getBillingAgreementType());”. You need to put this line at first just after starting function. Save this file and check again. You will find Billing Agreement option on gateway to agree. That's it!
  • Generally, this payment method doesn’t require any additional configuration to setup.

  • However, you are required to activate “CIM” option on your Authorize.net merchant account.

  • Our extension is compatible with default magento Authorize.net payment method and If you are using any third party Authorize.net payment method extension, then kindly contact us at https://www.milople.com/contact-us.html , to get integrated respective payment method with our extension.

 

To configure with PayPal Express payment method, you will require two settings.
  • 1. The reference transaction option(allow reference transaction) must be activated on your PayPal merchant account. To enable it, you can contact PayPal support team.

  • 2. This payment method requires to activate billing agreement option, within payment method configuration. You will find this option at “System - > Configuration - > Sales - > Payment Methods - > PayPal Express Checkout - > Basic Settings - > Advance Settings - > Billing Agreement Signup”. There are three sub-options available in this dropdown.

    Billing Agreement

  • If you set it to “Ask Customer” then the checkbox for billing agreement will be displayed on checkout page,  within the payment method section. 

  • If you select “Auto”, then PayPal gateway will make agreement forcefully when user is placing the subscription order. We recommend to set this option to “Auto”, in order to avoid misunderstandings and failure in processing future subscription transactions.

    PayPal Gateway

  • Due to a billing agreement related bug in magento, If buyer is placing initial order either by guest checkout or by creating new account on checkout page then she won’t find billing agreement option to agree on gateway even though admin user has set billing agreement option as “Auto”. In order to resolve this issue you may refer our knowledge base question at http://bit.ly/2ltu2g3.

  • This solution requires change in core magento file hence not integrated directly in our module. 
  • While using our extension with PayPal Payflow Pro payment method the reference transaction option must be activated on your PayPal merchant account.

    If you are using sandbox account then this option would be pre-activated. However, if you are using live merchant account then,  you will have to contact to PayPal support staff in order to activate this option. Once they activate this option you will have to wait at least for one hour and then you may start testing subscription order with this payment method.
  •  

  • The default payment method configuration for this payment method will remain      same and no specific configuration is required tobe done.
     
  • To capture subsequent subscription amount we use token received from paypal gateway when the order was placed by customer initially. This token expires after one year. So in case you offer longer subscription periods than a year, you will have to do some settings here: “System - - > Configuration - - > Recurring and Subscription Payments - - > Paypal Payflow Settings”.
  • Our extension is compatible with third party “Gene Braintree Payment method” extension which provides both these payment methods in a single extension. You may download this at

    https://www.magentocommerce.com/magento-connect/braintree-payments-with-hosted-fields.html.


  • Please goto “ System - - > Configuration - - > Sales - - > Payment Methods - - > Braintree Payments - Credit Card ” and Enable Vault. That will display Save credit card option on front end.

    Braintree CC

    Braintree CC Fronend


  • Same way you need to enable Vault in Braintree PayPal payment method configuration as well. Hence, it will display the save credit card option at frontend. You will find this option at “ System - - > Configuration - - > Sales - - > Payment Methods - - > Braintree Payments - PayPal ”. 

    Braintree PayPal


    Braintree PayPal Frontend 

Theme Integration

Our extension uses default magento RWD theme files and these will get replaced with same files available on your store. If theme is highly customized it may create some theme conflicts during this. Here are some steps to resolve this.

1) Category Page:
Please find the path of “list.phtml” that works on category page when our extension is disabled.
Please open “list.phtml” file of our extension located at “app/design/frontend/your-package-name (e.g. rwd)/your-theme-name (e.g. default)/template/recurringandrentalpayments/product” directory.
Find the code block between $_product->isSaleable() condition and add to cart button code. Copy this block and put it into your customized list.phtml file at same place.
Then, you will find “echo $this->__('Add to Cart')” in the addtocart button code just below the recurring payment additional block. You need to replace the above line with “echo $buttonTitle;”.
Overall, you need to do this process twice. One for list collection and another for grid collection in the same file.
Once you add this additional code into your customized “list.phtml” file then replace this file with our extension “list.phtml” file at “app/design/frontend/your-package-name (e.g. rwd)/your-theme-name (e.g. default)/template/recurringandrentalpayments/product”.

2) Product Page:
Find out the path of “addtocart.phtml” that works on product page by default when our extension is disabled. Further, you need to integrate additional code of recurring payment into this file.
For that, please open “addtocart.phtml” file of our extension located at “app/design/frontend/your-package-name (e.g. rwd)/your-theme-name (e.g. default)/template/recurringandrentalpayments/product/view” directory. You will find one additional block above html button tag which displays the addtocart button at frontend.
Copy this block and put it into your customized addtocart.phtml file at likewise place.
Once you add this additional code into your customized “addtocart.phtml” file then replace this file with our extension “addtocart.phtml” file at “app/design/frontend/your-package-name (e.g. rwd)/your-theme-name (e.g. default)/template/recurringandrentalpayments/product/view”.

3) In case if you don't see subscription option for a product on front end despite creating subscription plan for a product, you need to follow these steps.
Sometimes it happens that you added any specific product to the subscription plan at backend but still you can't see subscription options on product page at frontend.
In such case, enable the template path from backend and see whether one of the file from “/app/design/frontend/your-package-name (e.g. rwd)/your-theme-name (e.g. default)/template/recurringandrentalpayments/product/view/type” directory is listed or not.
The exact file would be based on the respective product type. If you are referring simple product then 'simple.phtml' file should be called from above directory.
If this file is not calling on product page then you need to put the code of this file in the file which is calling instead of our extension file. That might be 'default.phtml' on some stores.

If customer credit card expires, while processing subscription order, our system will mark the status of that subscription as ‘Suspended’. Admin user then need to pay subscription manually from ‘Manage Subscription - -> Edit Subscription - - > Subscription Payments’ in admin grid.

You cannot provide free trial as a first term of subscription in the default version of the extension. Because if you set term price 0, it will not proceed any parent transaction with payment gateway and thus the gateway will not provide us any token to auto capture payments of subscription orders in future and thus auto capture facility will not work at all.
However, we can do this additional professional customization with certain payment gateways. Kindly contact us on "support@milople.com" for this. 

No, if a subscription order fails to capture payment due to any reason, the whole subscription gets suspended. It can only be switched to active whenever admin pays for the failed subscription order manually.

Pay Now Link appears adjacent to payment date in subscription payments grid when payment of a subscription failed due to any reason as mentioned in https://www.milople.com/knowledgebase/m1-recurring-subscription-payments.html#Subscriptions Not being processed on Given due date. Please refer that and fix if required.

The pay now link appear only if any subscription order fails during subscription processing. In case the order fails the link appears after 1 day so admin can manually process it if required.

There can be multiple reasons why the subscriptions are not getting processed.

1) Cron Job is not setup as per the required configuration. You may refer this video http://www.youtube.com/watch?v=Wwlk-ZIkjl4 to know how to setup Cron job correctly.

2) What have you set in the field “Activate Subscription On” field in the System Configuration of Recurring and Subscription payment extension? Please check that and make sure you are following that. Take for example if you have set this field to “On Invoice Generation”, if the invoice is not generated of the previous subscription then the next subscription wont get processed. To better understand this lets have two examples.

Example 1:
You have set “Activate Subscription On” field to “Manually by Admin”, then for every new order Admin will have manually activate the order. If not done, the subscription wont get processed. and this will be true for every subscription order and every payments of each subscription. Lets check next example to understand this.

Example 2:
You have set “Activate Subscription On” field to Order Completion, then for every new subscription payment of that order system will check if the last subscription order is now complete. If 5th payment of a subscription could not reach to Complete the sixth wont be charged.
In short, next subscription order will charge only if last subscription order passed through the order process that you have set on “Activate Subscription On” field.

3) Subscription got processed but failed due to insufficient funds in buyer’s credit card

4) The payment method merchant account details got changed after the first subscription order.

5) Token value of the subscription is not stored in The tables. If the Subscriptions are not being charged despite correctly configuring the extension as per the user manual, the problem should be related to missing token value. The token value is being passed by payment gateway and is different for all payment methods. You may check this further with instructions given bellow:

a) If you are using PayPal Express payment method then your subscription should have billing agreement id stored in subscription database table. For that, kindly check the value for ‘billing_agreement_id’ field in ‘recurringandrentalpayments_subscription’ table for your subscription.

b) If you are using Payflow Pro payment method then you need to check ‘payflow_pnref_id’ field value for your subscription in ‘recurringandrentalpayments_subscription’ table.

c) If you are using Authorize.net payment method then you need to check ‘real_id’ and ‘real_payment_id’ field values for your subscription in ‘recurringandrentalpayments_subscription’ table.
The payments would not get processed if the token is not stored here. This can be an issue related to a communication between extension and payment gateway and needs a detailed review of code and configuration.

d) If you are using Braintree payment method then you need to check ‘payment_token’ field value for your subscription in ‘recurringandrentalpayments_subscription’ table.

6) Your store is under maintenance mode at the time of subscription got processed by cron.

7) If subscription product(s) assigned to your subscription is outofstock.

8) If Shipping method or Payment method used in the respective parent subscription order is now disabled or removed.

In case of daily subscription you need to wait atleast for a day to test if subscription process is working efficiently. There is no direct way in admin to test it instantaneously without waiting for a day. However you can achieve this by changing pending subscription due date to today’s date from ‘recurringandrentalpayments_sequence’ database table. Kindly run the cron once you change the due date or setup cron job to run at every minute. This way you will be able to test subscription order creation process quickly. Please use this trick carefully as it involves working with database tables directly.
Extension shows Pay Now link when a subscription order failed due to any reason. So that will be an issue which you will have to resolve first.
You can trace the reason of a failed order from respective payment method log file from '/var/log' directory. For that you need to enable debug mode in respective payment method admin configuration.

Once you resolve this issue then you can click on Pay Now link to create particular subscription order manually. Without any manual action this link does not help you place failed suscription order again.

Yes, user can pause his subscription at the front-end by following this path “My account - - > My Subscriptions - - > Payments”. Here, user can skip any number of sequences and our extension will mark that subscription as “Suspend” during that time period. Once this period ends the respective subscription will be automatically activated.


Please note that if you skip all remaining sequences then our extension will terminate that subscription. Also, this concept is only applicable to fixed type of subscriptions only whose number of subscription sequences are already defined. It will not work with infinite type of subscriptions.