# MercuryCert API Documentation Analysis

## Обзор API

**MercuryCert HCService** - веб-сервис для обработки платежей через SOAP API.

**URL:** https://hc.mercurycert.net/hcws/hcservice.asmx

**Тип:** SOAP 1.1/1.2 Web Service

## Доступные методы API

### 1. Payment Operations
- **InitializePayment** - инициализация платежа
- **VerifyPayment** - проверка статуса платежа  
- **AcknowledgePayment** - подтверждение платежа

### 2. Card Information Operations
- **InitializeCardInfo** - инициализация информации о карте
- **VerifyCardInfo** - проверка информации о карте
- **AcknowledgeCardInfo** - подтверждение информации о карте

### 3. CSS Operations
- **UploadCSS** - загрузка CSS стилей
- **DownloadCSS** - скачивание CSS стилей
- **RemoveCSS** - удаление CSS стилей

## Структура запросов

### InitializePayment Request
```xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <InitializePayment xmlns="http://www.mercurypay.com/">
      <request>
        <MerchantID>string</MerchantID>
        <Password>string</Password>
        <Invoice>string</Invoice>
        <TotalAmount>double</TotalAmount>
        <TaxAmount>double</TaxAmount>
        <AVSAddress>string</AVSAddress>
        <AVSZip>string</AVSZip>
        <TranType>string</TranType>
        <CardHolderName>string</CardHolderName>
        <Frequency>string</Frequency>
        <CustomerCode>string</CustomerCode>
        <Memo>string</Memo>
        <ProcessCompleteUrl>string</ProcessCompleteUrl>
        <ReturnUrl>string</ReturnUrl>
        <DisplayStyle>string</DisplayStyle>
        <BackgroundColor>string</BackgroundColor>
        <FontColor>string</FontColor>
        <FontFamily>string</FontFamily>
        <FontSize>string</FontSize>
        <LogoUrl>string</LogoUrl>
        <PageTitle>string</PageTitle>
        <SecurityLogo>string</SecurityLogo>
        <OrderTotal>string</OrderTotal>
        <SubmitButtonText>string</SubmitButtonText>
        <CancelButtonText>string</CancelButtonText>
        <VoiceAuthCode>string</VoiceAuthCode>
        <Keypad>string</Keypad>
        <DefaultSwipe>string</DefaultSwipe>
        <AVSFields>string</AVSFields>
        <PartialAuth>string</PartialAuth>
        <OperatorID>string</OperatorID>
        <TerminalName>string</TerminalName>
        <ButtonTextColor>string</ButtonTextColor>
        <ButtonBackgroundColor>string</ButtonBackgroundColor>
        <JCB>string</JCB>
        <Diners>string</Diners>
        <CUP>string</CUP>
        <CardEntryMethod>string</CardEntryMethod>
        <SubmitButtonDefaultImageUrl>string</SubmitButtonDefaultImageUrl>
        <SubmitButtonHoverImageUrl>string</SubmitButtonHoverImageUrl>
        <CancelButtonDefaultImageUrl>string</CancelButtonDefaultImageUrl>
        <CancelButtonHoverImageUrl>string</CancelButtonHoverImageUrl>
        <PageTimeoutDuration>string</PageTimeoutDuration>
        <PageTimeoutIndicator>string</PageTimeoutIndicator>
        <CancelButton>string</CancelButton>
        <TotalAmountBackgroundColor>string</TotalAmountBackgroundColor>
        <CVV>string</CVV>
        <ForceManualTablet>string</ForceManualTablet>
        <LaneID>string</LaneID>
        <CanadianZip>string</CanadianZip>
        <AlternateMCC>string</AlternateMCC>
        <TokenType>string</TokenType>
        <RecurringDataRequest>string</RecurringDataRequest>
      </request>
    </InitializePayment>
  </soap:Body>
</soap:Envelope>
```

### InitializePayment Response
```xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <InitializePaymentResponse xmlns="http://www.mercurypay.com/">
      <InitializePaymentResult>
        <ResponseCode>int</ResponseCode>
        <PaymentID>string</PaymentID>
        <Message>string</Message>
      </InitializePaymentResult>
    </InitializePaymentResponse>
  </soap:Body>
</soap:Envelope>
```

### VerifyPayment Request
```xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VerifyPayment xmlns="http://www.mercurypay.com/">
      <request>
        <MerchantID>string</MerchantID>
        <Password>string</Password>
        <PaymentID>string</PaymentID>
      </request>
    </VerifyPayment>
  </soap:Body>
</soap:Envelope>
```

### VerifyPayment Response
```xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VerifyPaymentResponse xmlns="http://www.mercurypay.com/">
      <VerifyPaymentResult>
        <ResponseCode>int</ResponseCode>
        <Status>string</Status>
        <StatusMessage>string</StatusMessage>
        <DisplayMessage>string</DisplayMessage>
        <AvsResult>string</AvsResult>
        <CvvResult>string</CvvResult>
        <AuthCode>string</AuthCode>
        <Token>string</Token>
        <RefNo>string</RefNo>
        <Invoice>string</Invoice>
        <AcqRefData>string</AcqRefData>
        <CardType>string</CardType>
        <MaskedAccount>string</MaskedAccount>
        <Amount>double</Amount>
        <TaxAmount>double</TaxAmount>
        <TransPostTime>dateTime</TransPostTime>
        <CardholderName>string</CardholderName>
        <AVSAddress>string</AVSAddress>
        <AVSZip>string</AVSZip>
        <TranType>string</TranType>
        <PaymentIDExpired>boolean</PaymentIDExpired>
        <CustomerCode>string</CustomerCode>
        <Memo>string</Memo>
        <AuthAmount>double</AuthAmount>
        <VoiceAuthCode>string</VoiceAuthCode>
        <ProcessData>string</ProcessData>
        <OperatorID>string</OperatorID>
        <TerminalName>string</TerminalName>
        <ExpDate>string</ExpDate>
        <RecurringDataRequest>string</RecurringDataRequest>
        <RecurringDataResponse>string</RecurringDataResponse>
      </VerifyPaymentResult>
    </VerifyPaymentResponse>
  </soap:Body>
</soap:Envelope>
```

## Наши credentials

**MerchantID:** 4445045820008  
**Password:** 7.wEHqmXsxq~QEcn

## Тихие методы для проверки

**Безопасные методы (не изменяют данные):**
1. **VerifyPayment** - проверка статуса платежа (требует PaymentID)
2. **VerifyCardInfo** - проверка информации о карте (требует CardID)

**Методы, которые изменяют данные:**
1. **InitializePayment** - создает новый платеж
2. **AcknowledgePayment** - подтверждает платеж
3. **InitializeCardInfo** - создает информацию о карте
4. **AcknowledgeCardInfo** - подтверждает информацию о карте

## Рекомендации по использованию

**Для тихой проверки:**
- Использовать только Verify методы
- Не использовать Initialize или Acknowledge методы
- Проверить только статус существующих платежей

**Для активного использования:**
- Требуется согласование перед любыми операциями
- Начинать с тестовых транзакций минимальной суммы
- Логировать все операции для аудита

## Безопасность

- API использует SOAP с HTTPS
- Аутентификация через MerchantID + Password
- Нет OAuth2 или других методов аутентификации
- Пароль передается в открытом виде в SOAP запросе

## Следующие шаги

1. **Тихая проверка:** Использовать VerifyPayment для проверки статуса существующих платежей
2. **Анализ:** Изучить структуру ответов API
3. **Планирование:** Определить безопасные операции для тестирования
4. **Согласование:** Получить разрешение перед любыми активными операциями
