godaddy-wordpress / godaddy-wordpress/wc-plugin-framework

Multi-Currency Support for payment gateways

Open
#71 6 comments 0 reactions 0 assignees View on GitHub
Feature Payment Gateway
Dominant language
PHP
Stars
146
Forks
43
Avg merge
21m
Merged PRs (30d)
3

Description

Multi-currency support is becoming a fairly popular request for our gateways. Let's investigate how we can implement a nice abstracted approach to multi-currency.
## Gateways that support multi-currency
- **Authorize.net (AIM/CIM)** - requires a separate merchant account (API login ID/transaction key) per currency. API endpoint does not change. See [WooIdea](http://ideas.woothemes.com/forums/133476-woocommerce/suggestions/5168165-authorize-net-support-for-multiple-currencies)
- **Beanstream** - requires a separate merchant account (ID) per currency. API endpoint does not change.
- **Braintree** - requires a separate merchant account (ID) per currency. API endpoint does not change.
- **CyberSource** - no special configuration required, include currency in transaction request.
- **Elavon Converge** - no special configuration required, include currency in transaction request.
- **First Data/Payeezy** - no special configuration required, include currency in transaction request.
- **Moneris** - requires a separate merchant account (store ID/API token) per currency. API endpoint does not change.
- **PayPal Express** - no special configuration required, include currency in transaction request. [Details here](https://developer.paypal.com/docs/classic/api/currency_codes/)
- **Realex** - no special configuration required, include currency in transaction request.
- **USA ePay** - requires a separate merchant account (source key) per currency. API endpoint does not change.
## Summary

5 gateways that require separate credentials per currency. None that change API endpoints. Some of those accept a lot of currencies (Braintree [supports over 100+](https://developers.braintreepayments.com/ios+ruby/reference/general/currencies)), so I think our implementation would have to assume the currently entered credentials are for the store's base currency, and allow the admin to dynamically add additional credential fields for a selected currency. These should also be keyed to the environment field.

The framework doesn't have any concept of a credential field so this would have to be abstracted into perhaps a method that returns an array of those credential fields given a specific currency (either defined or from an order) so implementing gateways can parse them into whatever credentials it needs.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.