Как ограничить покупки ТОЛЬКО IP-адресами в Соединенных Штатах, используя Ruby / Rails? - PullRequest
2 голосов
/ 29 декабря 2010

У меня есть клиент, у которого есть требование, чтобы он не мог продавать определенные продукты «за пределами Соединенных Штатов».

Они бы предпочли, чтобы пользователи могли видеть сайт, но когда они пытаются оформить заказ, представляют сообщение, указывающее, что они находятся за пределами США.

Их сайт построен на Rails 2.3.8.

Ответы [ 6 ]

3 голосов
/ 29 декабря 2010

Проверьте GeoIP gem (обязательно прочитайте инструкцию, вам нужно скачать базу данных GeoLiteCity или GeoLiteCountry, чтобы она работала).Он использует базу данных MaxMind GeoIP и может дать вам страну (или город, в случае городской базы данных) IP-адреса, с некоторой точностью.Существует коммерческая база данных с более высокой точностью, которую я рекомендовал бы для вашего случая использования.

Однако учтите, что это ни в коем случае не является окончательным решением.Некоторые клиенты будут отклонены неправомерно, а некоторые смогут сделать заказ, хотя они не должны.Такие вещи, как спутниковые соединения, прокси-серверы и службы VPN, делают IP-адрес невозможным, и ни одна база данных не является на 100% полной или правильной.

2 голосов
/ 29 декабря 2010

То, что вы ищете, это какая-то грубая геолокация . Один из способов добиться этого - запросить DNS-зону, специально предназначенную для этого; одна такая зона описана в http://countries.nerd.dk.

1 голос
/ 09 марта 2011

Альтернативу geoip можно найти здесь: http://humbuckercode.co.uk/licks/gems/geoip/

Использует библиотеки maxmind, прост в настройке, не требует обновления схемы, быстро

1 голос
/ 29 декабря 2010

Вы можете использовать промежуточное программное обеспечение стойки, но для этого потребуется сначала разветвить его на Github.

https://github.com/roja/rack-geo

На данный момент этот проект дает вам названия городов и организаций, основанные на IP-адресе компьютера, отправляющего запрос - вам также нужен код страны.

Вы можете добавить его в код относительно легко здесь: https://github.com/roja/rack-geo/blob/master/lib/rack/geo.rb

Затем вы можете установить переменную среды Rack, чтобы указать, является ли запрос из США, в методе вызова:

Rack::Request.new(env)["born"] = "...in the USA"

Добавьте его в свой конфигурационный файл:

config.middleware.use Rack::Geo

И затем в вашем контроллере вы можете проверить, правильно ли установлена ​​переменная окружения в запросе, и перенаправить на сообщение «извините, вы должны быть из США'page:

if params['born'] == "...in the USA"
  redirect_to "/not_from_round_here"
end

Имейте в виду, что прослушивание IP-адресов подвержено ошибкам.Я часто езжу на поездах в Великобритании и в конечном итоге Google на немецком языке.

1 голос
/ 29 декабря 2010

Вы можете использовать их данные, которые вы извлекаете в свою базу данных, чтобы проверить IP-адрес пользователя. http://www.ipligence.com/geolocation/ (вам все еще нужно беспокоиться о прокси)

Я бы также проверил, куда вы отправляете его (проверяя адреса, как указано выше), также проверьте адрес карты с помощью сторонника карты, такого как VISA и т. Д.

И, как указано выше, ваш агент по обработке денег не должен разрешать какие-либо транзакции из-за пределов США по определенным пунктам (если это возможно)

Но я прочитал ваше заявление. НЕКОТОРЫЕ продукты могут быть запрещены к продаже за пределами США. Поэтому вам понадобится пометить эти продукты в вашей системе, а затем сообщить пользователю, что они не могут приобрести эти товары, но продолжить с другими в корзине.

1 голос
/ 29 декабря 2010

Я из Украины.И когда определенный американский магазин не хочет продавать товары за границей, он обычно указывает в политике / часто задаваемых вопросах / и т.д., что принимаются только платежные карты, выпущенные американским банком.Мне кажется, это лучшее решение, которое нужно решить: «не может продавать определенные продукты« за пределами Соединенных Штатов ».

Поскольку существуют компании, занимающиеся отправкой посылок, почтовых отправлений и грузов, которые могут быть использованы потенциальным клиентомтот клиент, хотя проживает за пределами США, но которого клиенту не придется отправлять напрямую.Этот клиент по-прежнему получит выгоду от этих продаж, но будет свободен от набора с бременем, связанным с доставкой за границу.

И когда вы решите это с помощью геолокации, этот клиент все равно сможет зарабатывать дополнительные деньги, когда люди все равноиспользование сайта через различные прокси-серверы, если этот клиент того стоит.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...