UBC integration of TouchNet uPay with Commerce 2
- Install this module as per your usual method.
- Add a new payment gateway at
/admin/commerce/config/payment-gateways
, we've usedupay
for the machine name of the gateway. - We recommended to store many of the variables in an override in settings.php and don't store the keys and secrets in the database.
- Further in
.env
file outside the websites document root only if you can.Overrides inUPAY_PROXY_API_URI='https://api.ubc.ca/upay/v1' UPAY_PROXY_MERCHANT_ID='MRCH' UPAY_PROXY_MERCHANT_STORE_ID='01' UPAY_PROXY_MERCHANT_PROXY_KEY='YOUR PROXY KEY' UPAY_PROXY_MERCHANT_UPDATE_SECRET='YOUR UPDATE SECRET'
settings.php
/** * TouchNet uPay Proxy Payment Gateway override. */ $config['commerce_payment.commerce_payment_gateway.upay']['configuration']['base_uri'] = getenv('UPAY_PROXY_API_URI'); $config['commerce_payment.commerce_payment_gateway.upay']['configuration']['merchant_id'] = getenv('UPAY_PROXY_MERCHANT_ID'); $config['commerce_payment.commerce_payment_gateway.upay']['configuration']['merchant_store_id'] = getenv('UPAY_PROXY_MERCHANT_STORE_ID'); $config['commerce_payment.commerce_payment_gateway.upay']['configuration']['merchant_proxy_key'] = getenv('UPAY_PROXY_MERCHANT_PROXY_KEY'); $config['commerce_payment.commerce_payment_gateway.upay']['configuration']['merchant_update_secret'] = getenv('UPAY_PROXY_MERCHANT_UPDATE_SECRET');
- Further in
You'll be asked for the endpoints and commerce will generate paths based on the machine name of the payment gateway.
We named all of our Payment Gateway machine name as upay
and the generated paths look like this:
- Endpoint Path:
/payment/notify/upay
- Success Link Path:
/payment/success/upay
- Error Link Path:
/payment/error/upay
- Cancel Link Path:
/payment/cancel/upay
Append the above paths on to your Staging or Production environment base URI:
Staging Endpoint URL: https://stg-example.ubc.ca/payment/notify/upay
- We have yet to implement (due to demand) a way to change any of the WorkDay overrides for a specific product, order, or store.
- There is a
refunded
workflow state andrefund
transition added to all workflows. There is no logic tied to that additional transition. - We haven't added any other order statuses as was available in Drupal 7, like
pending
, we will keep it indraft
to keep it simple for now. - The
remote_id
is mapped to the value of theuPayTrackingId
, currently not storing thepaymentGatewayReferenceNumber
- We are not using
modes
likelive
ortest
because it's easier and less confusing to set that with the environment variables insettings.php
. - The Success, Error, and Cancel URLs are presentational only, you can replace the messaging or give a custom page if you prefer.
If you need any of the above please feel free to request it.