Portland Java User Group May 16, 2017 Portland Oregon keywords: Java, Scala, HBC Digital, Gilt, Saks Fifth Avenue
Payment ProcessingSean SullivanMay 16, 2017Portland Java User Group
View Slide
• software engineer• 21 years Java• 6 years at Gilt• back office systems @ GiltAbout me
January 2016
https://en.wikipedia.org/wiki/Hudson%27s_Bay_Company
saksfifthavenue.comsaksoff5th.comlordandtaylor.comgilt.comthebay.com
www.gilt.com
WebCheckoutAndroidCheckoutiPhoneCheckoutCheckoutservice
checkoutservicepaymentsystempaymentprocessorcheckoutUIorder processingsystemorder queue
2008order processing
2017discountservicepaymentserviceship calculatorserviceorder processinginventoryservice
Credit card service• add card• delete card• list cards• authorize• capture• refund
Credit card serviceversion 1.xJava + java.util.HashMap + service frameworkversion 2.xJava + Scala + JAX-RSversion 3.xScala + Play Framework + ApiDoc
http://www.apidoc.me/doc/
Date and timejava.lang.Longjava.util.Datejava.util.Calendarjoda-time libraryjava.time API
java.time API
Moneyjava.lang.Doublejava.lang.Stringjava.math.BigDecimaljoda-money libraryJavaMoney API
JavaMoney
org.javamoneymoneta1.1Moneta library
import org.javamoney.moneta.Moneyimport java.math.BigDecimalval salary = Money.of(new BigDecimal(“25000000.00”),“USD”)Moneta example
Security concerns• client-side credit card encryption• Java crypto strength• key management• safe logging
https://paysvc.giltvault.com/payment_service/get_publickey?callback=demoPublic Key endpoint
Unlimited strength cryptooracle.com
Key managementtech.gilt.com
Loggingimport ch.qos.logback.classic.PatternLayoutimport ch.qos.logback.classic.spi.ILoggingEventclass MaskingPatternLayoutextends PatternLayout {...}
Logging2017-05-16 20:08:18,312 INFO com.gilt.FoobarREDACTED
Code coveragehttps://github.com/jacoco/jacocohttps://bitbucket.org/atlassian/cloverhttp://cobertura.github.io/cobertura/https://github.com/scoverage
Code coveragehttps://twitter.com/LlewellynFalco/status/812714305695019008
The end