$30 off During Our Annual Pro Sale. View Details »

Payment Processing at Gilt.com

Payment Processing at Gilt.com

Portland Java User Group
May 16, 2017
Portland Oregon
keywords: Java, Scala, HBC Digital, Gilt, Saks Fifth Avenue

sullis

May 16, 2017
Tweet

More Decks by sullis

Other Decks in Technology

Transcript

  1. Payment Processing
    Sean Sullivan
    May 16, 2017
    Portland Java User Group

    View Slide

  2. • software engineer
    • 21 years Java
    • 6 years at Gilt
    • back office systems @ Gilt
    About me

    View Slide

  3. January 2016

    View Slide

  4. https://en.wikipedia.org/wiki/Hudson%27s_Bay_Company

    View Slide

  5. saksfifthavenue.com
    saksoff5th.com
    lordandtaylor.com
    gilt.com
    thebay.com

    View Slide

  6. www.gilt.com

    View Slide

  7. View Slide

  8. Web
    Checkout
    Android
    Checkout
    iPhone
    Checkout
    Checkout
    service

    View Slide

  9. checkout
    service
    payment
    system
    payment
    processor
    checkout
    UI
    order processing
    system
    order queue

    View Slide

  10. 2008
    order processing

    View Slide

  11. 2017
    discount
    service
    payment
    service
    ship calculator
    service
    order processing
    inventory
    service

    View Slide

  12. View Slide

  13. Credit card service
    • add card
    • delete card
    • list cards
    • authorize
    • capture
    • refund

    View Slide

  14. Credit card service
    version 1.x
    Java + java.util.HashMap + service framework
    version 2.x
    Java + Scala + JAX-RS
    version 3.x
    Scala + Play Framework + ApiDoc

    View Slide

  15. http://www.apidoc.me/doc/

    View Slide

  16. Date and time
    java.lang.Long
    java.util.Date
    java.util.Calendar
    joda-time library
    java.time API

    View Slide

  17. java.time API

    View Slide

  18. View Slide

  19. Money
    java.lang.Double
    java.lang.String
    java.math.BigDecimal
    joda-money library
    JavaMoney API

    View Slide

  20. JavaMoney

    View Slide


  21. org.javamoney
    moneta
    1.1

    Moneta library

    View Slide

  22. import org.javamoney.moneta.Money
    import java.math.BigDecimal
    val salary = Money.of(
    new BigDecimal(“25000000.00”),
    “USD”)
    Moneta example

    View Slide

  23. Security concerns
    • client-side credit card encryption
    • Java crypto strength
    • key management
    • safe logging

    View Slide

  24. https://paysvc.giltvault.com/payment_service/get_publickey?callback=demo
    Public Key endpoint

    View Slide

  25. Unlimited strength crypto
    oracle.com

    View Slide

  26. Key management
    tech.gilt.com

    View Slide

  27. Logging
    import ch.qos.logback.classic.PatternLayout
    import ch.qos.logback.classic.spi.ILoggingEvent
    class MaskingPatternLayout
    extends PatternLayout {
    ...
    }

    View Slide

  28. Logging
    2017-05-16 20:08:18,312 INFO com.gilt.Foobar
    REDACTED

    View Slide

  29. Code coverage
    https://github.com/jacoco/jacoco
    https://bitbucket.org/atlassian/clover
    http://cobertura.github.io/cobertura/
    https://github.com/scoverage

    View Slide

  30. Code coverage
    https://twitter.com/LlewellynFalco/status/812714305695019008

    View Slide

  31. The end

    View Slide

  32. View Slide