クレジットカード & デビットカード決済
Visa、Mastercard、JCB、American Express、その他の主要なカードブランドで即時承認と安全な処理により決済を受け付けます。
概要
Omiseは、REST APIを使用したPCI認証決済ゲートウェイを通じて、マーチャントがクレジットカードおよびデビットカード決済をグローバルに受け付けることを可能にします。カード決済は即時承認を提供し、通常7日以内(タイ)または21日以内(日本)に決済されます。
サポートされているカードブランド
| ブランド | タイプ | 地域 |
|---|---|---|
| Visa | クレジット & デビット | タイ、シンガポール、マレーシア、日本 |
| Mastercard | クレジット & デビット | タイ、シンガポール、マレーシア、日本 |
| JCB | クレジット & デビット | すべての地域 (日本で人気) |
| American Express | クレジット | すべての地域 |
| Diners Club | クレジット | 国際 |
| Discover | クレジット | 国際 |
| UnionPay | クレジット & デビット | 中国および国際 |
国別の取引限度額
| 国 | 通貨 | 最小 | 最大 |
|---|---|---|---|
| タイ | THB | ฿20.00 | ฿150,000.00 |
| 日本 | JPY | ¥100 | ¥6,000,000 |
| マレーシア | MYR | RM1.00 | RM100,000.00 |
| シンガポール | SGD | S$1.00 | S$20,000.00 |
決済フロー
1. クライアント側のトークン化
Omise.jsを使用してカード情報を安全に収集し、トークンを作成します:
<!DOCTYPE html>
<html>
<head>
<title>チェックアウト</title>
<script src="https://cdn.omise.co/omise.js"></script>
</head>
<body>
<form id="checkout-form">
<input type="text" id="card-name" placeholder="カード名義人" />
<input type="text" id="card-number" placeholder="カード番号" />
<input type="text" id="card-expiry-month" placeholder="MM" />
<input type="text" id="card-expiry-year" placeholder="YYYY" />
<input type="text" id="card-cvv" placeholder="CVV" />
<button type="submit">今すぐ支払う</button>
</form>
<script>
Omise.setPublicKey("pkey_test_YOUR_PUBLIC_KEY");
document.getElementById('checkout-form').addEventListener('submit', function(e) {
e.preventDefault();
Omise.createToken("card", {
name: document.getElementById('card-name').value,
number: document.getElementById('card-number').value,
expiration_month: document.getElementById('card-expiry-month').value,
expiration_year: document.getElementById('card-expiry-year').value,
security_code: document.getElementById('card-cvv').value
}, function(statusCode, response) {
if (statusCode === 200) {
// トークンが正常に作成されました
// トークンをサーバーに送信
fetch('/checkout', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: response.id })
});
} else {
// エラーを処理
alert(response.message);
}
});
});
</script>
</body>
</html>
2. サーバー側の課金作成
サーバーでトークンを使用して課金を作成します:
- cURL
- PHP
- Node.js
- Python
- Ruby
- Go
curl https://api.omise.co/charges \
-u skey_test_YOUR_SECRET_KEY: \
-d "amount=10025" \
-d "currency=thb" \
-d "card=tokn_test_5rt6s9vah5lkvi1rh9c"
<?php
require_once 'vendor/autoload.php';
define('OMISE_PUBLIC_KEY', 'pkey_test_YOUR_KEY');
define('OMISE_SECRET_KEY', 'skey_test_YOUR_KEY');
$charge = OmiseCharge::create(array(
'amount' => 10025,
'currency' => 'thb',
'card' => $_POST['omiseToken']
));
if ($charge['status'] == 'successful') {
echo '決済成功!';
} else {
echo '決済失敗: ' . $charge['failure_message'];
}
?>
const omise = require('omise')({
secretKey: 'skey_test_YOUR_SECRET_KEY'
});
const charge = await omise.charges.create({
amount: 10025,
currency: 'thb',
card: tokenId
});
if (charge.status === 'successful') {
console.log('決済成功!');
} else {
console.log('決済失敗:', charge.failure_message);
}
import omise
omise.api_secret = 'skey_test_YOUR_SECRET_KEY'
charge = omise.Charge.create(
amount=10025,
currency='thb',
card='tokn_test_5rt6s9vah5lkvi1rh9c'
)
if charge.status == 'successful':
print('決済成功!')
else:
print(f'決済失敗: {charge.failure_message}')
require 'omise'
Omise.api_key = 'skey_test_YOUR_SECRET_KEY'
charge = Omise::Charge.create({
amount: 10025,
currency: 'thb',
card: 'tokn_test_5rt6s9vah5lkvi1rh9c'
})
if charge.status == 'successful'
puts '決済成功!'
else
puts "決済失敗: #{charge.failure_message}"
end
package main
import (
"github.com/omise/omise-go"
"github.com/omise/omise-go/operations"
)
func main() {
client, _ := omise.NewClient("pkey_test_YOUR_KEY", "skey_test_YOUR_KEY")
charge, createCharge := &omise.Charge{}, &operations.CreateCharge{
Amount: 10025,
Currency: "thb",
Card: "tokn_test_5rt6s9vah5lkvi1rh9c",
}
if e := client.Do(charge, createCharge); e != nil {
panic(e)
}
}
課金ステータス値
| ステータス | 説明 |
|---|---|
pending | 決済承認待ち |
successful | 決済が承認され取得されました |
failed | 決済が拒否または失敗しました |
expired | 承認ウィンドウが期限切れになりました |
reversed | 承認が取り消されました |
セキュリティ機能
1. PCI DSS準拠
- OmiseはPCI DSS Level 1認証を取得しています
- カードデータはサーバーに触れません
- トークン化により準拠範囲が削減されます
2. 3D Secure認証
- セキュリティの追加レイヤーを追加
- 不正とチャージバックを削減
- カード発行者に責任を転嫁
3. 住所確認 (AVS)
- 請求先住所を確認
- 承認率を向上
- 国際カードに推奨
4. CVV確認
- カードセキュリティコードを確認
- カード所有を確認
- 不正リスクを削減
承認率の向上
完全な請求情報を提供
Omise.createToken("card", {
name: "山田太郎",
number: "4242424242424242",
expiration_month: 12,
expiration_year: 2027,
security_code: "123",
// 請求先住所は承認を向上させます
city: "東京",
postal_code: "100-0001",
country: "JP"
}, callback);
顧客コンテキストを含める
curl https://api.omise.co/charges \
-u skey_test_YOUR_SECRET_KEY: \
-d "amount=10025" \
-d "currency=thb" \
-d "card=tokn_test_..." \
-d "description=注文 #12345" \
-d "metadata[customer_email]=john@example.com" \
-d "metadata[customer_ip]=103.246.xxx.xxx"
一般的な問題とトラブルシューティング
問題: 決済が拒否されました
考えられる原因:
- 残高不足
- カードが期限切れまたは無効
- カード限度額を超えました
- 不正チェックがトリガーされました
解決策:
- 顧客にカード情報の確認を依頼
- 別の決済方法を試す
- 詳細についてカード発行者に連絡