Skip to content

genome-eu/java-merchant-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Genome Merchant Client Library

Java CI Maven Central Version

Zero-dependency toolkit to operate with Genome Merchant API.

How to

1. Configure MerchantAccountManager

Obtain credentials from Genome Portal and configure MerchantAccountManager:

import eu.genome.Environment;
import eu.genome.merchant.MerchantAccountManager;

String login = "...";
String password = "...";

MerchantAccountManager merchantAccountManager = new MerchantAccountManager(
        login,
        password,
        Environment.production()
);

2. Configure HostedPaymentPageManager

Obtain API key and secret for Hosted Payment Page on Genome Portal (they are not the same as Merchant credentials):

import eu.genome.merchant.HostedPaymentPageManager;
import eu.genome.merchant.SignatureMode;

String hppApiKey = "...";
String hppApiSecret = "...";
SignatureMode signatureMode = SignatureMode.MODE_A; 

HostedPaymentPageManager hostedPaymentPageManager = merchantAccountManager.getHostedPaymentPageManager(
    hppApiKey,
    hppApiSecret,
    signatureMode
);

3. Use configured HostedPaymentPageManager to generate redirect URL

import eu.genome.merchant.HostedPaymentRequest;
import eu.genome.merchant.HostedPaymentRequestBuilder;

HostedPaymentRequestBuilder request = HostedPaymentRequest.builder(
        "orderId",
        "userId",
        "mcc",
        "EUR",
        new BigDecimal("9.99")
);

String url = hostedPaymentPageManager.generateRedirectUrl(request);

4. And to verify signature of received callback

Map<String, String> callbackHeaders = null; // TODO provide
byte[] callbackBody = null;                 // TODO provide

try {
    hostedPaymentPageManager.assertCallbackSignature(headers, body);
} catch (CallbackSignatureAssertionException e) {
    // TODO handle
}

Advanced usage

All settings are stored in Environment object - you may implement own with own rules, providing custom urls, skipping validation rules or using custom logger.

Using logger

This library has no strict binding for logging facility but introduces own Logger instead:

import eu.genome.Environment;
import eu.genome.Logger;

Logger logger = Logger.stdOut();
Environment environment = Environment.production().withLogger(logger);
// TODO use environment during MerchantAccountManager instantiation

SLF4j

This library has reference SLF4j implementation that can be used if your backend uses this logging facility:

import eu.genome.Environment;
import eu.genome.Logger;
import eu.genome.slf4j.Slf4jLoggerAdapter;

Logger logger = new Slf4jLoggerAdapter("genome");
Environment environment = Environment.production().withLogger(logger);
// TODO use environment during MerchantAccountManager instantiation

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages