Off Ramp Hiding Receiving Address Page

Introduction:

Through this integration method, it is possible to hide the deposit address page, but it requires a successful ACH deposit notification. Please refer to the following diagram for the process:

Supported Token List

Note: Only support the following cryptocurrencies for this feature.

CryptoNetwork
USDCBSC
USDTBSC
ETHETH
USDCETH
USDTETH
MATICMATIC
USDCMATIC
USDTMATIC
USDCTRX
USDTTRX

API Description

Merchant Create Order - Request Parameters

ParameterDescriptionRequired
appIdMerchant application ID, eg:ahzxh0klegv1fzolY
cryptoCryptocurrency name, eg:USDTY
networkNetwork, eg:ETHY
cryptoAmountSold cryptocurrency amountY
fiatFiat currency code, eg:USDY
countryCountry code, eg:USY
callbackUrlCallback URL for synchronizing order information with the merchantY
withdrawUrlURL to redirect back to the merchantY
sourceSource. Default: 3. Uploading this field will hide the deposit address pageY
typeType, eg:sellY
merchantOrderNoMerchant's custom order number, eg:1112957819622420480Y
showAddressWhether to display the address QR code. Optional: Y/NY
merchantNameMerchant nameY
urlTypeCan only be "app" or "web",representing the type of withdrawUrl the user will be redirected toY

📘

Note:

If the source parameter is passed, the URL should be appended with #/sell-formUserInfo.

This will directly navigate to the bank information filling page without a back button and menu bar.

If not passed, it will directly enter the sell coin homepage.

Bank Information Filling Page:

Request Example:

https://ramp.alchemypay.org?appId=ahzxh0klegv1fzol&crypto=ELF&network=ELF&fiat=USD&country=US&cryptoAmount=100&callbackUrl=https://localhost:9090/test/test&withdrawUrl=www.baidu.com&type=sell&source=3&urlType=web&merchantName=AELF&merchantOrderNo=2134545343544334&showAddress=N#/sell-formUserInfo

ACH Send Order Status Webhook

ACH will send order webhook to callbackUrl after an order generate. Webhook will send when order status updated.

Path: callbackUrl

Body Parameters:

ParameterDescriptionRequired
orderNoOrder numberY
merchantOrderNoMerchant order numberN
cryptoCryptocurrencyY
networkNetworkY
cryptoPriceCryptocurrency priceN
cryptoAmountCryptocurrency quantityY
fiatAmountFiat currency quantityN
appIdMerchant appIdY
fiatFiat currency codeY
txHashTransaction hashN
emailUser emailN
statusOrder status:
1: Order created successfully
2: User coin deposit completed
3: Start payment
4: Payment successful
5: Payment failed
6: Refund successful
7: Order timeout
Y
addressCoin deposit addressY
cryptoActualAmountActual coin deposit quantityN
rampFeeService feeN
receiptTimePayment completedN
paymentTypePayment methodY
nameUser nameY
cardCard numberN
accountAccountN
orderAddressOrder details page URLY
signatureSignature, refer to "Notification Signature Method" belowY

Merchant Notification to ACH

Merchant send notification to ACH after user complete crypto deposit process.

Request Method: POST

Content Type: application/json

Request Path: https://api.alchemypay.org/webhooks/off/merchant

Request Parameters

Body Parameters:

ParameterDescriptionRequired
orderNoOrder numberY
cryptoCryptocurrencyY
cryptoAmountCryptocurrency quantityY
networkNetworkY
txHashTransfer hashY
addressACH notification, the "address" in the parameters.Y
appIdMerchant appIdY
signatureSignature, refer to "Notification Signature Method" belowY

Request Parameter Example:

{
    "orderNo": "string",
    "crypto": "string",
    "cryptoAmount": "string",
    "txHash": "string",
    "network": "string",
    "address": "string",
    "appId": "string",
    "sourceAddress": "string",
    "signature": "string"
}

Response Parameters

Body Parameters:

ParameterDescriptionRequired
successbooleanY
returnCodestring
returnMsgstringY
extendstring
dataobjectY

Response Example:

{
    "success": true,
    "returnCode": "string",
    "returnMsg": "string",
    "extend": "string",
    "data": {}
}

Notification Signature Method

Concatenated parameters: appId+appSecret+orderNo+crypto+network+address

Note
public class MerSignCheckUtil {

    private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',
        '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

 

    private static String encode(String algorithm, String value) {
        if (value == null) {
            return null;
        }
        try {
            MessageDigest messageDigest= MessageDigest.getInstance(algorithm);
            messageDigest.update(value.getBytes());
            return getFormattedText(messageDigest.digest());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    private static String getFormattedText(byte[] bytes) {
        int len = bytes.length;
        StringBuilder buf = new StringBuilder(len * 2);
        for (int j = 0; j < len; j++) {
            buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
            buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
        }
        return buf.toString();
    }

    public static void main(String[] args) {
          String appId = "";
          String appSecret = "";
          String crypto = "";
          String orderNo = "";
          String network = "";
          String address = "";
          String rawString = appId + appSecret + orderNo + crypto + network + address;
          String sign = encode("sha1", rawString);
    }

}

Note

Merchants can whitelist their Egress IP (for sending notifications to ACH) in the merchant dashboard, as shown in the screenshot below.