Il s'agit plus d'une question qui nécessite des commentaires. Je conçois une base de données qui gère plusieurs passerelles de paiement. Une passerelle de paiement nécessite principalement un tableau pour les détails de la commande avant d'effectuer le paiement (ce qui est courant pour tous les PG), et un tableau pour les détails de la transaction, pour stocker la réponse après avoir effectué le paiement.
Maintenant, pour gérer plusieurs passerelles de paiement, je peux soit conserver une seule table de transactions, la remplir avec tous les champs disponibles de toutes les passerelles de paiement et un champ qui indique de quelle PG provient cette ligne;
Ou, je peux créer des tables de transactions distinctes pour chacun des PG avec le préfixe comme paypal_
ou bank_
etc, chacun ayant les champs dont chacun a besoin.
Je ne sais tout simplement pas quelle est la façon la plus optimale de le faire. J'ai également besoin de l'apprendre pour des scénarios similaires que je pourrais rencontrer à l'avenir.
la source
paypal_transaction_id
,bank_transaction_id
etc. Nous n'avions pas trop de passerelles de paiement, donc cela a fonctionné pour nous. Peut ne pas fonctionner avec ceux qui prennent en charge de nombreux PG.Réponses:
Cela dépend de la différence entre les données entre les types de paiement.
Pour les sites que je soutiens au travail, nous avons une table qui stocke les données pour tous les types de paiement. Cela fonctionne pour nous, car nos types de paiement sont essentiellement 4 types de cartes de crédit et de bon de commande d'entreprise. La plupart de nos clients paient par carte de crédit, il n'y a donc pas beaucoup d'écart dans les données. Bien sûr, les requêtes pour ces clients de cartes de crédit donnent toujours des valeurs NULL dans le champ PONumber. De même, les requêtes des clients PO produisent des valeurs NULL dans tous les champs liés aux cartes de crédit.
S'il y a beaucoup de champs différents dans vos données, vous pouvez essayer une table de transaction principale avec des tables individuelles pour chaque passerelle de paiement. Chaque table de type de passerelle de paiement aurait une clé étrangère de transaction_id, qui serait liée à la table de transaction principale.
D'un autre côté, si vos types de passerelles de paiement ont tous des champs similaires, je m'en tiendrai à une seule table de transactions.
la source