generated: '2026-08-13' method: derived source: https://open.ezrpro.com/api/Book + https://open.ezrpro.com/api/Doc/{id} docs: https://open.ezrpro.com/#/apiFile note: >- Derived from the 236 interface definitions EZR serves anonymously from its documentation API. Each definition carries a typed ReqParam/ResParam tree, so entities and the fields that join them are read, not guessed. There is no OpenAPI and therefore no $ref graph; relationships below are inferred from shared identifier field names across interfaces and are marked with the evidence that supports them. domains: - name: "微商城" description: "WeChat mall — mall products, orders, returns, refunds, exchanges, logistics" interface_count: 62 - name: "会员主数据" description: "Member master data — registration, card issuance, profile, tags, grades, paid cards" interface_count: 48 - name: "会员券" description: "Coupons — coupon pools, issuance, redemption, transfer, cancellation" interface_count: 28 - name: "会员积分" description: "Loyalty points — balance, ledger, lock/unlock/spend, points-for-cash discounts" interface_count: 27 - name: "基础数据" description: "Base data — stores, staff, store groups, districts, products, media" interface_count: 21 - name: "第三方平台" description: "Third-party platform — member binding/unbinding, aggregate payment" interface_count: 16 - name: "礼品卡" description: "Gift / stored-value cards" interface_count: 14 - name: "销售数据" description: "Sales data — member receipts, transaction upload, transaction paging" interface_count: 7 - name: "微商城(外部商城分销)" description: "WeChat mall (external mall distribution) — third-party mall order and product sync" interface_count: 7 - name: "消息接口" description: "Messaging — SMS send/relay, WeChat template messages" interface_count: 3 - name: "接口拓展信息" description: "Interface extension references — enumerations and formats" interface_count: 3 identifiers: note: The identifier vocabulary that ties the model together, with the number of interfaces that declare each as a request parameter. fields: - {field: OldCode, occurrences: 74, meaning: 客户卡号 — the merchant-side (offline) member card number generated by the brand POS/ERP; the cross-domain member identity} - {field: Code, occurrences: 52, meaning: EZR线上卡号 — the online card number generated by EZR} - {field: ShopCode, occurrences: 55, meaning: store code — every asset in EZR is bound to a store} - {field: MobileNo, occurrences: 53, meaning: member mobile number — the practical natural key for lookup and de-duplication} - {field: WxOpenID, occurrences: 23, meaning: WeChat OpenID for the member} - {field: WxUnionID, occurrences: 20, meaning: WeChat UnionID for the member} - {field: TradeNo, occurrences: 18, meaning: transaction number} - {field: OrderCode, occurrences: 13, meaning: mall order code} - {field: SaleNo, occurrences: 8, meaning: sales receipt number} - {field: CoupGrpId/CoupGrpCode, occurrences: 17, meaning: coupon pool (券库) identifier} - {field: UserCode, occurrences: 8, meaning: staff/guide (导购) code} - {field: ExternalOrderId, occurrences: 7, meaning: external mall order identifier for distribution partners} - {field: EzrVipId, occurrences: 5, meaning: EZR internal member id, carried on push callbacks} entities: - name: Member (会员) identifiers: [OldCode, Code, EzrVipId, MobileNo, WxOpenID, WxUnionID] interfaces: ["1190", "1201", "1202", "1203", "12011", "1195", "1242"] note: >- Dual-identity by design. The offline card number (OldCode) is issued by the brand system and is the global identity; the online card number (Code) is issued by EZR for internal use. The published integration flow keys reconciliation on MobileNo when OldCode is empty. - name: Store (门店) identifiers: [ShopCode] interfaces: ["1000", "1004", "1010", "1002", "1003", "101201"] note: EZR states all assets and permission sets are bound to a store, which is why ShopCode appears on 55 interfaces. - name: Staff / Guide (员工 / 导购) identifiers: [UserCode, SalerCode] interfaces: ["1001", "1005", "1006"] - name: PointsLedger (积分) identifiers: [OldCode, Code] interfaces: ["1188", "1204", "1206", "1224", "1232", "1233", "1234", "1244", "1602", "1603", "1604"] note: Supports a lock / unlock / spend-locked three-phase pattern (1232/1233/1234) for reserving points during checkout. - name: Coupon (优惠券) and CouponPool (券库) identifiers: [CoupGrpId, CoupGrpCode] interfaces: ["1300", "1301", "1302", "1307", "1308", "1309", "1311", "1313", "1323"] - name: SalesReceipt (小票 / 销售数据) identifiers: [SaleNo, TradeNo, OldCode, ShopCode] interfaces: ["1220", "1247"] - name: Product (商品) identifiers: [ItemNo] interfaces: ["1104", "14026", "14010", "20051", "2031"] - name: MallOrder (商城订单) identifiers: [OrderCode, ExternalOrderId, ReturnCode] interfaces: ["2001", "2016", "2017", "2018", "2020", "2021", "2022", "2023", "2024", "2026", "2030", "2051", "2113"] - name: GiftCard (礼品卡 / 储值卡) identifiers: [Code] interfaces: ["礼品卡 category — 14 interfaces"] - name: ThirdPartyBinding (第三方平台绑定) identifiers: [MobileNo, OldCode] interfaces: ["119001", "118901", "118902", "118904", "118905"] relationships: - {from: Member, to: Store, kind: belongs_to, via: RegShop/ServShop, evidence: registration store and service store are member fields on 1201/1202/1203} - {from: Member, to: PointsLedger, kind: has_many, via: OldCode, evidence: every points interface keys on the member card number} - {from: Member, to: Coupon, kind: has_many, via: OldCode, evidence: 1307 会员券获取 returns coupons for a member card number} - {from: Member, to: SalesReceipt, kind: has_many, via: OldCode, evidence: 1220/1247 upload and page member transactions} - {from: Member, to: ThirdPartyBinding, kind: has_many, via: MobileNo, evidence: 118901/118904 query binding state by mobile number} - {from: Coupon, to: CouponPool, kind: belongs_to, via: CoupGrpId, evidence: coupons are issued from a named pool (券库)} - {from: SalesReceipt, to: Store, kind: belongs_to, via: ShopCode} - {from: SalesReceipt, to: Staff, kind: belongs_to, via: SalerCode} - {from: MallOrder, to: Member, kind: belongs_to, via: OldCode} - {from: MallOrder, to: Product, kind: has_many, via: ItemNo} - {from: MallOrder, to: Store, kind: belongs_to, via: ShopCode} - {from: Staff, to: Store, kind: belongs_to, via: ShopCode} render: null