Service - Payment Method Generic: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 92: Line 92:
{
{
nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
</syntaxhighlight>
<syntaxhighlight lang="JavaScript">
{
nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}PropertyLabel", // paymentMethodSalePropertyLabel
}
{
nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
}
</syntaxhighlight>
</syntaxhighlight>
* see [[NPM module - Izara Core - Property Node|DataSchemaLib]]
* see [[NPM module - Izara Core - Property Node|DataSchemaLib]]
* two sets of property nodes, one for presentation properties (when browsing), paymentMethodSale for after sale, properties that get sent to the buyer, eg bank account number


=== Relationships ===
=== Relationships ===
Line 100: Line 109:
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
relationshipType: "{PaymentMethodGenericLib.createIsPaymentMethodGraphRelationshipType()}", // "isPaymentMethod"
relationshipType: "{PaymentMethodGenericLib.createIsPaymentMethodGraphRelationshipType()}", // "is_PaymentMethod"
schema: {
schema: {
elementCanBeRemoved: false,
elementCanBeRemoved: false,
Line 121: Line 130:
{
{
relationshipType: "is_{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
relationshipType: "is_{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
</syntaxhighlight>
<syntaxhighlight lang="JavaScript">
{
relationshipType: "has_{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
{
relationshipType: "disabled_{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
{
relationshipType: "is_{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}PropertyLabel",
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 133: Line 153:
# paymentMethodProperty
# paymentMethodProperty
#* [[Service - Translations Graph]]
#* [[Service - Translations Graph]]
# paymentMethodSalePropertyLabel
#* [[Service - Translations Graph]]
# paymentMethodSaleProperty
#* [[Service - Translations Graph]]
= 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 =
= Working documents =

Revision as of 12:07, 18 October 2021

Overview

Handler service for any otherwise un-handled payment methods.

Repository

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

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: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}", // "paymentMethod"
	schema: {
		identifier: true,
		restrictProperties: true,
		restrictRelationships: true,
		properties: {
			paymentMethodId: {
				identifier: true, // create unique id from translation
			},
			paymentMethodHandlerServiceNameTag: {
				immutable: true,
			},
		},
	}
}
{
	nodeLabel: "{PaymentMethodGenericLib.USERPAYMENTMETHOD_GRAPH_NODE_LABEL}", // "userPaymentMethod"
	schema: {
		identifier: true,
		restrictProperties: true,
		restrictRelationships: true,
		properties: {
			userPaymentMethodId: {
				identifier: true, // create unique id from user and uniqueMessageId
			},
			paymentMethodHandlerServiceNameTag: {
				immutable: true,
			},
			paymentMethodId: { // stored here to reduce queries finding matching methods, eg sellOffers
				immutable: true,
			},
		},
	}
}
  • adds a node between a user and a payment method
  • this is the node linked to by sellOffers
{
	nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}PropertyLabel",
}
{
	nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_GRAPH_NODE_LABEL}Property",
}
{
	nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}PropertyLabel", // paymentMethodSalePropertyLabel
}
{
	nodeLabel: "{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
  • see DataSchemaLib
  • two sets of property nodes, one for presentation properties (when browsing), paymentMethodSale for after sale, properties that get sent to the buyer, eg bank account number

Relationships

{
	relationshipType: "{PaymentMethodGenericLib.createIsPaymentMethodGraphRelationshipType()}", // "is_PaymentMethod"
	schema: {
		elementCanBeRemoved: false,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
{
	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.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
{
	relationshipType: "disabled_{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}Property",
}
{
	relationshipType: "is_{PaymentMethodGenericLib.PAYMENTMETHOD_SALE_PROPERTIES_GRAPH_TAG}PropertyLabel",
}

Basic node schemas

Schema comes from BasicNodeSchemaLib

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

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