Service - Payment Method Generic
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": {},
"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": {},
"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": {},
"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": {},
"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": {},
"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": {},
"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": {},
"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": {},
"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": {},
"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
}
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
- paymentMethodPropertyLabel
- paymentMethodProperty
- paymentMethodSalePropertyLabel
- 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