Skip to content

Commit

Permalink
Fix transaction id in payment service (open-telemetry#230)
Browse files Browse the repository at this point in the history
  • Loading branch information
mic-max authored Jul 25, 2022
1 parent f89c70f commit 615672a
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions src/paymentservice/charge.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,19 @@ const tracer = opentelemetry.trace.getTracer('paymentservice')
module.exports.charge = request => {
const span = tracer.startSpan('charge')

const { amount, creditCard } = request
const cardNumber = creditCard.creditCardNumber
const card = cardValidator(cardNumber)
const { creditCardNumber: number,
creditCardExpirationYear: year,
creditCardExpirationMonth: month
} = request.creditCard
const { units, nanos, currencyCode } = request.amount
const currentMonth = new Date().getMonth() + 1
const currentYear = new Date().getFullYear()
const lastFourDigits = number.substr(-4)
const transactionId = uuidv4()

const card = cardValidator(number)
const {card_type: cardType, valid } = card.getCardDetails()

span.setAttributes({
'app.payment.charge.cardType': cardType,
'app.payment.charge.valid': valid
Expand All @@ -40,18 +49,14 @@ module.exports.charge = request => {

if (!['visa', 'mastercard'].includes(cardType))
throw new Error(`Sorry, we cannot process ${cardType} credit cards. Only VISA or MasterCard is accepted.`)

const currentMonth = new Date().getMonth() + 1
const currentYear = new Date().getFullYear()
const { credit_card_expiration_year: year, credit_card_expiration_month: month } = creditCard
const lastFourDigits = cardNumber.substr(-4)

if ((currentYear * 12 + currentMonth) > (year * 12 + month))
throw new Error(`The credit card (ending ${lastFourDigits}) expired on ${month}/${year}.`)

span.setAttribute('app.payment.charged', true)
span.end()

logger.info(`Transaction processed: ${cardType} ending ${lastFourDigits} | Amount: ${amount.units}.${amount.nanos} ${amount.currencyCode}`)
logger.info(`Transaction ${transactionId}: ${cardType} ending ${lastFourDigits} | Amount: ${units}.${nanos} ${currencyCode}`)

return { transaction_id: uuidv4() }
return { transactionId }
}

0 comments on commit 615672a

Please sign in to comment.