Crypto վճարումներ marketplace-ների համար. մեկ հաշիվ, յուրաքանչյուր վաճառողի դրամապանակ
Եթե 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-ը այսպիսին է.
- Vendor-ը գրանցվում է ձեր platform-ում, մուտքագրում է իր wallet address-ը և preferred chain-ը
- Ձեր backend-ը կանչում է
POST /api/merchant/channels՝ channel ստեղծելու համար - Ձեր backend-ը կանչում է
PUT /api/merchant/channels/:id/settlement՝ նրա wallet տվյալներով - Դուք ձեր database-ում պահում եք channel ID-ն և API key-ը՝ կապելով տվյալ vendor-ի հետ
- Այս 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-ը ստանում է ուղիղ
Ինչպես սկսել
- Մուտք գործեք ձեր MutoPay dashboard
- Գնացեք Settings և ստեղծեք master API key
- Օգտագործեք API docs՝ channel-ները programmatically ստեղծելու համար
Channel management-ի ամբողջական API-ն (create, update settlement, rotate keys, revoke, test webhooks) փաստաթղթավորված է այստեղ՝ mutopay.com/api/docs։