Когда вы создаете объект шлюза с ActiveMerchant, вы указываете информацию о продавце. Так что я думаю, что для вашего SW будет нормально размещать транзакции от имени нескольких продавцов. Просто храните их информацию в БД и используйте по мере необходимости. Я бы порекомендовал вам зашифровать информацию продавца.
См. Gem attr_encrypted
Я не уверен, почему вы не хотите хранить информацию о продавце. Может быть, вы должны сказать больше об этом.
Если продавец использует Authorize.Net, вам просто необходимы логин и пароль Authorize.net для каждого продавца.
Я бы порекомендовал стандартизировать всех ваших продавцов на едином платежном шлюзе, таком как Authorize.net или одного из их конкурентов. Достаточно сложно иметь дело с одним шлюзом, зачем иметь дело с более чем одним. Кроме того, вы можете легко стать торговым посредником для authorize.net и упростить процесс для своих продавцов.
Вы правы, вы действительно не хотите откладывать транзакции по кредитным картам, пока продавец не войдет в систему и не предоставит информацию о своем продавце:
В зависимости от того, как часто продавец входит в систему, вы нарушаете соглашение продавца по карте о своевременной оплате и дозировании.
У вас не было бы возможности оперативно отослать сообщение конечному клиенту - успешно ли был произведен платеж?
Вы должны сохранить полный номер кредитной карты и другую информацию. Это требует высокого уровня соответствия PCI. Не стоит того. И вам запрещено хранить номер CVV, несмотря ни на что. Таким образом, в зависимости от вашей другой информации от конечного клиента, ваши сборы будут иметь более низкую квалификацию (более высокие операционные расходы для ваших продавцов).
Я рекомендую хранить информацию о продавцах. - Зашифруйте это и не позволяйте торговцу (или кому-либо еще) видеть это. Позвольте продавцам заменить их информацию, не позволяйте им видеть текущую информацию для ее редактирования. Это снизит риск безопасности, если неправильный человек увидит информацию продавца.