1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

海外決済サービスと格闘した3週間

1
Posted at

はじめに

海外向けのWebサービスで決済機能を実装することになりました。

マジで大変でした。

ドキュメントは全部英語以外の言語、TypeScriptの型定義なし、開発環境と本番環境で仕様が違う...
何度も心が折れかけましたが、なんとか実装完了できました。

この記事は、同じような状況で困っている人の参考になれば嬉しいです🙏

TL;DR

  • 英語以外のドキュメント、特に画像内テキストの翻訳が地獄
  • 型定義を自作するハメに
  • dev環境でテストできない機能が本番必須
  • Geminiの翻訳・要約がガチで救世主だった

第一の壁:全部英語以外のドキュメント

公式ドキュメントを開いた瞬間、全部読めない言語

Google翻訳で乗り切ろうとしたが...

テキスト部分は、なんとかGoogle翻訳で理解できました。

でも問題は 画像内のテキスト

処理フローやシーケンス図が何十枚もあるのに、画像内の文字が翻訳できない。
処理の流れを理解するには、この画像が一番重要なのに...

第二の壁:TypeScriptで型がない地獄

この決済サービス、フロントエンド用のJavaScript SDKはありました。
でも バックエンド用のSDK(npmパッケージ)が存在しない

つまり

  • フロントエンド:SDKあり(でも型定義なし)
  • バックエンド:生APIを直接叩くしかない

型がないならTypeScriptの意味ないじゃん😇

仕方ないので、フロントエンド・バックエンド両方の型定義を自作することになりました。

// フロントエンド:SDKのグローバル変数の型定義
declare global {
  interface Window {
    TPDirect: {
      card: {
        getPrime: (callback: (result: any) => void) => void 
      }
    }
  }
}

// バックエンド:APIレスポンスの型を推測で作成
interface PayByPrimeResponse {
  status: number  // ← 0が成功らしい(たぶん)
  msg: string
  rec_trade_id?: string
  bank_transaction_id?: string
  // 他にもフィールドありそうだけど分からん
}

「たぶんこう」だらけで不安しかない...

第三の壁:開発環境でテストできないもどかしさ

一番ヤバかったのが 3D Secure です。

  • 開発環境(Sandbox): 3D Secureは使わない ❌
  • 本番環境(Production): 3D Secureは必須です ✅

3D Secureって、決済中にユーザーを銀行の認証ページにリダイレクトする複雑なフローなんです。
それを開発環境でテストできないって...

本番デプロイして初めて見るエラー

{
  "status": -1,
  "msg": "3D Secure authentication URL is required"
}

どこに設定するんですか...?(ドキュメント漁り直し)

本番でしか動かないコード書くの、めちゃくちゃ怖かったです。

転機:Geminiとの出会い

2週間格闘して、心が折れかけてた時に Gemini を使ってみました。
ちょうどこの時期に社内のGoogle Workspaceを有料プランにあげたのがタイミングよかったです。

画像内テキストも翻訳してくれる!

Geminiに画像をアップロードして「この処理フローを日本語で説明して」って頼んだら...

Gemini:この図は以下の処理フローを示しています:

1. フロントエンドでカード番号を入力
2. getPrime() でPrimeトークンを取得
3. Primeをバックエンドに送信
4. Pay By Prime APIを呼び出し
5. 3D Secure必要時は認証URLが返る
...

重要ポイント:
- Primeは1回限り有効
- 3D Secureは本番環境のみ

神か?

今まで何時間もかけて理解しようとしてた内容が、一瞬で分かりました。

長文ドキュメントも一瞬で要約

数十ページのAPIドキュメントも、Geminiに投げれば要約してくれます。

私:実装時の注意点を教えて

Gemini:主な注意点:

1. primeトークンは1回限り有効
2. 金額は現地通貨の最小単位で指定
3. 電話番号はE.164形式が必須
4. 3D Secureは本番環境のみ
...

めちゃくちゃ助かる... 😭

エラーメッセージも即座に理解

実装中に出た現地語のエラーメッセージも、Geminiに聞けば一発解決。

Google翻訳の直訳だと意味不明だったのが、Geminiなら文脈を理解して
「カード所有者の電話番号の形式が正しくありません」みたいに分かりやすく教えてくれました。

学んだこと

開発環境と本番環境の差異に注意

決済サービスは特に、セキュリティ機能が環境で違うことが多い。
事前確認が超重要です。

AI翻訳ツールをフル活用

特に効果的だったのは

  • 画像内テキストの翻訳: Gemini最高
  • 長文の要約: 数十ページが数分で理解できる
  • エラーメッセージの解読: 即座に解決

令和に感謝💃

おわりに

海外の決済サービスとの格闘、大変でしたがいい経験になりました。

言語の壁はAIツールで乗り越えられる って分かったのが大きいです。
あと紹介忘れていましたが、catnoseさんのNaniもかなり使わせていただきました。あれ神です。

同じような状況で困っている人の助けになれば幸いです:pray:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?