Off Ramp Hiding Receiving Address Page

Introduction:

This function allows merchant send crypto to ACH for selling and user enter bank information for fund received on ACH page.

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

ParameterRequiredDescription
appIdYMerchant application ID, eg:ahzxh0klegv1fzol
cryptoYCryptocurrency name, eg:USDT
networkYNetwork, eg:ETH
cryptoAmountYSold cryptocurrency amount
fiatYFiat currency code, eg:USD
countryYCountry code, eg:US
callbackUrlYCallback URL for synchronizing order information with the merchant
withdrawUrlYURL to redirect back to the merchant after user click "Confirm"
sourceYSource. Default: 3. Uploading this field will hide the deposit address page
typeYType, eg:sell
merchantOrderNoYMerchant's custom order number, eg:1112957819622420480
showAddressYWhether to display the address QR code. Optional: Y/N
merchantNameYMerchant name
urlTypeYCan only be "app" or "web",representing the type of withdrawUrl the user will be redirected to

📘

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:

ParameterRequiredDescription
orderNoYOrder number
merchantOrderNoNMerchant order number
cryptoYCryptocurrency
networkYNetwork
cryptoPriceNCryptocurrency price
cryptoAmountYCryptocurrency quantity
fiatAmountNFiat currency quantity
appIdYMerchant appId
fiatYFiat currency code
txHashNTransaction hash
emailNUser email
statusYOrder 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
addressYCoin deposit address
cryptoActualAmountNActual coin deposit quantity
rampFeeNService fee
receiptTimeNPayment completed
paymentTypeYPayment method
nameYUser name
cardNCard number
accountNAccount
orderAddressYOrder details page URL
signatureYSignature, refer to "Notification Signature Method" below

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:

ParameterRequiredDescription
orderNoYOrder number
cryptoYCryptocurrency
cryptoAmountYCryptocurrency quantity
networkYNetwork
txHashYTransfer hash
addressYACH notification, the "address" in the parameters.
appIdYMerchant appId
signatureYSignature, refer to "Notification Signature Method" below

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:

ParameterRequiredDescription
successYboolean
returnCodestring
returnMsgYstring
extendstring
dataYobject

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.