Files

3.2 KiB

Shayegan webservice notes (PDF + Sample_Shygun Postman)

Do not store real credentials in this file or in Git.

Known for boursecu (operator, 2026-10-05)

Store panel (app.boursemes.com) is the Laravel API, not Shayegan:

  • Shop domain: app.boursemes.com
  • node_server: https://app.boursemes.com/server
  • Listed LAN IP on that panel: 192.168.70.189 — different from Shayegan host; do not use as WsServer unless confirmed.

Shayegan webservice hosts (operator):

  • Public/static (Mashhad office): 2.180.4.172
  • Internal LAN: 192.168.109.222
  • Port: 2030
  • Candidate shayegan_base_url (no /api suffix):
    • From internet / remote app server: http://2.180.4.172:2030
    • From same LAN as حسابگر: http://192.168.109.222:2030
    • If 404, retry with /WsServer appended (Postman samples).

SQL Config for Shayegan Put/Get (inside JSON Config, not HTTP host):

  • Server: P-SERVER
  • DataBaseName: CYPRSD04
  • DBUserName: sa
  • Password: set only in DB settings.shayegan_db_password (never commit).

Still useful from operator: Auth*, ItemNumber, STNumber, bank account, amount/weight scales, metal wallet mode.

Base URL (PDF)

http://{host}[:port]{optionalBasePath}/api/{Endpoint}

PDF example: http://192.168.1.1/api/Document/Put
Postman often inserts /WsServer or /WsServer-3.13 before /api.
Operator port hint: 2030. SQL Server name is not the HTTP host.

Request shape

Every call body includes Config.
Get calls also include Domain (+ RowStart/RowCount query).
Put calls include PutObject array at the same level as Config (raw HTTP / Postman). PDF C# wrapper is named Put.

Config fields

Server, AllowRowSecurity, Level, DBUserName, DBPassword, DataBaseName, AuthUser, AuthPassword, Language
Auth: Shayegan cloud / Hesabgar / none (empty Auth*).

Endpoints used

Op Method path
Health (read) POST .../api/Account/Get?RowStart=0&RowCount=1
Trade POST .../api/Invoice/Put
Rial ledger POST .../api/Document/Put
Customer account POST .../api/Account/Put — MoinNumber (e.g. 12101), AccountName, UpdateKind: 3; response Number = تفصیلی stored as moshtari_code.

Put response (check even on HTTP 200)

{
  "Result": [{ "ErrorMessage": "", "Number": "6572", "GuId": "..." }],
  "ErrorMessage": "",
  "TokenString": ""
}

Treat non-empty top-level or per-row ErrorMessage as failure.

InvTyp (company)

1 تولید | 2 فروش | 3 خرید | 4 حواله | 5 رسید انبار | 6 برگشت فروش | 7 برگشت خرید | 8/9 تعدیل | 10 انتقال انبار | 11/12 سفارش | 13 پیش‌فاکتور

Customer buy copper → company فروش → InvTyp=2
Customer sell copper → company خرید → InvTyp=3

Document body (PDF)

Prefer AmountBed / AmountBes (also RialBed / RialBes exist).
Header: DocDescription, DocDate (yyyyMMdd), DocReference, GuId.

Invoice required (PDF)

AccountNumber, InvTyp, InvDate; line: item + STNumber + Quan + Price.
Ignore Postman keys with trailing spaces — PDF field names are authoritative.