billing
POST /v1/payment-methods/paypal/confirm
Finish saving a PayPal account after the buyer approved it.
인증
Bearer 토큰으로 API 키를 전송하세요. 이 엔드포인트는 명세에 특정 권한을 명시하지 않으므로, 가정하기보다는 키에 필요한 최소한의 권한을 부여하고 응답을 확인하세요.
조직 ID가 들어가는 위치
이 엔드포인트는 JSON 본문의 필드로 org_id을(를) 받습니다.
조직 ID는 대시보드의 API 키 화면에서 키 바로 옆에 있습니다. 이는 실행하는 모든 호출에서 동일한 ID입니다.
무료 체험하기
대괄호 안에 있는 모든 내용을 사용자 지정 값으로 바꾸고, 키 플레이스홀더는 대시보드의 키로 바꾸세요.
curl -X POST https://api.zinndigital.com/v1/payment-methods/paypal/confirm \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "setup_token_id": <string> }'로그인하셨나요? 대시보드의 API 콘솔이 실제 조직 ID와 본인의 키를 자동으로 채우고 라이브 API를 대상으로 요청을 실행하므로 실제 응답을 확인할 수 있습니다. API 콘솔에서 이 엔드포인트를 여세요
상세 정보
Exchanges an approved setup token for the permanent vault token and stores the mandate. The organization is read from PayPal's answer and must match the caller's, so a setup token belonging to another account cannot be attached here. Idempotent, and it deliberately races PayPal's VAULT.PAYMENT-TOKEN.CREATED webhook: whichever arrives first writes the mandate and the other converges on it, so a buyer whose browser never returns still ends up with a saved method.
요청 본문
| 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
setup_token_id | string | 예 | The setup_token_id returned by POST /v1/payment-methods/paypal. |
org_id | string | 아니요 | Organization to attach the mandate to. The caller must hold billing.payment.manage in that organization, and PayPal's own answer must name the same organization. |
응답
| 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
id | string | 예 | — |
gateway | string<stripe, paypal> | 예 | The rail holding the mandate. Crypto (NOWPayments) is absent by design — it has no mandate primitive, so those customers are invoiced ahead rather than rebilled (ADR 0011 §6). |
status | string<pending, active, expired, revoked> | 예 | Only active is chargeable; pending means the gateway has not confirmed it yet. |
role | string<, primary, backup> | 예 | Which job this mandate does for the organisation. primary is charged first; backup is charged immediately if the primary declines; "" is simply stored. ⛔ Replaced… |
removal_blocked_by | string<, subscription, adhoc_charge, reseller_programme> | 예 | Empty when this method may be removed. Otherwise the obligation that keeps the floor binding: this is the account's last operational way to pay and the named thing is still… |
method_type | string | 예 | The gateway's own name for what kind of mandate this is — Stripe's PaymentMethod.type (card, sepa_debit, klarna, kakao_pay, …). Empty on a rail that does not type its… |
can_auto_renew | boolean | 예 | Whether this mandate can be charged off-session, i.e. whether a renewal can be taken without the customer present. false means the subscription renews manually: the… |
brand | string | 예 | — |
last4 | string | 예 | — |
exp_month | integer | 아니요 | — |
exp_year | integer | 아니요 | — |
holder_name | string | 아니요 | — |
confirmed_at | string | 아니요 | When the gateway confirmed the mandate. Null while pending. |
created_at | string | 예 | — |
이 엔드포인트가 반환할 수 있는 오류
401 · 403 · 409 · 422 · 429 · 503