Skip to main content

Integration Guide

ウェブブラウザに都度決済機能を実装する

対象となるサービス

  • ECの決済
  • デジタルコンテンツにおける一過性の決済
  • コインやアイテムなどの購入

本機能によってできること

  • ユーザーが Jamm で決済することを選択できる
  • 選択したあとにユーザーが必要な行動を取り決済手続きを完了する
  • 決済手続きが完了してから、ユーザーが自社サイトに戻り、決済完了画面を確認する

実装に必要な手順

  • サービス内に Jamm 決済オプションボタンを実装
  • ユーザーを Jamm の指定するリンクに遷移させる
  • ユーザー決済完了の webhook を受け取る

1. バックエンドにJamm決済機能を実装する

Step 1 of 3
1

サーバーを設定する

Jamm SDKのインストール

Gemfile + ターミナル
1bundle add jamm
2

非公開鍵を設定する

server.rb
1require "jamm"
2
3# Rails等のinitializerに設定してください。
4Jamm.configure(
5 # クライアントIDを設定
6 client_id: ENV['JAMM_MERCHANT_CLIENT_ID'],
7 # クライアントシークレットを設定
8 client_secret: ENV['JAMM_MERCHANT_CLIENT_SECRET'],
9 # Jammの環境を設定
10 # - staging: Staging環境
11 # - prod: Production(本番)環境
12 env: ENV['JAMM_ENVIRONMENT'],
13)
3

リダイレクト用支払いリンクを取得する

server.rb
1require "jamm"
2
3# 支払いリンクを作成するには、以下3つのオブジェクトをセットしてください。
4# 1. Buyer: 購入者情報
5# 2. Charge: 決済情報
6# 3. Redirect: 購入完了後にストアに戻るためのリンクURL
7result = Jamm::Payment.on_session(
8 buyer: Jamm::OpenAPI::Buyer.new(
9 # 購入者のメールアドレス (必須)
10 email: 'foo1@example.com',
11 # 本人確認を強制する場合はtrue
12 # 本人確認を強制しない場合、銀行の引き落とし上限額が低くなります。
13 # 引き落とし上限額は銀行によって異なります。
14 force_kyc: true,
15 # 購入者の話番号 (半角数字のみ)
16 phone: '09012345678',
17 # 購入者氏名
18 name: '山田 太郎',
19 # 購入者氏名 (カタカナ)
20 katakanaLastName: 'ヤマダ',
21 katakanaFirstName: 'タロウ',
22 # 購入者住所
23 address: '東京都港区赤坂1-14-14第35興和ビル5F',
24 # 購入者の生年月日
25 birthDate: '1990-01-01',
26 # 購入者の性別 (male / female)
27 gender: 'male',
28 # 任意のメタデータ
29 # 例えばストアのユーザIDなど、カスタマーサポートに必要な追加情報を
30 # ご指定ください。加盟店ダッシュボードで確認できます。
31 #
32 # この情報はエンドユーザには表示されません。
33 # key/valueどちらも文字列型が必要です。
34 metadata: {
35 storeUserId: 'user_12345',
36 }
37 ),
38 charge: Jamm::OpenAPI::InitialCharge.new(
39 # 決済額
40 price: 1000,
41 # 決済の説明
42 # このプロパティはエンドユーザに表示されます。
43 description: 'ロングTシャツ',
44 # 支払いリンクの有効期限
45 # ISO 8601 extended format
46 # - 年月日: YYYY-MM-DD
47 # - 時刻プリフィックス: T
48 # - 時間: HH:mm:ss
49 # - UTC時刻: Z
50 expiresAt: '2025-08-01T07:04:16Z',
51 ),
52 redirect: Jamm::OpenAPI::URL.new(
53 # 決済成功時にストアに戻るためのURL
54 success_url: "https://example.com/success",
55 # 決済失敗時にストアに戻るためのURL
56 failure_url: "https://example.com/failure",
57 ),
58)
59
60puts result.to_hash.to_json

2. Jamm決済用のボタンを実装する

上記のステップで支払いリンクを作成したら、フロントエンドのボタンにリンクをセットしてください。

<a href={支払いリンク}>
Jammで支払う
</a>

3. 決済完了のwebhookを受け取る

Step 1 of 3
1

webhook URLを登録する

Provide webhook URL to Jamm

加盟店ダッシュボードからwebhook URLを設定

2

決済成功webhookを受け取る

server.rb
1# 例: Jamm Webhook用のルートを設定
2
3# WebhookはJammからストアのサーバに対して送信されます。
4# Webhookを受け取るエンドポイントは公開されている必要があります。
5
6# Jammから配信されたWebhookメッセージ例
7raw = JSON.parse('{
8 "id": "mwh-00000000000000001",
9 "signature": "sha256=000000000000000000000001",
10 "created_at": "2025-03-26T02:24:51.989383018Z",
11 "event_type": "EVENT_TYPE_CHARGE_SUCCESS",
12 "content": {
13 # contentの中身はメッセージ種類によって異なる
14 }
15}')
16
17# Webhookメッセージを検証
18Jamm::Webhook.verify(
19 data: raw['content'].to_json,
20 signature: raw['signature']
21)
22
23# Webhook メッセージを受け取り、メッセージ種別によって処理を行う
24msg = Jamm::Webhook.parse(raw)
25
26case msg.event_type
27# 契約有効化時の処理
28# https://github.com/jamm-pay/ruby-sdk/blob/main/lib/jamm/api/models/v1_contract_message.rb
29#
30# {
31# customer: "cus_12345", // 顧客ID
32# email: "user@example.com", // メールアドレス
33# merchant_name: "Acme Inc" // ストア名
34# }
35when Jamm::OpenAPI::EventType::CONTRACT_ACTIVATED
36 puts msg.content
37
38# 決済処理系に含まれるcontentプロパティ
39# https://github.com/jamm-pay/ruby-sdk/blob/main/lib/jamm/api/models/v1_charge_message.rb
40#
41# {
42# id: "ch_12345",
43# customer: "cus_12345",
44# status: "STATUS_SUCCESS",
45# initial_amount: 10000,
46# discount: 500,
47# final_amount: 9500,
48# amount_refunded: 0,
49# currency: "USD",
50# // 処理日時。必要に応じてデータストアに保存してください
51# processed_at: "2025-08-22T10:30:00Z",
52# }
53#
54# 決済発生・失敗・作成・更新・キャンセル時の処理
55when Jamm::OpenAPI::EventType::CHARGE_CREATED
56when Jamm::OpenAPI::EventType::CHARGE_SUCCESS
57when Jamm::OpenAPI::EventType::CHARGE_FAIL
58when Jamm::OpenAPI::EventType::CHARGE_UPDATED
59when Jamm::OpenAPI::EventType::CHARGE_CANCEL
60 puts msg
61
62# Jamm Customerが削除された場合
63# https://github.com/jamm-pay/ruby-sdk/blob/main/lib/jamm/api/models/v1_user_account_message.rb
64#
65# {
66# customer: "cus_98765",
67# email: "alice@example.com",
68# deleted_at: "2025-08-22T10:30:00Z" // 削除日時
69# }
70when Jamm::OpenAPI::EventType::USER_ACCOUNT_DELETED
71else
72 raise "Unsupported event type"
73end
74
3

決済後処理を実施する

決済関連DBの更新、発送、経理システムとの連携など必要な後処理を実施!