Java
Jamm Java SDKのインストールと利用 — 決済・返金・カスタマー・Webhook。
インストール
Maven
<dependency>
<groupId>jp.jamm-pay</groupId>
<artifactId>jamm-sdk</artifactId>
<version>1.4.0</version>
</dependency> Gradle
implementation 'jp.jamm-pay:jamm-sdk:1.4.0' ソース: github.com/jamm-pay/java-sdk
初期化
JammClient client = JammClient.builder()
.clientId(System.getenv("JAMM_CLIENT_ID"))
.clientSecret(System.getenv("JAMM_CLIENT_SECRET"))
.environment(Environment.STAGING) // PRODUCTION | STAGING | DEVELOP | LOCAL
.build(); On-session決済
OnSessionPaymentResponse response = client.payments().onSessionPayment(
OnSessionPaymentRequest.newBuilder()
.setBuyer(Buyer.newBuilder().setEmail("customer@example.com").build())
.setCharge(InitialCharge.newBuilder().setPrice(4000).setDescription("Order 1234").build())
.setRedirect(URL.newBuilder()
.setSuccessUrl("https://yoursite.com/success")
.setFailureUrl("https://yoursite.com/failure")
.build())
.setOneTime(true)
.build()
); カスタマーの状態を確認
off-sessionで請求する前に、カスタマーを取得してactivatedがtrueであることを確認してください。activatedは契約状況と、該当する場合はKYC状況を反映するため、カスタマーが請求可能かどうかを判断する単一の指標です。
Customer customer = client.customers().get("cus-...");
if (!customer.getActivated()) {
// まだ請求できません — スキップするなど適切に処理してください
} Off-session決済(非同期)
請求前にカスタマーのactivatedを確認してください — 上記のカスタマーの状態を確認を参照。
OffSessionPaymentAsyncResponse response = client.payments().offSessionPaymentAsync(
OffSessionPaymentAsyncRequest.newBuilder()
.setCustomer("cus-...")
.setCharge(InitialCharge.newBuilder().setPrice(1000).setDescription("Monthly plan").build())
.setIdempotencyKey("order-2026-001") // 任意。省略時は自動生成
.build()
); 返金・キャンセル
client.payments().refund(RefundRequest.newBuilder().setChargeId("trx-...").build()); // 全額。当日はキャンセル、それ以降は返金
client.payments().refund(RefundRequest.newBuilder().setChargeId("trx-...").setAmount(500).build()); // 部分返金
client.payments().refund(RefundRequest.newBuilder().setChargeId("trx-...").setCancelOnly(true).build()); // キャンセルのみ(返金フォールバックなし) Webhook
Webhook.verify(contentJson, signature, clientSecret); // 無効な場合はInvalidSignatureExceptionをスロー
Object event = Webhook.parse(jsonBody); Was this page helpful?
Need help? Coming Soon
Support Center Slack community Contact usSign up for our developer newsletter: Coming Soon
You can unsubscribe at any time. Read our
privacy policy and terms and conditions.
privacy policy and terms and conditions.