Loading...
Loading...
Compare original and translation side by side
Depends on: paystack-setup for thehelper.paystackRequest
Related: paystack-miscellaneous for fetching bank codes.
依赖:需通过paystack-setup获取辅助工具。paystackRequest
相关工具:paystack-miscellaneous用于获取银行代码。
| Method | Endpoint | Description |
|---|---|---|
| GET | | Resolve account number to name |
| POST | | Validate account ownership |
| GET | | Resolve card BIN |
| 方法 | 端点 | 描述 |
|---|---|---|
| GET | | 解析账号对应的姓名 |
| POST | | 验证账户所有权 |
| GET | | 解析卡BIN |
| Param | Type | Required | Description |
|---|---|---|---|
| string | Yes | Bank account number |
| string | Yes | Bank code (from List Banks endpoint) |
const resolved = await paystackRequest<{
account_number: string;
account_name: string;
}>("/bank/resolve?account_number=0022728151&bank_code=063");
// resolved.data.account_name → "WES GIBBONS"| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| string | 是 | 银行账号 |
| string | 是 | 银行代码(来自银行列表端点) |
const resolved = await paystackRequest<{
account_number: string;
account_name: string;
}>("/bank/resolve?account_number=0022728151&bank_code=063");
// resolved.data.account_name → "WES GIBBONS"async function verifyAccountBeforeTransfer(
accountNumber: string,
bankCode: string,
expectedName: string
) {
const resolved = await paystackRequest<{
account_number: string;
account_name: string;
}>(`/bank/resolve?account_number=${accountNumber}&bank_code=${bankCode}`);
const resolvedName = resolved.data.account_name.toLowerCase();
const expected = expectedName.toLowerCase();
if (!resolvedName.includes(expected)) {
throw new Error(
`Account name mismatch: "${resolved.data.account_name}" does not match "${expectedName}"`
);
}
return resolved.data;
}async function verifyAccountBeforeTransfer(
accountNumber: string,
bankCode: string,
expectedName: string
) {
const resolved = await paystackRequest<{
account_number: string;
account_name: string;
}>(`/bank/resolve?account_number=${accountNumber}&bank_code=${bankCode}`);
const resolvedName = resolved.data.account_name.toLowerCase();
const expected = expectedName.toLowerCase();
if (!resolvedName.includes(expected)) {
throw new Error(
`Account name mismatch: "${resolved.data.account_name}" does not match "${expectedName}"`
);
}
return resolved.data;
}| Param | Type | Required | Description |
|---|---|---|---|
| string | Yes | Customer's first and last name |
| string | Yes | Account number |
| string | Yes | |
| string | Yes | Bank code |
| string | Yes | Two-letter ISO code (e.g. |
| string | Yes | |
| string | No | Identity document number |
const validation = await paystackRequest<{
verified: boolean;
verificationMessage: string;
accountAcceptsDebits: boolean;
accountAcceptsCredits: boolean;
accountHolderMatch: boolean;
accountOpen: boolean;
}>("/bank/validate", {
method: "POST",
body: JSON.stringify({
bank_code: "632005",
country_code: "ZA",
account_number: "0123456789",
account_name: "Ann Bron",
account_type: "personal",
document_type: "identityNumber",
document_number: "1234567890123",
}),
});
// validation.data.verified → true
// validation.data.verificationMessage → "Account is verified successfully"| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| string | 是 | 客户的全名 |
| string | 是 | 银行账号 |
| string | 是 | |
| string | 是 | 银行代码 |
| string | 是 | 两位ISO代码(例如 |
| string | 是 | |
| string | 否 | 身份证件号码 |
const validation = await paystackRequest<{
verified: boolean;
verificationMessage: string;
accountAcceptsDebits: boolean;
accountAcceptsCredits: boolean;
accountHolderMatch: boolean;
accountOpen: boolean;
}>("/bank/validate", {
method: "POST",
body: JSON.stringify({
bank_code: "632005",
country_code: "ZA",
account_number: "0123456789",
account_name: "Ann Bron",
account_type: "personal",
document_type: "identityNumber",
document_number: "1234567890123",
}),
});
// validation.data.verified → true
// validation.data.verificationMessage → "Account is verified successfully"const card = await paystackRequest<{
bin: string;
brand: string;
sub_brand: string;
country_code: string;
country_name: string;
card_type: string; // "DEBIT" | "CREDIT"
bank: string;
}>("/decision/bin/539983");
// card.data.brand → "Mastercard"
// card.data.card_type → "DEBIT"
// card.data.bank → "Guaranty Trust Bank"const card = await paystackRequest<{
bin: string;
brand: string;
sub_brand: string;
country_code: string;
country_name: string;
card_type: string; // "DEBIT" | "CREDIT"
bank: string;
}>("/decision/bin/539983");
// card.data.brand → "Mastercard"
// card.data.card_type → "DEBIT"
// card.data.bank → "Guaranty Trust Bank"