Sigillum Finansdevelopers
Sigillum.cloud ↗EN
SDK entegrasyonları

Java · Ödeme risk incelemesi

Java JDK HTTP servisinde işlem bağlamı, adımlar ve risk değerlendirmesi.

↓
Örnek projeyi indirSentetik senaryo · kaynak kod ve kurulum adımları
ZIP ↗

#1. Maven bağımlılığını kurun

Portal teslimindeki yerel Maven deposunu kurumun çözümleme sürecine ekleyin. Çekirdek SDK Java 8+ destekler. Demo Java 11 ile derlenir; Servlet veya Spring gerektirmez.

<dependency>
  <groupId>io.sigillum</groupId>
  <artifactId>finans-sdk</artifactId>
  <version>0.11.0</version>
</dependency>
PaymentDemo.java
package example;
import io.sigillum.finans.*;
import com.sun.net.httpserver.HttpServer;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.InetSocketAddress;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
import java.util.Map;

public final class PaymentDemo {
    public static void main(String[] args) throws Exception {
        String path = System.getenv("SIGILLUM_CONFIG");
        if (path == null) throw new IllegalArgumentException("SIGILLUM_CONFIG must be set");
        Sigillum sdk = Sigillum.start(Paths.get(path).toAbsolutePath());
        ObjectMapper json = new ObjectMapper();
        HttpServer server = HttpServer.create(new InetSocketAddress("127.0.0.1", 5109), 0);
        server.createContext("/payments/assess", sdk.httpHandler(exchange -> {
            if (!"POST".equals(exchange.getRequestMethod())) {
                exchange.sendResponseHeaders(405, -1); exchange.close(); return;
            }
            byte[] raw = exchange.getRequestBody().readNBytes(8193);
            if (raw.length > 8192) { exchange.sendResponseHeaders(413, -1); exchange.close(); return; }
            var input = json.readTree(raw);
            try (ObservationScope step = sdk.child("payment-rule");
                 Sigillum.Binding current = step.activate()) {
                double amount = input.path("amount").asDouble(-1);
                if (amount <= 0) { exchange.sendResponseHeaders(400, -1); exchange.close(); return; }
                // Sentetik eşik kuralı: gerçek risk modeli veya finans tavsiyesi değildir.
                Map<String,Object> result = new LinkedHashMap<>();
                result.put("requestRef", input.path("requestRef").asText("DEMO-PAYMENT"));
                result.put("amount", amount);
                result.put("reviewRequired", amount > 10000);
                result.put("demonstration", true);
                sdk.ai("policy", "{\"name\":\"demo-amount-threshold\",\"threshold\":10000}".getBytes(StandardCharsets.UTF_8));
                sdk.ai("explanation", "{\"method\":\"deterministic-demo\",\"rule\":\"amount > 10000\"}".getBytes(StandardCharsets.UTF_8));
                byte[] response = json.writeValueAsBytes(result);
                sdk.capture("custom", "payment.result", response);
                sdk.capture(sdk.current(), "source", "comparison.source", "demo.payment/1",
                    "{\"type\":\"demo-result\"}".getBytes(StandardCharsets.UTF_8),
                    new CaptureContent("result", "application/json", "comparison.originalContent", response));
                exchange.getResponseHeaders().set("Content-Type", "application/json");
                exchange.sendResponseHeaders(200, response.length);
                exchange.getResponseBody().write(response);
            } finally { exchange.close(); }
        }));
        server.createContext("/sdk-status", exchange -> {
            byte[] response = sdk.diagnostics().toString().getBytes(StandardCharsets.UTF_8);
            exchange.sendResponseHeaders(200, response.length);
            exchange.getResponseBody().write(response); exchange.close();
        });
        server.start();
        System.out.println("Demo: http://127.0.0.1:5109 — SDK diagnostics: /sdk-status");
    }
}
Kurum portalınızdan alınan yapılandırmayla kullanın.

#2. Servis ayarı ve HTTP sınırı

Sigillum.start(absolutePath) ile servis başına bir SDK oluşturun. JDK HttpServer handler’ını sigillum.httpHandler(nativeHandler) ile sarın. Outbound Java 8 bağlantıları için httpConnection, Java 11+ için httpClient kullanılır. Desteklenmeyen üçüncü taraf HTTP istemcisi otomatik gözlenmiş sayılmaz.

#3. Ödeme riskini gözleyin

Demo POST /payments/assess girişinde ödeme tutarı ve istek referansını alır. Gerçek yerel değerlendirme bir alt scope içinde yapılır. Politika, açıklama, iş sonucu ve kaynak eki açık ai çağrılarıyla kaydedilir. Ödeme gerçekleştirilmez.

#4. Ek bilgi ve kaynak dosyası

sigillum.ai("model", modelJson) gibi metotlar hazır AI ailelerini kullanır. capture(context, family, kind, schema, rawJson, contents...) ortak genişletme yüzeyidir. CaptureContent(id, mediaType, purpose, bytes) özgün içerik içindir. SpanLink yalnız gerçek trace/span bağlarına işaret etmelidir.

#5. Thread ve callback bağlamı

wrap(Runnable) / wrap(Callable) gerçek executor sınırında Sigillum bağlamını taşır. activate(context) önceki bağlamı scope sonunda geri getirir. Aynı kişi referansına bakıp bağımsız işleri tek işlemde birleştirmeyin. SDK uygulamanın global OTEL provider’ını değiştirmez.

#6. Örneği çalıştırın

ZIP içindeki README’ye göre teslim edilmiş Maven paketlerini kurun, SIGILLUM_CONFIG ile mutlak ayar yolunu verin ve uygulamayı çalıştırın. Servlet projeleri için Servlet adaptörleri sayfasını kullanın.

Sigillum Finans · Güncel kaynak sözleşmesi

Dokümanlarda ara

Bir konu yazın; başlıklar ve içerikler birlikte aranır.

↑ ↓ sonuç seç · Enter aç · Esc kapatTarayıcıda yerel arama