1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
@Override
public void processPayment(List<Long> paymentsId, PaymentModeEnum paymentMode) {
if (PaymentModeEnum.CREDITCARD == paymentMode) {
List<Payment> payments = paymentRepository.findByPaymentIdIn(paymentsId);
processCreditCardPayment(payments);
} else {
paymentRepository.setPaymentStatus(paymentsId, StatusEnum.COMPLETE, LocalDate.now());
}
}
private void processCreditCardPayment(List<Payment> payments) {
List<PaymentGatewayConfig> paymentGateways = paymentGatewayConfigRepository.findAll();
if (paymentGateways != null && !paymentGateways.isEmpty()) {
PaymentGatewayConfig paymentGateway = paymentGateways.get(0);
String crypt_type = "7";
for (Payment payment : payments) {
ResolverReceipt resreceipt = chargeMemberCreditCard(payment, crypt_type, paymentGateway);
Operation operation = createOperation(resreceipt);
List<Operation> operations = null;
if (payment.getOperations() == null) {
operations = new ArrayList<>();
}
operations.add(operation);
payment.setDate(LocalDate.now());
payment.setOperations(operations);
paymentRepository.save(payment);
}
}
}
private ResolverReceipt chargeMemberCreditCard(Payment payment, String crypt_type, PaymentGatewayConfig paymentGateway) {
ResolverReceipt resreceipt = null;
Member member = payment.getContract().getMember();
ResPurchaseCC resPurchaseCC = new ResPurchaseCC(member.getPaymentGatewayKey(), payment.getPaymentId().toString(), member.getMemberId().toString(), payment.getPrice().toString(), crypt_type);
ResolverHttpsPostRequest mpgReq = new ResolverHttpsPostRequest(paymentGateway.getHost(), paymentGateway.getStoreId(), paymentGateway.getApiToken(), resPurchaseCC);
try{
resreceipt = mpgReq.getResolverReceipt();
ResolveData resdata = resreceipt.getResolveData();
if (resreceipt != null && resreceipt.getResponseCode() != null && Integer.getInteger(resreceipt.getResponseCode()) < 50) {
payment.setStatus(StatusEnum.COMPLETE);
} else {
payment.setStatus(StatusEnum.FAIL);
}
catch (Exception e){
log.error("ChargeMemberCreditCard : problème pour traitement le paiement de la carte de crédit", e);
}
return resreceipt;
} |
Partager