> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Java SDK

> Waffo Java SDK のインストール、初期化、および利用ガイド。

## 動作要件

* Java 8 以降(8、11、17、21 に対応)
* Maven 3.6+ または Gradle 6.0+

## インストール

<Tabs>
  <Tab title="Maven">
    ```xml theme={null}
    <dependency>
        <groupId>com.waffo</groupId>
        <artifactId>waffo-java</artifactId>
        <version>1.5.0</version>
    </dependency>
    ```
  </Tab>

  <Tab title="Gradle">
    ```groovy theme={null}
    implementation 'com.waffo:waffo-java:1.5.0'
    ```
  </Tab>
</Tabs>

<Note>
  最新バージョンは [Maven Central](https://central.sonatype.com/artifact/com.waffo/waffo-java) でご確認ください。
</Note>

## 初期化

```java theme={null}
import com.waffo.Waffo;
import com.waffo.types.config.WaffoConfig;
import com.waffo.types.config.Environment;

WaffoConfig config = WaffoConfig.builder()
    .apiKey("your-api-key")
    .privateKey("your-base64-encoded-private-key")
    .waffoPublicKey("waffo-public-key")
    .merchantId("your-merchant-id")
    .environment(Environment.SANDBOX)
    .build();

Waffo waffo = new Waffo(config);
```

## 決済

```java theme={null}
import com.waffo.types.ApiResponse;
import com.waffo.types.order.*;
import com.waffo.types.payment.ProductName;
import com.waffo.types.iso.CurrencyCode;
import java.util.UUID;

String paymentRequestId = UUID.randomUUID().toString().replace("-", "");

CreateOrderParams params = CreateOrderParams.builder()
    .paymentRequestId(paymentRequestId)
    .merchantOrderId("ORDER_" + System.currentTimeMillis())
    .orderCurrency(CurrencyCode.HKD)
    .orderAmount("100.00")
    .orderDescription("Test Product")
    .notifyUrl("https://your-site.com/webhook")
    .userInfo(UserInfo.builder()
        .userId("user_123")
        .userEmail("user@example.com")
        .userTerminal(UserTerminalType.WEB)
        .build())
    .paymentInfo(PaymentInfo.builder()
        .productName(ProductName.ONE_TIME_PAYMENT)
        .build())
    .build();

ApiResponse<CreateOrderData> response = waffo.order().create(params);
if (response.isSuccess()) {
    CreateOrderData data = response.getData().get();
    System.out.println("Redirect URL: " + data.fetchRedirectUrl());
}
```

## エラーハンドリング

```java theme={null}
import com.waffo.exception.WaffoUnknownStatusException;
import com.waffo.exception.WaffoException;

try {
    ApiResponse<CreateOrderData> response = waffo.order().create(params);
} catch (WaffoUnknownStatusException e) {
    // 重要: 決済が成功している可能性があります。照会 API で確認してください
} catch (WaffoException e) {
    // クライアント側のエラー(設定、署名など)
}
```

## パッケージレジストリ

* [Maven Central](https://central.sonatype.com/artifact/com.waffo/waffo-java)
