¿Hay alguna manera de conectar stripe al intercomunicador?

He estado abordando un proyecto similar a este recientemente, así que reflexionaré un poco sobre mi experiencia. Todo se reduce a lo que quieres hacer exactamente. Como ya mencionó Geoffrey Keating, hay una integración que se inicia desde la administración de Intercom que extraerá datos de Stripe. En nuestro caso (Keen IO – Analytics for Developers), lo que necesitábamos no se podía lograr usando esa integración, por un par de razones. La primera es que la integración preempaquetada coloca los datos de Stripe en los objetos de usuario, donde realmente queríamos enriquecer los objetos de “empresa” de Intercom. El segundo es cómo la integración resuelve los usuarios de Intercom y Stripe. Stripe asigna automáticamente a cada cliente una identificación generada que tiene el prefijo de tipo “cus_” (algo así como “cus_foo123”), que no se puede anular. Tenemos nuestros propios identificadores de organización, por lo que los almacenamos como una clave externa en el campo “Descripción” de Stripes. Lo mejor que puedo decir es que la integración existente utiliza el campo “correo electrónico” en cada objeto para hacer la correspondencia. Esto era menos que ideal para nosotros, porque una sola dirección de correo electrónico puede tener acceso a varias organizaciones, por lo que necesitábamos una forma de recuperar un cliente Stripe a través de nuestra clave externa.

Evaluamos algunas herramientas / métodos para lograr esto, a saber, tray.io, Zapier y scripts desarrollados internamente personalizados. Si su caso de uso es bastante simple, es posible que pueda salirse con la suya usando Zapier, pero descubrí que Tray es significativamente más personalizable. Sin embargo, en última instancia, cualquiera de estas herramientas estará a merced de las limitaciones de las API que están conectando. En este caso, la API Stripe no ofrece ninguna forma de recuperar a un cliente por otra cosa que no sea una identificación, y lo mismo para el recurso de las empresas de Intercom. Entonces, al final, fui personalizado, escrito en una combinación de Python y JavaScript. FWIW, esto probablemente aún se puede lograr con tray.io, pero las ineficiencias API subyacentes fueron el factor decisivo. Si tengo proyectos futuros para pegar API’s juntos, definitivamente intentaré tray.io primero.

Una forma en la que encontré la limitación de Stripe fue iniciar una llamada a la API de búsqueda de Stripe usando la clave externa que almacenamos como “company_id” de Intercom, y solo actuamos si obtenemos un único resultado de búsqueda. Aquí hay un fragmento de Python no muy listo para producción:

desde intercom.client import Client
importar httplib
importar json
banda de importación

stripe.api_key = YOUR_STRIPE_SECRET
all_charges = stripe.Charge.list ()
intercom = Client (personal_access_token = ‘YOUR_INTERCOM_TOKEN’)
hdrs = {“Autorización”: “Portador” + stripe_api_key, “Aceptar”: “application / x-www-form-urlencoded”}

para la empresa en intercom.companies.all ():
url = “/ v1 / search? query =” + company.company_id + “& prefix = false”
conn = httplib.HTTPSConnection (“api.stripe.com”)
conn.request (“GET”, url, encabezados = hdrs)
resp = conn.getresponse ()
resp_string = resp.read (). decode (‘utf-8’)
json_obj = json.loads (resp_string)
if json_obj [‘count’] == 1:
stripe_cus_id = json_obj [‘datos’] [0] [‘id’]
más:
#bad state: se encontró un número incorrecto de resultados de búsqueda
# aquí es donde se hace la lógica para enriquecer el objeto de la compañía, buscando all_charges para stripe_cus_id

Notarás que esto se repite en todas las empresas de intercomunicación. Con suerte, esto solo es necesario una vez, y en el futuro podríamos iniciar en un webhook de Intercom cuando aparezca una nueva conversación para mantener todo actualizado. Vale la pena señalar que cualquier implementación aquí debe ejecutarse en otro lugar que no sea el cliente del usuario, ya que se basa en una llamada API de búsqueda bastante costosa (en cuanto al tiempo), no desea retrasar la carga de la página del usuario para eso.

Además, todavía no hay forma de evitar recuperar todos sus cargos de Stripe y buscarlos / clasificarlos usted mismo. Esa es otra limitación de su API, por lo que no importa la herramienta o el método que use, solo tendrá que construir en torno a ella.

Espero que ayude. Al final, creé una solución diferente más personalizada para nuestras necesidades, sin embargo, como mencioné, pasé unos días construyendo esto recientemente, así que espero que sea útil para otra persona. Esta ya es una respuesta bastante larga, pero si tiene alguna pregunta sobre lo que terminé construyendo, me encantaría conversar al respecto.

Usted apuesta. Integración de rayas

No creo que esto sea posible, pero puede conectar Stripe fácilmente con Reamaze a través de nuestra integración nativa con Stripe o incluso un módulo personalizado diseñado para manejar integraciones Stripe más complejas.

More Interesting

¿Cuáles son las principales diferencias entre la informática y la ingeniería de software (por ejemplo, en demanda, valor y curso)? Necesito hacer BS pero no puedo decidir cuál elegir.

¿Cuáles son las mejores prácticas al depurar aplicaciones móviles?

¿Cuál de los siguientes temas es de mayor uso en un entorno profesional: sistemas operativos o sistemas de bases de datos?

¿Cuál es la diferencia entre una entrevista de pasantía de ingeniería de software y una entrevista de pasantía de ingeniería de front-end en Google?

¿Cómo se realiza exactamente el desarrollo basado en pruebas durante el tiempo de codificación?

¿Qué porcentaje de programadores son 10x y qué porcentaje son 1x?

¿Por qué Apple es primero una empresa de hardware y luego una empresa de software?

¿Qué porcentaje del software que se está construyendo en estos días es crítico para el rendimiento? ¿Cómo ha cambiado eso con el tiempo?

¿Por qué Notepad ++ no está disponible hasta ahora para Mac o Linux? ¿Está en la hoja de ruta?

¿El software CloudHQ está basado en Rusia?

¿Cuál será el destino de los ingenieros de software en India después de 4 a 5 años? Todos los países están prohibiendo a los ingenieros de TI, primero los EE. UU., Malasia y ahora es el Reino Unido.

¿Por qué Acme / ACME se usa generalmente como nombre de cliente en demostraciones de productos?

Si un verdadero artista recibe un proyecto con un objetivo final estrictamente definido (como un proyecto de software), con limitaciones de costo y calendario, ¿prosperará o tendrá dificultades?

¿Quiénes son algunos de los mejores desarrolladores de código abierto hasta la fecha que han contribuido significativamente y, si están vivos, cuáles son sus posiciones actuales?

¿Cuál es el mejor proveedor de servicios de ingeniería inversa a nivel mundial?