HyoNovaDocumentation

Payment providers

Configure FastSpring, PayPal, Triple-A and bank transfer instances in Control Center — fields, credentials, webhooks, test and live instances, and price mappings. Stripe stays disabled.

Requires setupBuilt, but works only after a supporting service is configured for your workspace.GuideFor: HyoNova operators, IT & securityLast updated: Introduced:
On this page

Payments & billing › Payment providers lists every provider instance. An instance is one configured account of a provider in one environment (test or live) — for example a FastSpring test store and a FastSpring live store are two instances. The form of each instance is generated from the provider's own definition, with English and Arabic labels and help for every field. Configuring needs providers.manage, a step-up and a reason.

What needs merchant credentials#

ProviderYou need from the merchant accountStatus
FastSpringA store (test and/or live), API credentials, a webhook and its HMAC secret, a checkout path, one product per HyoNova priceSupported · Ready to configure
PayPalA PayPal Business account, a REST app (client ID and secret) and a webhook on that appSupported · Ready to configure
Triple-AA merchant account: OAuth client ID and secret, and the merchant keySupported · Ready to configure
Bank transferThe receiving bank account detailsSupported · Ready to configure
StripeNothing — keep it disabledDisabled

The issuer profile, billing settings, routing, price mappings and discounts need no external credentials.

Configure an instance#

  1. Open the instance. Choose the provider's card. HyoNova seeds one instance per provider, disabled.
  2. Choose the environment. test for the provider's sandbox, live for real money.
  3. Fill in the settings. Non-secret values such as a checkout path, a merchant key or bank names.
  4. Enter the credentials. Secret fields are written to the secret store. They are never shown again; the form shows only whether each is configured. Leave a secret empty to keep the stored value.
  5. Set role and priority. primary for the instance a route uses, secondary for a fallback, available for configured but unused.
  6. Enable and save with a reason. Enabling a primary instance demotes any other enabled primary of the same provider and environment to secondary.
  7. Test the connection. See Provider health. Every save clears the previous test result.

To run test and live side by side, add an instance (provider, a new instance key, environment, reason). It starts disabled.

FastSpring (card)#

FieldRequiredValue
Checkout pathYesFrom FastSpring › Checkouts
Store nameNoDisplay only
API usernameYes (secret)FastSpring › Developer Tools › APIs › API Credentials
API passwordYes (secret)Shown once by FastSpring
Webhook HMAC secretYes (secret)FastSpring › Developer Tools › Webhooks › your webhook

In FastSpring, create a webhook with the URL shown on the instance card (the product API host followed by /api/v1/webhooks/payments/fastspring), set its HMAC SHA256 Secret, turn on webhook expansion so events carry full subscription, order and account objects, and select the events listed on the card: order.completed, order.failed, subscription.activated, subscription.charge.completed, subscription.charge.failed, subscription.payment.overdue, subscription.updated, subscription.canceled, subscription.uncanceled, subscription.deactivated, subscription.paused, subscription.resumed, return.created, payoutEntry.created.

Give each instance its own webhook secret. Webhooks are checked against every instance of the provider; with a shared secret a live event could be matched to the test instance and then ignored as an environment mismatch.

PayPal (PayPal balance, bank or card inside PayPal)#

FieldRequiredValue
Webhook IDYesdeveloper.paypal.com › Apps & Credentials › your app › Webhooks
Brand name on PayPalNoShown to the buyer on the PayPal approval page
Client IDYes (secret)developer.paypal.com › Apps & Credentials › your REST app (Sandbox or Live tab matching the environment)
Client secretYes (secret)The secret of the same REST app
  1. Create a REST app. In developer.paypal.com › Apps & Credentials, pick the Live tab for live (or Sandbox for test) and create an app of type Merchant. Copy its client ID and secret.
  2. Add the webhook to that app. URL: the product API host followed by /api/v1/webhooks/payments/paypal (shown on the instance card). Events: BILLING.SUBSCRIPTION.ACTIVATED, BILLING.SUBSCRIPTION.UPDATED, BILLING.SUBSCRIPTION.RE-ACTIVATED, BILLING.SUBSCRIPTION.CANCELLED, BILLING.SUBSCRIPTION.SUSPENDED, BILLING.SUBSCRIPTION.EXPIRED, BILLING.SUBSCRIPTION.PAYMENT.FAILED, PAYMENT.SALE.COMPLETED, PAYMENT.SALE.REFUNDED, PAYMENT.SALE.REVERSED. Copy the webhook ID.
  3. Configure the instance with the environment, the three values and a reason, then Test connection. The test asks PayPal for an access token; without a webhook ID the instance reports configuration incomplete.
  4. Create plans at the provider. The PayPal card offers Create plans at the provider once nothing is missing. HyoNova creates one PayPal product per HyoNova plan and one PayPal billing plan per active price that has no mapping yet, then saves the mappings. Seat prices are created with quantity support. Existing mappings are never changed; run it again after adding prices.
  5. Enable the paypal route in Payment routing.

A buyer approves the subscription on PayPal; HyoNova activates it from BILLING.SUBSCRIPTION.ACTIVATED and records each charge from PAYMENT.SALE.COMPLETED. Every webhook is verified with PayPal's signing certificate (fetched only from PayPal's API hosts) against the configured webhook ID; anything else is refused with 401. PayPal does not prorate: a plan change on a PayPal subscription is scheduled for the end of the paid period. A cancelled PayPal subscription keeps access to the end of that period, and HyoNova closes it a day later because PayPal sends no final event.

Triple-A (crypto)#

FieldRequiredValue
Merchant keyYesTriple-A dashboard › API keys
Order currenciesYesFiat currencies HyoNova invoices in, for example USD,EUR
Settlement currencyNoInformational
Client IDYes (secret)OAuth client ID
Client secretYes (secret)OAuth client secret
Notification signing secretYes (secret)A random secret of 16 to 64 characters that you generate

No webhook is set up in the Triple-A dashboard: HyoNova sends the notification URL and the signing secret with every payment request. The test environment uses Triple-A's sandbox.

Bank transfer (built into HyoNova)#

FieldRequiredValue
Beneficiary nameYesAccount holder exactly as the bank has it
Bank nameYesReceiving bank
SWIFT / BICNoFor international transfers
Accepted currenciesYesCurrencies the account receives
Payment instructionsYesPrinted on invoices; ask payers to quote the payment reference
Intermediary bankNoCorrespondent bank details
IBAN / Account numberOne of the two (secret)Kept in the secret store; shown only to the paying company and to operators

There is no API and no webhook: payments are confirmed by an operator (see Refunds and bank confirmations).

Stripe (disabled)#

Stripe is a complete integration kept Disabled, role available, with no route. Leave it so unless HyoNova decides to use it. If it is ever configured, its secret key must match the instance environment (test keys for test, live keys for live).

Price and discount mappings#

Card prices are sold through the provider's own catalogue. For every HyoNova price sold by card, add a mapping per environment on the price (provider, environment, the provider's product reference — a FastSpring product path or a PayPal billing plan ID). For PayPal the mappings are normally created by Create plans at the provider. A card checkout for an unmapped price is refused, and upgrades need the target price mapped too. Discount codes used with card need the provider's coupon code mapped the same way. Mappings need plans.manage.

Status#

FeatureStatusNotes
Payment providers and routingRequires setupBuilt, but works only after a supporting service is configured for your workspace.Configure payment provider instances, test their connections and route each payment method to one of them.
↑↓ to navigate · Enter to open · Esc to close