Skip to navigation

تحويلات العقود والمصالحة

تحويلات العقود والمصالحة: Agent Java SDK التكامل v0.3.0 والأمثلة والمعلمات ودلالات الاستجابة.

View as Markdown

يستهدف هذا الدليل Agent Java SDK v0.3.0، Java 8+، والعقد العام الموسوم. يتم تشغيل الأمثلة في الواجهة الخلفية للشريك بعد تهيئة client في بداية سريعة.

مثال المتطلبات الأساسية

تشترك مقتطفات Java في هذه الواردات. قم بتهيئة client باستخدام البدء السريع واحصل على platformUserId من الرابط المحفوظ. يجب استبدال معرفات المستخدم/الطلب بالقيم الثابتة الخاصة بك.

import com.sixmm.agent.*;
import com.sixmm.agent.model.*;
import java.util.*;

تحويل المبلغ الثابت

استخدم transfer لتحويلات المبالغ الثابتة. Direction.IN يعني النقل من منصة الشريك إلى 6MM. Direction.OUT يعني النقل من 6MM العودة إلى منصة الشريك.

استخدم السلاسل أو BigDecimal للمبالغ. لا تستخدم double أو float.

نقل بواسطة agentUserId

import com.sixmm.agent.model.Direction;
import com.sixmm.agent.model.TransferRequest;
import com.sixmm.agent.model.TransferResponse;
TransferResponse resp = client.transfer(TransferRequest.fixed(
"AGT-ORDER-1001",
"agent-user-001",
Direction.IN,
"USDT",
"10.00"));
System.out.println(resp.orderNo);
System.out.println(resp.orderStatus);
System.out.println(resp.agentUserId);
System.out.println(resp.platformUserId);

نقل بواسطة platformUserId

TransferResponse resp = client.transfer(TransferRequest.fixedByPlatformUserId(
"AGT-ORDER-1002",
"1188041528",
Direction.OUT,
"USDT",
"5.00"));

توفير كلا المعرفات

إذا تم توفير كلا المعرفين، تتحقق الخدمة من أنهما يشيران إلى نفس المعرفين المستخدم المقيد.

TransferRequest req = TransferRequest
.fixed("AGT-ORDER-1003", "agent-user-001", Direction.IN, "USDT", "20.00")
.withPlatformUserId("1188041528");
TransferResponse resp = client.transfer(req);

حقول الطلب:

مجاليكتبمطلوبوصف
agentOrderNostringنعمرقم طلب الشريك الفريد عالميًا
agentUserIdstringبشروطمطلوب عند غياب platformUserId
platformUserIdstringبشروطمطلوب عند غياب agentUserId
directionالتعدادنعمIN أو OUT
currencystringلايتم ملؤها من defaultCurrency عند الغياب
amountstringنعمسلسلة المبلغ العشري

حقول الاستجابة:

مجاليكتبوصف
orderNostringرقم طلب المنصة
orderStatusstringSUCCESS، FAILED، PROCESSING، إلخ.
agentUserIdstringمعرف المستخدم من جانب الشريك
platformUserIdstring6MM معرف المستخدم الخارجي

تأكيد الطلب والعجز

بعد استدعاء transfer، تقوم خدمة الوكيل باستدعاء التداول بشكل متزامن الأساسية على المسار الرئيسي. في معظم الحالات، تحتوي الاستجابة API بالفعل على نتيجة التداول الأساسية المتزامنة.

نتيجةمعنىعمل الشريك
SUCCESSنجح النقلوضع علامة على الطلب المحلي على أنه ناجح
FAILEDتم رفض النقل أو فشلهاحفظ سبب الفشل وأظهره عند الاقتضاء
PROCESSINGمهلة التداول الأساسية أو عدم اليقين في الشبكةلا تقم بإعادة المحاولة باستخدام رقم الطلب الجديد. انتظر webhook أو اتصل بـ queryOrder

متطلبات العجز الجنسي:

  • استخدم agentOrderNo واحدًا لمعاملة تجارية واحدة.
  • إذا انتهت مهلة HTTP أو فشلت الشبكة، فاستفسر عن نفس agentOrderNo أولاً.
  • يمكن إعادة محاولة Webhooks. إلغاء تكرارها عن طريق مفتاح العجز.

نقل الكل للخارج

transferAllOut ينقل رصيد الجانب القابل للسحب 6MM إلى منصة الشريك.

import com.sixmm.agent.model.TransferAllOutRequest;
import com.sixmm.agent.model.TransferAllOutResponse;
TransferAllOutResponse resp = client.transferAllOut(
TransferAllOutRequest.of("AGT-ORDER-2001", "agent-user-001", "USDT"));
System.out.println(resp.orderStatus);
System.out.println(resp.amount);

بقلم platformUserId:

TransferAllOutResponse resp = client.transferAllOut(
TransferAllOutRequest.byPlatformUserId("AGT-ORDER-2002", "1188041528", "USDT"));

amount في الرد هو المبلغ الفعلي المحول.

ترتيب عكسي

يتم استخدام العكس لتعويض أمر النقل الناجح عند الواجهة الخلفية يدعم التدفق العكسي. تتضمن الحالات النموذجية استثناءات الطلب المحلي للشريك أو التراجع عن التسوية اليدوية.

import com.sixmm.agent.model.ReverseOrderRequest;
import com.sixmm.agent.model.ReverseOrderResponse;
ReverseOrderResponse resp = client.reverse(ReverseOrderRequest.of(
"AGT-ORDER-1001",
"REV-ORDER-1001",
"partner order rollback"));
System.out.println(resp.orderStatus);

الحقول:

مجاليكتبمطلوبوصف
origOrderNostringنعمرقم أمر النقل الأصلي
reverseOrderNostringنعمرقم الطلب العكسي الفريد عالميًا
reverseReasonstringنعمسبب عكسي

ملحوظات:

  • العكس ليس عملية إلغاء عادية.
  • يجب أيضًا أن تكون الأوامر العكسية غير فعالة حسب رقم الطلب.
  • بعد إلغاء الأمر الأصلي، قد يقوم webhook بدفع الأمر الأصلي REVERSED الحالة النهائية.

ترتيب الاستعلام

import com.sixmm.agent.model.OrderQueryType;
import com.sixmm.agent.model.QueryOrderRequest;
import com.sixmm.agent.model.QueryOrderResponse;
QueryOrderResponse resp = client.queryOrder(
QueryOrderRequest.of("AGT-ORDER-1001", OrderQueryType.TRANSFER_IN));
System.out.println(resp.status);
System.out.println(resp.failReason);

القيم orderType المدعومة:

  • TRANSFER_IN
  • TRANSFER_OUT

مجالات الاستجابة المشتركة:

مجاليكتبوصف
orderTypestringنوع الطلب
orderNostringرقم طلب الشريك
statusstringحالة الطلب
directionstringIN أو OUT
transferModestringFIXED_AMOUNT أو ALL_OUT
currencystringعملة
amountstringكمية
agentUserIdstringمعرف المستخدم من جانب الشريك
platformUserIdstring6MM معرف المستخدم الخارجي
failReasonstringسبب الفشل
createdAtstringوقت الخلق
completedAtstringوقت الانتهاء

قائمة الطلبات

import com.sixmm.agent.model.ListOrdersRequest;
import com.sixmm.agent.model.ListOrdersResponse;
ListOrdersRequest req = ListOrdersRequest.page(1, 20);
req.orderType = "TRANSFER_IN";
req.status = "SUCCESS";
req.startTime = "2026-06-01T00:00:00Z";
req.endTime = "2026-06-16T00:00:00Z";
ListOrdersResponse resp = client.listOrders(req);
System.out.println(resp.total);
resp.orders.forEach(order -> System.out.println(order.orderNo));

توصيات ترقيم الصفحات:

  • page يبدأ من 1.
  • احتفظ بـ pageSize عند 100 أو أقل.
  • بالنسبة لمهام التسوية، صفحة تلو الأخرى نافذة زمنية وإلغاء التكرار بواسطة orderNo.

المصدر والأدلة ذات الصلة

عمليات الاسترجاعات لحدث الأموال

transfer.completed قد يحمل SUCCESS، FAILED، أو تحديث الطلب الأصلي لـ REVERSED؛ reverse.completed هو حدث طرفي لأمر عكسي. transfer.dead يعني أن الحالة النهائية تظل غير مؤكدة بعد إعادة المحاولة وتحتاج إلى تسوية يدوية، وليس فشلًا مؤكدًا. اسم الحدث وحده لا يثبت أنه تم إضافة الأموال.

يختلف الإقرار الناجح عن حركة الأموال الناجحة: بعد تسجيل إشعار targetStatus=FAILED صالح، قم بإرجاع HTTP 2xx أيضًا. استمرار إلغاء البيانات المكررة في حدث الأموال بواسطة orderType:orderId:targetStatus داخل نطاق التاجر وenvironment.

حقول الأحداث وأمثلة JSON · التحقق من التوقيع والاستجابات وإعادة المحاولة