Z Zise Developers
开发者工具 › 指南

已经确认、还没修的行为差异。写在这里是为了让你现在就绕开,而不是踩到之后自己猜。

已知问题

这一页记的是我方已经确认为不合意、但还没改的行为。它们都不会报错 ——所以不写出来,你只会在生产上遇到,然后花时间怀疑自己。

每一条都给了「现在怎么写」。按那样写的代码,在我方修掉之后不需要改。


K-001 · 开卡申请的状态在两个端点上不一致

表现

POST /v1/cards/applications 下单时返回 status: "pending";回查 GET /v1/cards/applications/{id} 时同一张单返回status: "pending_merchant_funds"

下单那一侧是裁剪过的三档,回查那一侧是内部原文(20 档)。

为什么会咬到你

你按下单响应写的状态映射表里没有 pending_merchant_funds。一次「商户预付不足排队」在你的系统里会落进 default 分支 ——而多数人的 default 是「未知,当失败处理」。

现在怎么写

pending_merchant_fundspending 处理,并对所有不认识的在途状态一律按「还在跑,继续轮询」处理,只把那 5 个终态硬编码。见状态机与取值

我方会怎么修:收敛到裁剪那一侧(回查也只回三档 + 终态)。


K-002 · 介质由 form_factor 决定,product_id 说了不算

表现

POST /v1/cards/applications 的介质只看请求体的 form_factorphysical = 实体卡,其余一切取值(含大写 Physical、含缺省)都按虚拟卡处理。没有拼写校验,没有报错。

product_id 指向的产品行自己也有一个介质,我方在解析产品时读了它 —— 但没有用。于是:

你传的实际开出
一个实体卡产品的 product_id,不传 form_factor虚拟卡
一个虚拟卡产品的 product_id + form_factor: "physical"按实体卡流程走
form_factor: "Physical"(大写)虚拟卡

为什么会咬到你

你以为下单的是实体卡,结果开出一张虚拟卡 —— 而且账也对得上(实体卡才收邮费,按虚拟卡走就不收,两边都自洽)。发现这件事通常是会员问「我的卡什么时候寄到」。

现在怎么写

product_idform_factor 一起传,并且自己保证两者一致。 form_factor 用小写常量,别拼接、别透传用户输入。下单后回查详情核对返回的 form_factor 再告诉会员。

我方会怎么修:传了 product_id 时以产品行的介质为准;两者冲突、或 form_factor 认不出,一律 400。


K-003 · 不传 client_key 会随机生成一把

表现

POST /v1/cards/applicationsclient_key(业务层幂等键,落库、永久)不传时我方随机生成一把。

为什么会咬到你

请求头 x-idempotency-key 的窗口是 24 小时。超过 24 小时之后同一份 body 重发,两把键都不拦 —— 会真的开出第二张卡,并真的再扣一次开卡费。

现在怎么写

自己传 client_key,用你那边的业务主键。这是唯一一把永久的幂等键。

我方会怎么修:不打算改缺省行为(随机比固定安全),但会在下单响应里回显生效的 client_key,让你能核对。


K-004 · 部分端点的 failure_code 是空字符串而不是 null

表现

拿不到具体失败原因时,failure_code""

现在怎么写

判空用 falsy 判断(if (!failure_code)),别用 === null。出参里的所有可选字符串字段都按这条处理。


已修(留档,方便你确认自己绕开的写法可以撤了)

何时原来的坑现在
2026-08-14GET /v1/transfers/recipient-types/v1/transfers/{id} 接走 —— 转账流程第一步从来没通过过已修;新增路由遮蔽守卫防止再犯
2026-08-14认证指南教你传 x-zise-merchant,而我方没有任何一处读它四处已清(指南 / Postman 集合 / 三个示例工具)
2026-08-14开卡 / 转账 / 理财 / 扫码付都做不出确认页五条只读端点,见各自的指南
2026-08-14个人汇款开户协议正文商户手上一个字都没有(而提交即记录「已同意」)GET /v1/remit/vp/agreement
2026-08-14卡申请走不下去只能等它失败cancel-preview + cancel
2026-08-14CVV 锁死后卡密永久看不到POST /v1/cards/{id}/cvv/unblock
2026-08-14被驳回只知道「被拒了」,不知道为什么GET /v1/kycreject_reason / l2_reject_reason
2026-08-14改名换证只能重建会员(旧账号的钱与卡留在原地)POST /v1/kyc/profile-sessions
2026-08-14没有换绑邮箱的路POST /v1/members/{id}/email-sessions(托管屏 · 两道码)
2026-08-14经开放 API 建的会员没有会员号,而 uid 是转账缺省的收款人类型建号即分配
2026-08-14卡补件没有终端用户能走的提交口(submit_url 恒空)POST /v1/cards/applications/{id}/supplement-sessions 换一张托管屏链接;详情里改叫 submit_via
2026-08-14开放 API 一个邮寄地址端点都没有 → 实体卡一张都开不出来/v1/shipping-addresses 五个端点(新 scope addresses:read / addresses:write
2026-08-14上游要求补报付款人的扫码付走廊在开放 API 上无法提交quotespayments 都收 payer
2026-08-14兑换方向拧上「需强认证」后在开放 API 上永久不可成交step_up_required 时带 hosted_url,验完带 x-step-up 重发
2026-08-14转账 / 理财的 require_step_up 在开放 API 上不执行(假的安全承诺)两条都执行,托管屏两段式
2026-08-14扫码付支付无任何二次确认每一笔都要强认证,与会员端的支付票据对等
2026-08-13L2 没有开放的提交路径POST /v1/kyc/l2/sessions,与 L1 同型的托管屏
2026-08-13GET /v1/kyc/requirements 只有五条,缺扫码付/提现/转账补齐到九条;扫码付另给 kyc_trigger_amount
2026-08-13REJECTED 显示成 none,与「从没申请过」同形status 多一档 rejected
2026-08-13补件列表跨 L1/L2 却不带 level出参带 level

怎么报一条新的

带上响应里的 request_id 找我方 —— 那个 ID 能定位到具体一次调用。确认之后会加到这一页,并给出「现在怎么写」。