Перейти к навигации

Интеграция секундной торговли

Интеграция секундной торговли: Интеграция с Agent Java SDK v0.3.0, примеры, параметры и семантика ответа.

Просмотр в формате Markdown

Это руководство предназначено для Agent Java SDK v0.3.0 и Java 8+.

Подготовьте удостоверение личности, аутентификацию и средства

Секундная торговля использует ту же привязку пользователя и аутентификацию входа, что и бессрочная торговля. Он использует остатки финансирования; бессрочная маржа использует остатки контрактов. Настройте внешний продукт/режим и среду внутренних фондов отдельно.

Инициализируйте client с помощью Быстрый старт. Сохраните связанное сопоставление пользователей и получите идентификатор пользователя-партнера из аутентифицированного серверного сеанса.

Перенаправить запись

import com.sixmm.agent.model.CreateEntryUrlRequest;
import com.sixmm.agent.model.CreateEntryUrlResponse;
CreateEntryUrlResponse entry = client.createEntryUrl(
CreateEntryUrlRequest.of("merchant-user-001")
.withRedirectPath("/zh-CN/up-down?tradingMode=demo")
.withReturnUrl("https://merchant.example/markets"));
String webUrl = entry.webUrl;

SDK вызывает POST /v1/agent/create-entry-url. Верните webUrl в партнерский интерфейс и немедленно откройте его. expireAt использует секунды Unix. Билет кратковременный и одноразовый; получить другой после истечения срока годности или потребления.

ПродуктПример пути к интерфейсуКошелек
Вверх/Вниз/zh-CN/up-down?tradingMode=real или demoФинансирование
Высокий/Низкий/zh-CN/high-low?tradingMode=real или demoФинансирование
Сетка/zh-CN/grid-prediction?tradingMode=real или demoФинансирование
Бессрочные фьючерсы/zh-CN/futures/BTCUSDT?tradingMode=real или demoДоговор

Используйте фактические маршруты внешнего интерфейса, предоставленные 6MM. redirectPath — относительный путь к платформе, начинающийся с /; returnUrl является абсолютным партнером HTTP/HTTPS URL. Входной билет аутентифицирует пользователя и не выполняет передачу.

Встроенная запись

Используйте существующие потоки partner-token и tokenProvider. Токена, специфичного для прогнозирования, не существует. Создайте виджет с нужными page и tradingMode и используйте его текущий channelId при вызове серверной части партнера.

import com.sixmm.agent.model.CreateEmbedTokenRequest;
import com.sixmm.agent.model.CreateEmbedTokenResponse;
String channelId = "tw_example_channel";
CreateEmbedTokenResponse auth = client.createEmbedToken(
CreateEmbedTokenRequest.of("merchant-user-001", channelId));
String embedToken = auth.embedToken;
long expireAt = auth.expireAt;

SDK вызывает POST /v1/agent/create-embed-token. symbol не является обязательным; он не выбирает продукт, торгующий секундами. Выбор продукта относится к интерфейсу. Токен не выбирает среду средств и не меняет балансы.

Полный пример интерфейса

Эти параметры были проверены в общедоступной среде выполнения Trading Widget 1.8.0 10 октября 2026 г. Версии виджета и Agent Java SDK независимы.

<div id="seconds-widget" style="width: 100%; height: 720px"></div>
<script src="https://app.6mm.com/sdk/trading-widget/v1/index.js"></script>
<script>
const page = 'up-down';
const tradingMode = 'demo';
const capabilities = TradingWidget.capabilities;
if (!capabilities?.partnerToken ||
!capabilities.pages?.includes(page) ||
!capabilities.tradingModes?.includes(tradingMode)) {
throw new Error('Trading Widget SDK does not support the requested page or mode');
}
const widget = TradingWidget.create('#seconds-widget', {
baseUrl: 'https://app.6mm.com',
page,
tradingMode,
theme: 'dark',
locale: 'zh-CN',
auth: {
mode: 'partner-token',
tokenProvider: async ({ channelId }) => {
// Partner-owned endpoint; derive the user from the backend session.
const response = await fetch('/api/seconds/embed-token', {
method: 'POST',
credentials: 'same-origin',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ channelId }),
});
if (!response.ok) {
throw new Error('Failed to request embed token');
}
const result = await response.json();
if (typeof result.embedToken !== 'string' || !result.embedToken.trim() ||
!Number.isFinite(result.expireAt) || result.channelId !== channelId) {
throw new Error('Invalid embed token response');
}
return {
embedToken: result.embedToken,
expireAt: result.expireAt,
channelId: result.channelId,
};
},
},
onReady() {
console.log('Trading widget ready');
},
onError(error) {
console.error('Trading widget error', error.code);
},
});
window.addEventListener('beforeunload', () => widget.destroy());
</script>
ВариантЦенностиЗначение
pageup-down, high-low, grid-predictionСтраница продукта.
tradingModereal, demoПо умолчанию real; задать явно.
baseUrlhttps://app.6mm.comПроисхождение интерфейса платформы; Виджет создает встраивание URL.

Ответ серверной части партнера

/api/seconds/embed-token — это конечная точка, принадлежащая партнеру, а не новая 6MM API. Аутентифицируйте сеанс, извлеките agentUserId на стороне сервера и вызовите createEmbedToken. Верните эту структуру верхнего уровня:

{
"embedToken": "short-one-time-token",
"expireAt": 1791590700,
"channelId": "tw_xxx"
}

Используйте фактическое значение expireAt, а не иллюстративное значение. Ответ агента не содержит channelId; ваш бэкэнд повторяет значение текущего запроса. Если в результате обертывания API получается data, разверните этот слой перед возвратом из tokenProvider. Отклонять бизнес-сбои вместо возврата недопустимого объекта успеха.

Каждая инициализация или обновление получает новый токен. Никогда больше не кэшируйте и не обменивайте один и тот же токен и не помещайте его в URL. Повторно используйте один и тот же канал экземпляра во время продления; используйте новый канал после воссоздания экземпляра.

Соответствуйте среде фондов

Интерфейс demo требует имитации запросов средств с помощью environment=SIMULATED. Интерфейс real требует производственных средств. Ни tradingMode ни создание токена не меняют цель внутренних средств.

При переключении пользователей или режима торговли уничтожьте старый виджет и создайте новый экземпляр. Запрашивайте балансы финансирования, переводите средства и подтверждайте окончательный результат через конечную точку статуса финансирования, прежде чем рассматривать пользователя как финансируемого.

Видеть Финансирование кошелька и Руководство по окружающей среде.

Источник и связанные руководства