مستندات فنی
دریافت کالکشن های (Postman)
دانلود کالکشن های Postman:
1. دریافت لیست مکانهای موجود (Locations)
روش: GET
مسیر:
{{baseUrl}}/api/v3/marketplace/services/hub/locations
توضیحات:
این Endpoint اطلاعات مکانهای موجود را بازیابی میکند.
میتوان از این دادهها برای فیلتر کردن برنامهها بر اساس مکان استفاده کرد.
نمونه Response:
[ { "code": "1-11-183", "name": "Iran-Hormozgan-Kish", "native": "ایران-هرمزگان-کیش" }, { "code": "1-28-383", "name": "Iran-Tehran-Tehran", "native": "ایران-تهران-تهران" } ]
2. دریافت دستهبندیهای موجوددریافت لیست مکانهای موجود (Categories)
روش: GET
مسیر:
{{baseUrl}}/api/v3/marketplace/services/hub/categories?locationCode=1-28-383
توضیحات:
این Endpoint لیست دستهبندیهای موجود را برمیگرداند.
با ارسال locationCode , میتوان دستهبندیها را بر اساس کد مکان فیلتر کرد.
پارامتر locationCode اختیاری است; در صورت عدم ارسال، تمام دستهبندیها بازیابی خواهند شد.
نمونه Response:
[ { "code": 1, "index": 1, "title": "موزهها" }, { "code": 2, "index": 2, "title": "جاذبههای تاریخی" }, { "code": 3, "index": 3, "title": "جاذبههای گردشگری" } ]
3. دریافت لیست تمام برنامههای موجود (Programs)
روش: GET
مسیر:
{{baseUrl}}/api/v3/marketplace/services/hub/programs?page=1&take=100&locationCode=&categoryCodes= &categoryCodes=
توضیحات:
- صفحهبندی (Pagination):
- page: شماره صفحه
- take: تعداد آیتمها در هر صفحه
- فیلتر بر اساس مکان (Location Filter): پارامتر locationCode برای فیلتر برنامهها بر اساس مکان
- فیلتر بر اساس دستهبندی (Category Filter): پارامتر categoryCodes برای فیلتر برنامهها بر اساس چندین کد دستهبندی
- در صورت عدم ارسال هیچ فیلتر، تمام برنامههای موجود برگردانده خواهند شد.
نمونه Response:
[ { "id": "ac70d233-4f82-4a1d-b3a6-ac545d593e17", "supplyChainHojreId": "2da00def-cdee-1f2f-5e90-3a159ed5cf67", "supplyChainHojre": { "title": "تامین کننده دمو", "logo": "logo/SupplychainDemo-logo-main.png", "hojreCode": "A0002" }, "type": 2, "title": "جنگ شبانه دینامیت شو", "indexImage": "pfa/343863d1-ed4c-6132-2e32-3a159ee0de46.jpg", "isActive": true, "programCategory": { "code": 4, "title": "جنگها و نمایشها" }, "locationData": { "native": "ایران/هرمزگان/کیش", "name": "Iran/Hormozgan/Kish", "code": "1-11-183" } }, { "id": "f6195d07-6cb0-4305-a831-bdcb29d11b32", "supplyChainHojreId": "2da00def-cdee-1f2f-5e90-3a159ed5cf67", "supplyChainHojre": { "title": "تامین کننده دمو", "logo": "logo/SupplychainDemo-logo-main.png", "hojreCode": "A0002" }, "type": 1, "title": "سورتمه توچال ehsan", "indexImage": "pfa/daafe456-34ae-ca5d-49ed-3a159ee52100.jpg", "isActive": true, "programCategory": { "code": 8, "title": "سرگرمی هیجانانگیز" }, "locationData": { "native": "ایران/تهران/تهران", "name": "Iran/Tehran/Tehran", "code": "1-28-383" } } ]
اطلاعات کلیدی در : (Response)
فیلد | توضیحات |
---|---|
id | شناسه منحصر به فرد برنامه (UUID) |
supplyChainHoJreId | شناسه حجره در زنجیره تامین |
type | نوع برنامه (۱: سرویس، ۲: رویدادمحور) |
title | عنوان برنامه |
indexImage | تصویر شاخص برنامه |
isActive | وضعیت فعال بودن برنامه (فعال = true، غیر فعال = false) |
programCategory | اطلاعات دستهبندی برنامه |
locationData | اطلاعات مربوط به مکان برنامه |
انواع برنامهها (Program Types)
1. برنامههای نوع 1 (Service Programs)
- همیشه در دسترس، بدون وابستگی به زمان و رویداد
- ظرفیت نامحدود
- قابل استفاده در هر تاریخ و زمان
- بلیتهای قابل انتخاب ساعتی یا رویداد محور
- نام در سیستم: Service
2. برنامههای نوع 2 (Event-Based Programs)
- وابسته به رویدادهای مشخص با زمان و تاریخ معین
- دارای ظرفیت محدود
- امکان رزرو در بازه زمانی خاص
- بلیت فقط با زمان و تاریخ مشخص معتبر است
- نام در سیستم: Event-Based
نکته:
- ✅ فرآیند افزودن به سبد خرید (Shopping Cart) برای هر نوع برنامه متفاوت است.
- ✅قبل از استفاده، نیاز به نوع برنامه (Type) مشخص شود.
جمعبندی:
- Locations: لیست مکانهای موجود را بازیابی میکند.
- Categories: لیست دستهبندیها را (با امکان فیلتر بر اساس مکان) بازیابیمیگرداند.
- Programs: لیست برنامههای موجود را با فیلترهای صفحهبندی، مکان و دستهبندی ارائه میدهد.
دو نوع برنامه داریم:
- نوع ۱: سرویس (همیشه در دسترس، بدون سانس)
- نوع ۲: رویدادمحور (نیمهزماندار و سانس)
دریافت جزئیات برنامه (Program Details)
روش: GET
مسیر:
{{baseUrl}}/api/v3/marketplace/services/hub/program/detail?programId=&filteredProgramTicketTypes= &filteredProgramTicketTypes=
توضیحات پارامترها:
-
1. programId (اجباری):
- شناسه (UUID) منحصر به فرد برنامه که جزئیات آن باید بازیابی شود.
- مثال:
-
2. filteredProgramTicketTypes (اختیاری):
- فیلتر برای انواع بلیطهای برنامههای انتخاب شده.
- میتوانید چندین شناسه (UUID) مربوط به نوع بلیط را ارسال کنید.
- اگر ارسال نشود، تمامی انواع بلیطها به طور پیشفرض برگردانده خواهند شد.
ac70d233-4f82-4a1d-b3a6-ac545d593e17
خروجی (Response):
این Endpoint اطلاعات کامل برنامه را شامل میشود مانند:
- جزئیات برنامه: (شامل توضیحات و عکس)
- لیست انواع بلیطها: (سرویس فیلتر بر اساس برنامه)
- جزئیات مکان و نوع برنامه: (سرویس فیلتر بر اساس زمان و تاریخ)
نکته:
این endpoint در برنامههای نوع ۱ و ۲ قابل استفاده است، اما اطلاعات ارائهشده بر اساس نوع برنامه متفاوت خواهد بود.
نمونه Response برای یک برنامه نوع ۲ (Event-Based):
{ "id": "ac70d233-4f82-4a1d-b3a6-ac545d593e17", "type": 2, "title": "جنگ شبانه دینامیت شو", "description": "شو شبانه دینامیت شو، به عنوان یکی از پر مخاطب ترین شوهای شبانه در کشور، مفتخر است که پذیرای حضور گرم شما عزیران در جزیره کیش باشد. دینامیت شو با اجرای میلادصالحپور در جزیره زیبای کیش برگذار می شود. دینامیت شو برنامه مختلفی همچون مسابقه و اهدای جایزه , نمایش کمدی , موسیقی و دی جی , لیزر شو و … برگزار می شود. هر کدام از این بخش ها می تواند برای سلیقه های مختلف مورد پسند قرار گیرد.", "rules": "این بلیط طبق قوانین چارتری صادر گردیده و غیرقابل عودت و کنسلی میباشد.*اعتبار استفاده از بلیت،طبق تاریخ درج شده بر روی بلیت بوده و در صورت انقضا،بلیت فاقد اعتبار می باشد*شماره صندلی و ردیف مانند پرواز در هنگام مراجعه به پذیرش تعیین خواهد شد.* تهیه ی بلیت برای کودکان ۴ سال به بالا الزامی است*ورود هرگونه دوربین عکاسی و فیلمبرداری حرفه ای و نیمه حرفه ای به داخل سالن ممنوع می باشد عکاسی و فیلمبرداری حتی با گوشی موبایل و همچنین ضبط صدا در حین اجرای برنامه اکیدا ممنوع می باشد*", "indexImage": "pfa/343863d1-ed4c-6132-2e32-3a159ee0de46.jpg", "galleryImages": [ "pfa/343863d1-ed4c-6132-2e32-3a159ee0de46.jpg", "pfa/83ac3e3f-4a34-8b6c-4d56-3a159ee0de92.jpg", "SupplychainDemo/provider-program-license/-activity/6631d796-9b4b-0c87-1623-3a159ee0df10.jpg" ], "programCategory": { "code": 4, "index": 0, "title": "جنگها و نمایشها" }, "tag": null, "stationBasedRevoking": false, "programReference": "001", "location": { "code": "1-11-183", "name": "Iran/Hormozgan/Kish", "native": "ایران/هرمزگان/کیش" }, "ticketTypes": [ { "eventTicketTypeId": null, "programTicketTypeId": "adb3ebbf-3893-4778-894e-1cda16f25cd2", "referenceTicketTypeId": "00000000-0000-0000-0000-000000000000", "isNumberEqualsReferenceTicketType": false, "eventTitle": null, "title": "ECO | اکونومی", "description": null, "totalCapacity": 0, "remainingCapacity": 0, "totalQuotaCapacity": 0, "totalCharterdCapacity": 0, "isQoutaCapacity": false, "groupTitle": null, "index": 0, "maximumDiscountPercent": 0, "maximumDiscountCodeUse": 0, "maximumDiscountCodeUseDays": 0, "isCharter": false, "originSupplyChainHojreId": null, "stationBasedRevoking": false, "isDisabled": false, "ticketPrices": [] }, { "eventTicketTypeId": null, "programTicketTypeId": "344f72de-6706-4969-a18f-dda6eed7baa3", "referenceTicketTypeId": "00000000-0000-0000-0000-000000000000", "isNumberEqualsReferenceTicketType": false, "eventTitle": null, "title": "VIP | وی آی پی", "description": null, "totalCapacity": 0, "remainingCapacity": 0, "totalQuotaCapacity": 0, "totalCharterdCapacity": 0, "isQoutaCapacity": false, "groupTitle": null, "index": 0, "maximumDiscountPercent": 0, "maximumDiscountCodeUse": 0, "maximumDiscountCodeUseDays": 0, "isCharter": false, "originSupplyChainHojreId": null, "stationBasedRevoking": false, "isDisabled": false, "ticketPrices": [] } ], "eventSans": [ { "dateTime": "2025-01-23T00:00:00+03:30", "persianDate": "پنجشنبه 4 بهمن", "events": [ { "excuteTime": "2025-01-23T20:00:00+03:30", "eventId": "6ecbad64-8c20-49fc-bf1b-ccbc9bf0adde", "start": "20:00", "end": "23:00", "endReservation": "21:00", "label": "سانس 20", "description": null, "capacity": 20, "ticketTypes": [ { "eventTicketTypeId": "b801e10f-b9f1-436e-8592 ", "programTicketTypeId": "adb3ebbf-3893-4778-894e", "referenceTicketTypeId": "00000000-0000-0000-0000-", "isNumberEqualsReferenceTicketType": false, "eventTitle": "سانس 20", "title": "ECO | اکونومی", "description": null, "totalCapacity": 600, "remainingCapacity": 20, "totalQuotaCapacity": 0, "totalCharterdCapacity": 0, "isQoutaCapacity": false, "groupTitle": null, "index": 1, "maximumDiscountPercent": 100, "maximumDiscountCodeUse": 0, "maximumDiscountCodeUseDays": 0, "isCharter": false, "originSupplyChainHojreId": null, "stationBasedRevoking": false, "isDisabled": false, "ticketPrices": [ { "ticketPrice": 2400000, "commissionPrice": 960000, "discountPrice": 0, "buyPrice": 1440000, "commissionPriceCategory": { "commissionPriceCategoryId": "da127042-be", "title": "شبکه سراسری فروش", "currency": 1, "currencyRate": 1, "type": 1 }, "beneficiaries": null } ] }, { "eventTicketTypeId": "62b1fa69-61a8-4920-9745- ", "programTicketTypeId": "344f72de-6706-4969-a18f- ", "referenceTicketTypeId": "00000000-0000-0000-0000-", "isNumberEqualsReferenceTicketType": false, "eventTitle": "سانس 20", "title": "VIP | وی آی پی", "description": null, "totalCapacity": 230, "remainingCapacity": 20, "totalQuotaCapacity": 0, "totalCharterdCapacity": 0, "isQoutaCapacity": false, "groupTitle": null, "index": 2, "maximumDiscountPercent": 100, "maximumDiscountCodeUse": 0, "maximumDiscountCodeUseDays": 0, "isCharter": false, "originSupplyChainHojreId": null, "stationBasedRevoking": false, "isDisabled": false, "ticketPrices": [ { "ticketPrice": 3200000, "commissionPrice": 800000, "discountPrice": 0, "buyPrice": 2400000, "commissionPriceCategory": { "commissionPriceCategoryId": "da127042", "title": "شبکه سراسری فروش", "currency": 1, "currencyRate": 1, "type": 1 }, "beneficiaries": null } ] } ] } ] }, ] "isManifestNeeded": false, "isManifestUniqueNumberNeeded": false, "isActive": true, "supplyChainHojreId": "2da00def-cdee-1f2f-5e90-", "supplyChainHojre": { "id": "2da00def-cdee-1f2f-5e90-3a159ed5cf67", "tenantId": "578b1dfa-4998-bbfd-f0ea-3a159ed7988c", "title": "تامین کننده دمو", "logo": "logo/SupplychainDemo-logo-main.png", "hojreCode": "A0002", "type": 100 } }
نکات کلیدی در Response:
-
وضعیت برنامه (isActive):
- true: برنامه فعال است و امکان رزرو وجود دارد.
- false: برنامه غیرفعال است و امکان رزرو ندارد.
-
رویدادها (events):
- شامل تاریخ، زمان شروع و پایان، ظرفیت کل و ظرفیت باقیمانده برای هر رویداد است.
- جزئیات بلیطها به همراه قیمت و درصد تخفیف ارائه شده است.
-
انواع بلیط (ticketTypes):
- اطلاعات ظرفیت کل و ظرفیت باقیمانده بلیطها مشخص شده است.
- برای مدیریت بهتر تعداد مهمانها استفاده میشود.
- توصیه برای رویدادهای خاص:
- اگر برنامه از نوع ۲ (Event-Based) باشد، بهتر است از یک Endpoint اختصاصی برای دریافت لیست رویدادها استفاده شود.
دلیل نیاز به تمام دادهها:
تمام دادههای ارائه شده شامل اطلاعات برنامه، رویدادها و بلیطها برای رزرو بلیط مورد نیاز هستند تا رزرو مطابق با ظرفیت و شرایط هر رویداد انجام شود.
فیلدهای isManifestNeeded و isManifestUniqueNumberNeeded
فیلد | مقدار | توضیحات |
---|---|---|
isManifestNeeded | true | علاوه بر نام، وارد کردن کد ملی یا شماره پاسپورت الزامی است . |
isManifestUniqueNumberNeeded | false | . فقط وارد کردن نام کافی است |
ثبت اطلاعات هویتی (نام و نام خانوادگی) اجباری است. نیازی به ثبت اطلاعات هویتی نیست.
کاربرد:
این مقادیر برای رویدادهای رسمی یا برنامههایی که نیاز به کنترل هویت دارند استفاده میشوند.
اگر true باشد، سیستم باید فیلدهای اضافی برای ثبت این اطلاعات در فرآیند رزرو فراهم کند.
نتیجهگیری:
این Response تمام اطلاعات مورد نیاز برای رزرو بلیط در برنامههای نوع ۲ (Event-Based) را فراهم میکند.
برای دریافت لیست جامعتر رویدادها، بهتر است از یک Endpoint اختصاصی استفاده شود.
در صورتی که شناسایی افراد در رزرو الزامی باشد، مقادیر isManifestNeeded و isManifestUniqueNumberNeeded تعیین میکنند که چه اطلاعاتی باید ثبت شوند.
5. دریافت انواع بلیطهای مرتبط با برنامههای نوع Service Programs (Type: 1)
روش: GET
مسیر:
{{baseUrl}}/api/v3/marketplace/services/hub/program/ticket-types?programId=&supplyChainHojreId=
توضیحات پارامترها:
-
1. programId (ضروری):
شناسه منحصربهفرد برنامهای که میخواهید اطلاعات بلیط آن را دریافت کنید. -
2. supplyChainHojeId (ضروری):
شناسه زنجیره تامین خاصی که به برنامه مرتبط است.
ویژگیها:
- این Endpoint فقط برای برنامههای نوع 1 (Service) استفاده میشود.
- این بلیطها نوع ظاهرشدنی متغیری دارند و تاریخ خاصی یا زمان خاصی تعریف نشده است.
- اطلاعات خروجی شامل لیست انواع بلیطها همراه توضیحات و قیمتها است.
📌نمونه Response:
[ { "eventTicketTypeId": null, "programTicketTypeId": "0520e387-41d0-46d9-80c2-02940d574e42", "referenceTicketTypeId": "00000000-0000-0000-0000-000000000000", "isNumberEqualsReferenceTicketType": false, "eventTitle": "WorkingHoursCollection", "title": "سورتمه ( تک نفره )", "description": null, "totalCapacity": 0, "remainingCapacity": 0, "totalQuotaCapacity": 0, "totalCharterdCapacity": 0, "isQoutaCapacity": false, "groupTitle": null, "index": 1, "maximumDiscountPercent": 100, "maximumDiscountCodeUse": 0, "maximumDiscountCodeUseDays": 0, "isCharter": false, "originSupplyChainHojreId": null, "stationBasedRevoking": false, "isDisabled": false, "ticketPrices": [ { "ticketPrice": 900000, "commissionPrice": 9000, "discountPrice": 0, "buyPrice": 891000, "commissionPriceCategory": { "commissionPriceCategoryId": "2fce79c7-864f-4d48-bf03", "title": "شبکه سراسری فروش", "currency": 1, "currencyRate": 1, "type": 1 }, "beneficiaries": null } ] }, { "eventTicketTypeId": null, "programTicketTypeId": "9bee5a86-29cb-436d-8809-4f595dcbc2c5", "referenceTicketTypeId": "00000000-0000-0000-0000-000000000000", "isNumberEqualsReferenceTicketType": false, "eventTitle": "WorkingHoursCollection", "title": "سورتمه ( همراه با کودک 4 تا 8 ساله )", "description": null, "totalCapacity": 0, "remainingCapacity": 0, "totalQuotaCapacity": 0, "totalCharterdCapacity": 0, "isQoutaCapacity": false, "groupTitle": null, "index": 2, "maximumDiscountPercent": 100, "maximumDiscountCodeUse": 0, "maximumDiscountCodeUseDays": 0, "isCharter": false, "originSupplyChainHojreId": null, "stationBasedRevoking": false, "isDisabled": false, "ticketPrices": [ { "ticketPrice": 1250000, "commissionPrice": 12500, "discountPrice": 0, "buyPrice": 1237500, "commissionPriceCategory": { "commissionPriceCategoryId": "2fce79c7-864f-4d48-bf03", "title": "شبکه سراسری فروش", "currency": 1, "currencyRate": 1, "type": 1 }, "beneficiaries": null } ] } ]
اطلاعات کلیدی برای سبد خرید:
فیلد | توضیحات |
---|---|
programTicketTypeId | شناسه نوع بلیط برنامه (مثال: 0520e387-41da-4d69-8c42-02940d5744e2) |
commissionPriceCategoryId | شناسه دستهبندی قیمت کمیسیون (مثال: 2fce79c7-864f-4d48-bf03) |
ticketPrice | قیمت اصلی بلیط |
commissionPrice | مقدار کمیسیون بلیط |
discountPrice | مقدار تخفیف (در صورت وجود) |
buyPrice | قیمت نهایی خرید پس از تخفیف و کمیسیون |
چرا بلیطها چند قیمت دارند؟
- ✅ تفکیک قیمت برای گروههای مختلف کاربران: مثلاً افراد محلی و گردشگران خارجی.
- ✅ قیمت متفاوت در کانالهای فروش: قیمت در گیشه، B2B و B2C ممکن است متفاوت باشد.
- ✅ مدیریت سیاستهای تخفیف و کمیسیون: هر بلیط میتواند شامل درصد تخفیف و کمیسیون مجزا باشد.
6. دریافت لیست رویدادها برای برنامههای نوع Event-Based (Type:2)
روش: GET
مسیر:
{{baseUrl}}/api/v3/marketplace/services/hub/events?programId=&supplyChainHojreId= &filteredProgramTicketTypes=&start=2025-01-23&end=2025-01-29
توضیحات پارامترها:
پارامتر | وضعیت | توضیحات |
---|---|---|
programId | ضروری | شناسه برنامه موردنظر |
supplyChainHojreId | ضروری | شناسه حجره تأمینکننده |
filteredProgramTicketTypes | اختیاری | فیلتر بر اساس نوع بلیط |
start و end | اختیاری | بازه زمانی برای دریافت رویدادها |
محدودیتهای زمانی:
اگر end و start نشوند، سیستم لیست رویدادها را برای ۳۰ روز آینده ارائه میدهد اما ticketTypes مقدار null خواهد داشت.
اگر end و start ارسال شوند و بازه زمانی بیشتر از ۷ روز باشد – ticketTypes مقدار null خواهد داشت.
[ { "dateTime": "2025-01-23T00:00:00+03:30", "persianDate": "پنجشنبه 4 بهمن", "events": [ { "excuteTime": "2025-01-23T20:00:00+03:30", "eventId": "6ecbad64-8c20-49fc-bf1b-ccbc9bf0adde", "start": "20:00", "end": "23:00", "endReservation": "21:00", "label": "سانس 20", "description": null, "capacity": 20, "ticketTypes": [ { "eventTicketTypeId": "b801e10f-b9f1-436e-8592", "programTicketTypeId": "adb3ebbf-3893-4778-894e", "referenceTicketTypeId": "00000000-0000-0000-0000", "isNumberEqualsReferenceTicketType": false, "eventTitle": "سانس 20", "title": "ECO | اکونومی", "description": null, "totalCapacity": 600, "remainingCapacity": 20, "totalQuotaCapacity": 0, "totalCharterdCapacity": 0, "isQoutaCapacity": false, "groupTitle": null, "index": 1, "maximumDiscountPercent": 100, "maximumDiscountCodeUse": 0, "maximumDiscountCodeUseDays": 0, "isCharter": false, "originSupplyChainHojreId": null, "stationBasedRevoking": false, "isDisabled": false, "ticketPrices": [ { "ticketPrice": 2400000, "commissionPrice": 960000, "discountPrice": 0, "buyPrice": 1440000, "commissionPriceCategory": { "commissionPriceCategoryId": "da127042-beb2-4", "title": "شبکه سراسری فروش", "currency": 1, "currencyRate": 1, "type": 1 }, "beneficiaries": null } ] }, { "eventTicketTypeId": "62b1fa69-61a8-4920-9745", "programTicketTypeId": "344f72de-6706-4969-a18f", "referenceTicketTypeId": "00000000-0000-0000-0000", "isNumberEqualsReferenceTicketType": false, "eventTitle": "سانس 20", "title": "VIP | وی آی پی", "description": null, "totalCapacity": 230, "remainingCapacity": 20, "totalQuotaCapacity": 0, "totalCharterdCapacity": 0, "isQoutaCapacity": false, "groupTitle": null, "index": 2, "maximumDiscountPercent": 100, "maximumDiscountCodeUse": 0, "maximumDiscountCodeUseDays": 0, "isCharter": false, "originSupplyChainHojreId": null, "stationBasedRevoking": false, "isDisabled": false, "ticketPrices": [ { "ticketPrice": 3200000, "commissionPrice": 800000, "discountPrice": 0, "buyPrice": 2400000, "commissionPriceCategory": { "commissionPriceCategoryId": "da127042-beb2-", "title": "شبکه سراسری فروش", "currency": 1, "currencyRate": 1, "type": 1 }, "beneficiaries": null } ] } ] } ] } ]
۷. دریافت جزئیات بلیطهای یک رویداد خاص
روش: GET
مسیر:
{{baseUrl}}/api/v3/marketplace/services/hub/event/ticket-types?eventId=&supplyChainHojreId=
✅ شامل اطلاعات قیمت، ظرفیت، و دستهبندی کمیسیون بلیطها
۸. ایجاد سبد خرید (Shopping Cart)
روش: POST
مسیر:
Base URL /api/v3/marketplace/services/hub/shopping-cart-groups?shoppingCartId=
✅ شامل لیستی از برنامهها و بلیطهای انتخابشده
✅ shoppingCartId اختیاری: اگر ارسال نشود، سیستم یک شناسه جدید میسازد.
نمونه Body برای برنامه Type:2 (Event-Based):
[ { "supplyChainHojreId": "2da00def-cdee-1f2f-5e90-3a159ed5cf67", "eventId": "ac71a759-561f-43f3-ae73-0dd5753f741f", "programId": "709ec9e4-0b8a-4603-b5a2-571c2c2782d4", "tickets": [ { "programTicketTypeId": "03c3a39e-3225-4c7b-a43e-6c446d6542da", "eventTicketTypeId": "62b1fa69-61a8-4920-9745-a08a0325e05c", "commissionPriceCategoryId": "8e6d7b97-85c5-418e-8ecd-7bbbefa32b61" }, { "programTicketTypeId": "03c3a39e-3225-4c7b-a43e-6c446d6542da", "eventTicketTypeId": "62b1fa69-61a8-4920-9745-a08a0325e05c", "commissionPriceCategoryId": "8e6d7b97-85c5-418e-8ecd-7bbbefa32b61" } ] }, { "supplyChainHojreId": "5d31600a-0f47-96d2-9c26-3a16e0b2fee9", "programId": "24b0a6f6-0bbd-4f7a-8ec5-64ad759e5381", "tickets": [ { "programTicketTypeId": "b205f2c7-7729-4c45-9e2b-60121a7c2e94", "manifestUniqueNumber": "پوریا شریعت زاده", "manifestUniqueName": "0921558961", "commissionPriceCategoryId": "9e28abf7-71de-497b-8d1d-deb46c709347" } ] } ]
✅ برای هر بلیط باید یک آبجکت جداگانه ارسال شود (فاقد quantity)
ایجاد سبد خرید (Shopping Cart)
روش: POST
مسیر:
{{baseUrl}}/api/v3/marketplace/services/hub/shopping-cart-groups?shoppingCartId=
📌 توضیحات پارامترها:
پارامتر | وضعیت | توضیحات |
---|---|---|
shoppingCartId | اختیاری | اگر ارسال شود، سیستم از همین شاسه برای سبد خرید استفاده میکند. در غیر این صورت، یک شاسه جدید ایجاد خواهد شد. |
supplyChainHojreId | ضروری | شناسه حجره زنجیره تامین. |
programId | ضروری | شناسه برنامه مربوط به برنامهها (فقط برای برنامههای Type:2 اجباری است). |
programTicketTypeId | ضروری | شناسه نوع بلیط برنامهها. |
tickets | ضروری | آیتمهای از اطلاعات بلیطها. |
eventId | فقط برای Type:2 | شناسه رویداد مربوطه (فقط در برنامههای Type:2). |
eventTicketTypeId | فقط برای Type:2 | شناسه نوع بلیط رویداد (فقط در برنامههای Type:2). |
manifestUniqueName | اختیاری | نام مسافر (در صورت نیاز به احراز هویت). |
manifestUniqueNumber | اختیاری | شماره منحصربهفرد مسافر (در صورت نیاز به احراز هویت). |
commissionPriceCategoryId | ضروری | شناسه دستهبندی کمیسیون برای مدیریت قیمت بلیط. |
✅ نکته:
برای برنامههای Type:1 (سرویسها) نیازی به eventId و eventTicketTypeId نیست.اگر مقدار isManifestUniqueNumberNeeded برابر true باشد، ارسال manifestUniqueName و manifestUniqueNumber الزامی است.
نمونه Body برای برنامه نوع 2 (Event-Based) 📌
[ { "supplyChainHojreId": "2da00def-cdee-1f2f-5e90-3a159ed5cf67", "eventId": "ac71a759-561f-43f3-ae73-0dd5753f741f", "programId": "709ec9e4-0b8a-4603-b5a2-571c2c2782d4", "tickets": [ { "programTicketTypeId": "03c3a39e-3225-4c7b-a43e-6c446d6542da", "eventTicketTypeId": "62b1fa69-61a8-4920-9745-a08a0325e05c", "manifestUniqueNumber": "1234567890", "manifestUniqueName": "Ali Rezaei", "commissionPriceCategoryId": "8e6d7b97-85c5-418e-8ecd-7bbbefa32b61" } ] } ]
نمونه Body برای برنامه نوع 1 (Service) 📌
[ { "supplyChainHojreId": "5d31600a-0f47-96d2-9c26-3a16e0b2fee9", "programId": "24b0a6f6-0bbd-4f7a-8ec5-64ad759e5381", "tickets": [ { "programTicketTypeId": "b205f2c7-7729-4c45-9e2b-60121a7c2e94", "manifestUniqueNumber": "9876543210", "manifestUniqueName": "Sara Mohammadi", "commissionPriceCategoryId": "9e28abf7-71de-497b-8d1d-deb46c709347" } ] } ]
تفاوت بین برنامههای Type:1 و Type:2 در Shopping Cart 📌
ویژگی | برنامه نوع 1 (Service) | برنامه نوع 2 (Event-Based) |
---|---|---|
eventId | نیاز به ندارد ❌ | نیاز به دارد ✅ |
eventTicketTypeId | نیاز به ندارد ❌ | نیاز به دارد ✅ |
نوع ظرفیت | نامحدود | محدود به ظرفیت رویداد |
زمان خرید | هر زمان | فقط قبل از برگزاری رویداد |
✅ نکته:
در برنامههای Type:2، رزرو فقط برای تاریخ و ساعت مشخص امکانپذیر است.
در برنامههای Type:1، بلیطها همیشه در دسترس هستند و نیازی به انتخاب رویداد خاصی ندارند.
📌نکته مهم: نحوه ارسال تعداد بلیطها (Quantity)
📌ساختار Shopping Cart تعداد بليت (Quantity) را در نظر نمیگیرد.
✅ اگر مشتری چندین بلیط از یک نوع بخواهد، باید هر بلیط را بصورت جداگانه در آرایه tickets ارسال کنید.
نمونه Body برای 2 بلیط از نوع خاص در برنامه Type:2
"tickets": [ { "programTicketTypeId": "03c3a39e-3225-4c7b-a43e-6c446d6542da", "eventTicketTypeId": "62b1fa69-61a8-4920-9745-a08a0325e05c", "manifestUniqueNumber": "1234567890", "manifestUniqueName": "Ali Rezaei", "commissionPriceCategoryId": "8e6d7b97-85c5-418e-8ecd-7bbbefa32b61" }, { "programTicketTypeId": "03c3a39e-3225-4c7b-a43e-6c446d6542da", "eventTicketTypeId": "62b1fa69-61a8-4920-9745-a08a0325e05c", "manifestUniqueNumber": "1234567891", "manifestUniqueName": "Sara Mohammadi", "commissionPriceCategoryId": "8e6d7b97-85c5-418e-8ecd-7bbbefa32b61" } ]
نهاییسازی سبد خرید (Finalizing Shopping Cart)
روش: PATCH
مسیر:
api/v3/marketplace/services/hub/finalizing-shopping-cart?shoppingCartId=
✅ Endpoint برای نهایی کردن خرید و پرداخت استفاده میشود.
✅ پس از موفقیت، سیستم لینک فاکتور و کد QR بلیطها را ارائه خواهد کرد.
📌 Body درخواست:
{ "paymentMethod": 100, "bankGateway": 0, "customerFullName": "Ali Rezaei", "customerMobile": "09111111111", "customerAddress": "تهران، خیابان ولیعصر", "internalTrackingCode": "ABC123456", "description": "پرداخت بلیط نمایش", "totalDiscount": 50000.00, "sendTicketSms": true }
📌 توضیحات پارامترهای Body:
پارامتر | وضعیت | توضیحات |
---|---|---|
paymentMethod | ضروری | روش پرداخت (100 برای پرداخت آنلاین) |
bankGateway | ضروری | درگاه پرداخت ( 0مقدار پیشفرض) |
customerFullName | ضروری | نام کامل مشتری |
customerMobile | ضروری | شماره موبایل مشتری برای ارسال اطلاعات |
customerAddress | اختیاری | آدرس مشتری (در صورت نیاز) |
internalTrackingCode | اختیاری | کد پیگیری داخلی برای سفارش |
description | اختیاری | توضیحات مربوط به پرداخت |
totalDiscount | اختیاری | مبلغ کل تخفیف اعمالشده |
sendTicketSms | اختیاری | اگر true باشد، بلیط از طریق پیامک ارسال میشود |
📌 خروجی (Response) پس از نهاییسازی خرید
✅ لینک فاکتور و بلیطها
✅ کد QR برای هر بلیط و گروه بلیط
{ "invoiceUrl": "https://1va.ir/invoice/12345", "tickets": [ { "ticketUrl": "https://1va.ir/ticket/67890", "qrCode": "data:image/png;base64,iVBORw0KGgoAAA ANSUhEUgAA..." } ] }