Client Libraries
SDKs & Libraries
First-party, fully typed client libraries maintained by the IPPAN team. Every SDK includes automatic retries, idempotency key management, webhook signature verification, and comprehensive error types.
TypeScript
@ippan/pay-sdkInstall
npm install @ippan/pay-sdkquickstart.ts
import { IppanPay } from "@ippan/pay-sdk";
const client = new IppanPay({
apiKey: process.env.IPPAN_API_KEY!,
environment: "sandbox",
});
// Create a payment
const payment = await client.payments.create({
amount: 50000,
currency: "USDC",
merchant_id: "mer_9x8kLm2nQp",
metadata: { order_id: "ord_abc123" },
});
// Verify a webhook
const event = client.webhooks.constructEvent(
rawBody,
headers["x-ippan-signature"],
process.env.IPPAN_WEBHOOK_SECRET!
);Python
ippan-payInstall
pip install ippan-payquickstart.py
import os
from ippan_pay import IppanPay
client = IppanPay(
api_key=os.environ["IPPAN_API_KEY"],
environment="sandbox",
)
# Create a payment
payment = client.payments.create(
amount=50000,
currency="USDC",
merchant_id="mer_9x8kLm2nQp",
metadata={"order_id": "ord_abc123"},
)
print(payment.id) # "pay_7f3dKz1mNv"
print(payment.proof_url) # deterministic proof URI
# Verify a webhook
event = client.webhooks.construct_event(
payload=raw_body,
signature=headers["x-ippan-signature"],
secret=os.environ["IPPAN_WEBHOOK_SECRET"],
)Go
ippan-pay-goInstall
go get github.com/ippan-network/ippan-pay-gomain.go
package main
import (
"fmt"
"os"
ippan "github.com/ippan-network/ippan-pay-go"
)
func main() {
client := ippan.NewClient(os.Getenv("IPPAN_API_KEY"),
ippan.WithEnvironment(ippan.Sandbox),
)
payment, err := client.Payments.Create(&ippan.PaymentParams{
Amount: 50000,
Currency: "USDC",
MerchantID: "mer_9x8kLm2nQp",
Metadata: map[string]string{"order_id": "ord_abc123"},
})
if err != nil {
panic(err)
}
fmt.Println(payment.ID) // "pay_7f3dKz1mNv"
fmt.Println(payment.ProofURL) // deterministic proof URI
}Rust
ippan-pay-rsInstall
# Cargo.toml
[dependencies]
ippan-pay = "0.4"
tokio = { version = "1", features = ["full"] }main.rs
use ippan_pay::{Client, Environment, PaymentParams};
#[tokio::main]
async fn main() -> Result<(), ippan_pay::Error> {
let client = Client::builder()
.api_key(std::env::var("IPPAN_API_KEY")?)
.environment(Environment::Sandbox)
.build()?;
let payment = client
.payments()
.create(PaymentParams {
amount: 50000,
currency: "USDC".into(),
merchant_id: "mer_9x8kLm2nQp".into(),
metadata: Some(serde_json::json!({
"order_id": "ord_abc123"
})),
..Default::default()
})
.await?;
println!("Payment ID: {}", payment.id);
println!("Proof URL: {}", payment.proof_url);
Ok(())
}