← Վերադառնալ բլոգ

Crypto վճարումներ marketplace-ների համար. մեկ հաշիվ, յուրաքանչյուր վաճառողի դրամապանակ

· 4 min read
marketplace channels api guide

Եթե marketplace եք վարում, կամ որևէ platform, որտեղ մի քանի վաճառող վճարումներ են ստանում, crypto-ն մի կոնկրետ խնդիր է ստեղծում. յուրաքանչյուր վաճառողի պետք է իր payout նպատակակետը։ Վճարային պրոցեսորների մեծ մասը ստիպում է յուրաքանչյուր վաճառողի համար առանձին merchant հաշիվ բացել, առանձին API key-եր պահել և հետո այդ ամենը համադրել հաշվառման մեջ։

MutoPay-ը այլ կերպ է մոտենում դրան։ Մեկ merchant հաշիվ, մեկ API key և յուրաքանչյուր վաճառողի համար մեկ channel։ Ամեն channel վճարումները ուղարկում է տվյալ վաճառողի դրամապանակին, նրա նախընտրած chain-ով և token-ով։ Դուք ամեն ինչ կառավարում եք մեկ API-ի միջոցով։

Marketplace չե՞ք վարում։ Եթե մեկ app կամ site ունեք և վճարումներ եք ընդունում ձեր համար, master key ձեզ պետք չէ։ Dashboard-ում ստեղծեք մեկ channel (Settings → Channels), պատճենեք դրա ep_… API key-ը և webhook secret-ը, և վերջ։ Նվազագույն կարգավորման համար տեսեք How to accept crypto payments։ Ստորև նկարագրված master key-ը պետք է միայն այն դեպքում, երբ ձեր backend-ը programmatically channel-ներ է ստեղծում երրորդ կողմերի համար։

Մոդելը

Channel-ը ձեր հաշվի տակ մեկուսացված վճարային ուղի է։ Այն ունի իր սեփականը.

  • API key (տվյալ վաճառողին վերագրված վճարումներ ստեղծելու համար)
  • Settlement destination (chain, token, wallet address)
  • Webhook URL (որպեսզի յուրաքանչյուր վաճառողի backend-ը անկախ ծանուցում ստանա)

Master API key-ը թույլ է տալիս programmatically ստեղծել և կարգավորել channel-ներ։ Browser login պետք չէ։ Ձեր backend-ը վաճառողներին ավտոմատ է provision անում։

Արդյունքը. երբ գնորդը վճարում է Vendor A-ի storefront-ում, գումարը ուղիղ գնում է Vendor A-ի դրամապանակ։ Vendor B-ի վճարումները գնում են Vendor B-ի դրամապանակ։ Դուք երբեք չեք դիպչում գումարին։

Կարգավորում. երեք API call յուրաքանչյուր վաճառողի համար

Երբ նոր վաճառողը գրանցվում է ձեր platform-ում և տալիս է իր wallet address-ը, ձեր backend-ը երեք call է անում.

1. Create a channel

curl -X POST https://mutopay.com/api/merchant/channels \
  -H "Authorization: Bearer msk_<your_master_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Vendor: Acme Widgets",
    "webhook_url": "https://acme-widgets.com/webhooks/mutopay"
  }'

Response-ը ներառում է channel ID-ն և channel API key (ep_...)։ Պահեք երկուսն էլ. key-ը ցույց է տրվում մեկ անգամ։

2. Set the vendor’s settlement destination

curl -X PUT https://mutopay.com/api/merchant/channels/ch_abc123/settlement \
  -H "Authorization: Bearer msk_<your_master_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "preferred_token": "USDC",
    "preferred_chain_id": "137",
    "wallet_address": "0xVendorWalletAddress..."
  }'

Այժմ այս channel-ով ստեղծված ցանկացած payment settle է լինում տվյալ վաճառողի դրամապանակին Polygon-ում, USDC-ով։

3. Create payments using the channel’s API key

curl -X POST https://mutopay.com/api/payments \
  -H "X-API-Key: ep_<channel_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 49.99,
    "currency": "USD",
    "external_id": "order_5821",
    "description": "Acme Widgets: Order #5821"
  }'

Payment-ը ավտոմատ վերագրվում է channel-ին։ Գնորդը տեսնում է payment page-ը, վճարում է իր ունեցած ցանկացած token-ով, և գումարը վաճառողի դրամապանակ է հասնում որպես USDC։

Ինչ եք ստանում

Առանց առանձին հաշիվների յուրաքանչյուր վաճառողի համար։ Յուրաքանչյուր վաճառողին առանձին merchant չեք գրանցում։ Մեկ հաշիվ, N channel։

Առանց պահառության։ Գումարը ուղիղ գնում է վաճառողի դրամապանակ։ Դուք crypto չեք պահում, escrow չեք անում և հետո առաջ չեք փոխանցում։ Սա շրջանցում է money transmission-ի շուրջ եղած կարգավորիչ բարդությունների մեծ մասը։

Անկախ key-եր։ Եթե վաճառողի integration-ը վնասվում է, դուք revoke եք անում միայն այդ մեկ channel key-ը։ Մնացածի վրա ազդեցություն չկա։

Webhook-ներ յուրաքանչյուր վաճառողի համար։ Ամեն channel կարող է ունենալ իր webhook URL-ը։ Vendor A-ի backend-ը ծանուցում է ստանում Vendor A-ի payments-ի մասին։ Կամ բոլոր webhook-ները ուղղեք ձեր platform-ի մեկ endpoint-ին և payload-ում route արեք ըստ channel_id-ի։

Խառը chain-ներ և token-ներ։ Vendor A-ն settle է լինում USDC-ով Polygon-ում։ Vendor B-ն ուզում է USDT Arbitrum-ում։ Vendor C-ն նախընտրում է իր TON դրամապանակը։ Յուրաքանչյուր channel անկախ է։

Վաճառողների onboarding-ի ավտոմատացում

Սովորական flow-ը այսպիսին է.

  1. Vendor-ը գրանցվում է ձեր platform-ում, մուտքագրում է իր wallet address-ը և preferred chain-ը
  2. Ձեր backend-ը կանչում է POST /api/merchant/channels՝ channel ստեղծելու համար
  3. Ձեր backend-ը կանչում է PUT /api/merchant/channels/:id/settlement՝ նրա wallet տվյալներով
  4. Դուք ձեր database-ում պահում եք channel ID-ն և API key-ը՝ կապելով տվյալ vendor-ի հետ
  5. Այս vendor-ի համար order-ներ ստեղծելիս օգտագործում եք նրա channel API key-ը X-API-Key-ում

Vendor-ին offboard անելու համար.

curl -X POST https://mutopay.com/api/merchant/channels/ch_abc123/revoke \
  -H "Authorization: Bearer msk_<your_master_key>"

Նրա API key-ը անմիջապես դադարում է աշխատել։ Արդեն ավարտված payments-ի վրա դա չի ազդում։

Ինչ չի անում MutoPay-ը

Սպասումները ճիշտ դնելու համար. MutoPay-ը payments-ը ուղղում է destination wallet-ին։ Այն մեկ payment-ը չի բաժանում մի քանի wallet-ների միջև, գումարը escrow-ում չի պահում և commission structure չի պարտադրում։ Եթե ձեր marketplace-ը commission է վերցնում, դա անում եք ձեր application logic-ում. կամ payment ստեղծելուց առաջ կարգավորում եք amount-ը, կամ settle եք անում ձեր սեփական wallet-ին և հետո առանձին բաշխում։

Ում համար է սա

  • Multi-vendor marketplace-ներ (ձեռագործ ապրանքներ, digital products, services)
  • SaaS platform-ներ, որոնք onboard են անում sub-merchant-ներ (Shopify-ի նման, white-label storefront-ներ)
  • Agency-ներ, որոնք մի քանի client-ի payments են կառավարում
  • WooCommerce multi-vendor setup-ներ (Dokan, WCFM), որտեղ յուրաքանչյուր vendor առանձին wallet ունի
  • Freelance platform-ներ, որտեղ յուրաքանչյուր freelancer payout-ը ստանում է ուղիղ

Ինչպես սկսել

  1. Մուտք գործեք ձեր MutoPay dashboard
  2. Գնացեք Settings և ստեղծեք master API key
  3. Օգտագործեք API docs՝ channel-ները programmatically ստեղծելու համար

Channel management-ի ամբողջական API-ն (create, update settlement, rotate keys, revoke, test webhooks) փաստաթղթավորված է այստեղ՝ mutopay.com/api/docs։