Service - Payment Method Generic

From Izara Wiki
Revision as of 09:27, 19 December 2025 by Jammy (talk | contribs)
Jump to navigation Jump to search

Overview

Handler service for generic payment methods that give text instruction to buyer at completion of sale. userPaymentMethod is also handled by each Payment Method Handler because there will be unique settings depending on the Payment Method.

Repository

https://bitbucket.org/izara-market-products/izara-market-products-payment-method-generic/src/master/

Schemas

ObjectSchemas

paymentMethodGeneric

  • ExtendObjType:paymentMethod
{
  "objectType": "paymentMethodGeneric",
  "extendObjType": {
    "serviceTag": "PaymentMethodManager",
    "objectType": "paymentMethod"
  },
  "addOnDataStructure": [
    {
      "type": "propertyValue"
    }
  ],
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    },
    "dynamoDB": {
      "storageType": "dynamoDB",
      "tableName": "PaymentMethodRecords",
      "serviceTag": "PaymentMethodManager"
    }
  },
  "fieldNames": {},
  "generatedBy": "userGenerated"
}

userPaymentMethodGeneric

  • ExtendObjType:userPaymentMethod
{
  "objectType": "userPaymentMethodGeneric",
  "extendObjType": {
    "serviceTag": "PaymentMethodManager",
    "objectType": "userPaymentMethod"
  },
  "addOnDataStructure": [
    {
      "type": "propertyValue"
    }
  ],
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    },
    "dynamoDB": {
      "storageType": "dynamoDB",
      "tableName": "UserPaymentMethodsRecords",
      "serviceTag": "PaymentMethodManager"
    }
  },
  "fieldNames": {},
  "generatedBy": "userGenerated"
}

userPaymentMethodGenericSalePropertyValue

{
  "objectType": "userPaymentMethodGenericSalePropertyValue",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "userPaymentMethodGenericSalePropertyValueId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "userPaymentMethodGenericSalePropertyValueId"
    }
  ],
  "generatedBy": "userGenerated"
}

userPaymentMethodGenericSalePropertyLabel

{
  "objectType": "userPaymentMethodGenericSalePropertyLabel",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "userPaymentMethodGenericSalePropertyLabelId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "userPaymentMethodGenericSalePropertyLabelId"
    }
  ],
  "generatedBy": "userGenerated"
}

property

paymentMethodGenericPropertyLabel

{
  "objectType": "paymentMethodGenericPropertyLabel",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "paymentMethodGenericPropertyLabelId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "paymentMethodGenericPropertyLabelId"
    }
  ],
  "generatedBy": "userGenerated"
}

paymentMethodGenericPropertyValue

{
  "objectType": "paymentMethodGenericPropertyValue",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "paymentMethodGenericPropertyValueId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "paymentMethodGenericPropertyValueId"
    }
  ],
  "generatedBy": "userGenerated"
}

userPaymentMethodGenericPropertyLabel

{
  "objectType": "userPaymentMethodGenericPropertyLabel",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "userPaymentMethodGenericPropertyLabelId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "userPaymentMethodGenericPropertyLabelId"
    }
  ],
  "generatedBy": "userGenerated"
}

userPaymentMethodGenericPropertyValue

{
  "objectType": "userPaymentMethodGenericPropertyValue",
  "addOnDataStructure": [
    {
      "type": "translation"
    }
  ],
  "canDelete": true,
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "fieldNames": {
    "userPaymentMethodGenericPropertyValueId": {
      "type": "string",
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "randomOnCreate": true,
      "validation": {
        "pattern": "^[a-zA-Z0-9-_]+$"
      },
      "storageResourceTags": [
        "graph"
      ]
    }
  },
  "identifiers": [
    {
      "type": "identifier",
      "fieldName": "userPaymentMethodGenericPropertyValueId"
    }
  ],
  "generatedBy": "userGenerated"
}

RelationshipSchemas

disabledPaymentMethodGenericPropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "paymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": true
  "canChangeToRelTypes": [
        {  
          serviceTag:"PaymentMethodGeneric",
          relationshipTag: "hasPaymentMethodGenericPropertyValue"
        },
   ]
}


disabledUserPaymentMethodGenericPropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
   
  "canMove": true
}



disabledUserPaymentMethodGenericSalePropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "hasUserPaymentMethodGenericSalePropertyValue"
    }
  ],
  "canMove": false
}

hasPaymentMethodGenericPropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "paymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledPaymentMethodGenericPropertyValue"
    }
  ],
  "canMove": false
}

hasUserPaymentMethodGenericPropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledUserPaymentMethodGenericPropertyValue"
    }
  ],
  "canMove": false
}

hasUserPaymentMethodGenericSalePropertyValue

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGeneric",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "from",
        "requiredOnCreate": false,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "to",
        "requiredOnCreate": true,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canChangeToRelTypes": [
    {
      "serviceTag": "PaymentMethodGeneric",
      "relationshipTag": "disabledUserPaymentMethodGenericSalePropertyValue"
    }
  ],
  "canMove": false
}

isPaymentMethodGenericPropertyLabel

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "paymentMethodGenericPropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}

isUserPaymentMethodGenericPropertyLabel

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericPropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}

isUserPaymentMethodGenericSalePropertyLabel

{
  "relationshipServiceTag": "PaymentMethodGeneric",
  "fieldNames": {
    "relId": {
      "type": "string",
      "generatedField": true,
      "requiredOnCreate": false,
      "optionalOnCreate": false,
      "canUpdate": false,
      "validation": {

      }
    }
  },
  "storageResources": {
    "graph": {
      "storageType": "graph",
      "graphServerTag": "GraphHandler"
    }
  },
  "links": [
    {
      "storageResourceTags": [
        "graph"
      ],
      "from": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyValue",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "many",
        "direction": "from",
        "requiredOnCreate": true,
        "handler": false
      },
      "to": {
        "objType": {
          "objectType": "userPaymentMethodGenericSalePropertyLabel",
          "serviceTag": "PaymentMethodGeneric"
        },
        "linkType": "one",
        "direction": "to",
        "requiredOnCreate": false,
        "handler": false
      },
      "canDelete": false
    }
  ],
  "canMove": false
}

DynamoDB tables

Standard Config Table Per Service

Configuration tags

{
	configTag: "PaymentMethodHandlerServiceNameTag"
	configKey: "PaymentMethodHandlerServiceNameTag"
	configValue: xxx // this own services ServiceNameTag, eg "PaymentMethodGeneric"
}
{
	configTag: "ProductGraphServiceName"
	configKey: "ProductGraphServiceName"
	configValue: xxx // eg: "ProductGraph"
}
{
	configTag: "PaymentMethodManagerServiceName"
	configKey: "PaymentMethodManagerServiceName"
	configValue: xxx // eg: "PaymentMethodManager"
}

Graph database

Service - Products Graph

Nodes

{
	nodeLabel: "paymentMethodGeneric",
	schema: {
		identifier: true,
		restrictProperties: true,
		restrictRelationships: true,
		properties: {
			paymentMethodId: {
				identifier: true, // create unique id from translation
			}
		},
	}
}
{
	nodeLabel: "{PaymentMethodManagerLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}", // "userPaymentMethod"
	schema: {
		identifier: true,
		restrictProperties: true,
		restrictRelationships: true,
		properties: {
			userPaymentMethodId: {
				identifier: true, // create unique id from user and uniqueMessageId
			},
			paymentMethodId: { // stored here to reduce queries finding matching methods, eg sellOffers
				immutable: true,
			},
			userPaymentMethodTag: { // users reference name for this userPaymentMethod
			},
		},
	}
}
  • adds a node between a user and a payment method
  • this is the node linked to by sellOfferPlans
{
	nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
{
	nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
{
	nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}PropertyLabel", // userPaymentMethodSalePropertyLabel
}
{
	nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
  • see DataSchemaLib
  • two sets of property nodes for userPaymentMethod, one for presentation properties (when browsing), paymentMethodSale for after sale, properties that get sent to the buyer, eg bank account number

Relationships

{
	relationshipType: "{PaymentMethodManagerLib.createIsPaymentMethodGraphRelationshipType()}", // "is_paymentMethod"
	schema: {
		elementCanBeRemoved: false,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
{
	relationshipType: "{PaymentMethodManagerLib.createIsUserPaymentMethodGraphRelationshipType()}", // "is_userPaymentMethod"
	schema: {
		elementCanBeRemoved: false,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
  • not setup logic to disable userPaymentMethods at this time
{
	relationshipType: "has_{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	relationshipType: "disabled_{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	relationshipType: "is_{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
{
	relationshipType: "has_{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	relationshipType: "disabled_{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	relationshipType: "is_{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
{
	relationshipType: "has_{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
{
	relationshipType: "disabled_{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
{
	relationshipType: "is_{PaymentMethodGenericLib.USERPAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}PropertyLabel",
}

Basic node schemas

{
	nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}", // "paymentMethod"
	schema: {
		identifier: true,
		restrictProperties: true,
		restrictRelationships: true,
		properties: {
			paymentMethodId: {
				identifier: true,
			},
			paymentMethodHandlerServiceNameTag: {
				immutable: true,
			},
		},
	}
}

Schema comes from BasicNodeSchemaLib

  1. paymentMethodPropertyLabel
  2. paymentMethodProperty
  3. paymentMethodSalePropertyLabel
  4. paymentMethodSaleProperty

Complex Filter requests

{
	filterType: "handlerPaymentMethod" //unique id is paymentMethodId
	type: "group",
	elements:
	[
		{
			type: "logical",
			logicalTag: "currencyId",
			comparison: "equals",
			value: "xx"
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "paymentMethodProperty",
				// see [[NPM module - Izara Core - Property Node|Complex Filter requests]]
			}
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "paymentMethodNameTranslation" //unique id is paymentMethodId
				type: "group",
				elements: 
				[
					{
						// see [[Service - Translations|Complex Filter requests]]
						type: "logical",
						logicalTag: "textTag_languageId_text",
						resultType: "paymentMethod",
						textTag: "paymentMethodName",
						languageId: "en",
						text: "Is a great term",
						subjectIdentifierPropertyName: "paymentMethodId",
						caseSensitive: true
					},
				]
			}
		},		
		...
	]
}
{
	filterType: "handlerUserPaymentMethod" //unique id is userPaymentMethodId
	type: "group",
	elements:
	[
		{
			type: "logical",
			logicalTag: "paymentMethodId",
			comparison: "equals",
			value: "xx"
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "paymentMethod",
				// see above
			}
		},		
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "userPaymentMethodProperty",
				// see [[NPM module - Izara Core - Property Node|Complex Filter requests]]
			}
		},
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "userPaymentMethodSaleProperty",
				// see [[NPM module - Izara Core - Property Node|Complex Filter requests]]
			}
		},
		...
	]
}

Data structure notes

  • Users can create new paymentMethods which are uniquely identified by their translation
  • Users can create userPaymentMethod nodes for their account which connect to paymentMethods, one user can have multiple userPaymentMethod links to the same paymentMethod, eg different Bank Transfer nodes for different bank accounts, which can be applied to sell offers in any combination

Working documents

Payment Method Generic