Subversion Repositories SmartDukaan

Rev

Rev 20278 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.mobileapi.serving.services;

import in.shop2020.model.v1.order.RechargeOrder;
import in.shop2020.payments.Attribute;
import in.shop2020.payments.PaymentStatus;
import in.shop2020.thrift.clients.PaymentClient;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

public class EbsPaymentService implements IPaymentService{
        
        private static Logger log = Logger.getLogger(Class.class);
        
        public static final String TXN_ID = "transactionId";
        public static final String PAYMENT_ID = "paymentId";
        public static final String AMOUNT = "amount";
        public static final String DATE_TIME = "dateTime";
        public static final String MODE = "mode";
        public static final String REF_NO = "referenceNo";
        public static final String TXN_TYPE = "transactionType";
        
    private static int gatewayId=2;
        private long paymentId;
        
        @Override
        public long createPayment(long userId, long txnId, String paymentOption, int gatewayId, String paymentType){
                log.info("Creating payment for the txn#: " + txnId + " for the user: " + userId + " for processing through EBS");
                CommonPaymentService cps = new CommonPaymentService();
                if(!cps.createPayment(userId, txnId, EbsPaymentService.gatewayId)){
                        log.error("Error while creating the basic payment");
                        return PAYMENT_NOT_CREATED;
                }
                paymentId = cps.getPaymentId();
                
                if(paymentOption != null){
                        List<Attribute> attributes = new ArrayList<Attribute>();
                        attributes.add(new Attribute(IPaymentService.PAYMENT_METHOD, paymentOption));
                        attributes.add(new Attribute(IPaymentService.PAYMENT_TYPE, paymentType));
                        try {
                                PaymentClient paymentServiceClient = new PaymentClient();
                                paymentServiceClient.getClient().updatePaymentDetails(paymentId, null, null, null, null, null, null, null, null, PaymentStatus.INIT, null, attributes);
                        } catch (Exception e) {
                                log.error("Error while saving payment option attribute", e);
                                // TODO: We've already created the payment. We could allow the
                                // payment to go through. The customer will be a little
                                // annoyed to have to select from a host of options again but
                                // will be better than completely disallowing him.
                                return PAYMENT_NOT_CREATED;
                        }
                }

                return paymentId;
        }
        
        public long createPayment(RechargeOrder rechargeOrder, String paymentOption, String paymentType) {
            log.info("Creating payment for the txn#: " + rechargeOrder.getId() + " for the user: " + rechargeOrder.getUserId() + " for processing through EBS");
        CommonPaymentService cps = new CommonPaymentService();
        if(!cps.createPayment(rechargeOrder, gatewayId)){
            log.error("Error while creating the basic payment");
            return PAYMENT_NOT_CREATED;
        }
        paymentId = cps.getPaymentId();
        
        if(paymentOption != null){
            List<Attribute> attributes = new ArrayList<Attribute>();
            attributes.add(new Attribute(IPaymentService.PAYMENT_METHOD, paymentOption));
            attributes.add(new Attribute(IPaymentService.PAYMENT_TYPE, paymentType));
            
            try {
                PaymentClient paymentServiceClient = new PaymentClient();
                paymentServiceClient.getClient().updatePaymentDetails(paymentId, null, null, null, null, null, null, null, null, PaymentStatus.INIT, null, attributes);
            } catch (Exception e) {
                log.error("Error while saving payment option attribute", e);
                // TODO: We've already created the payment. We could allow the
                // payment to go through. The customer will be a little
                // annoyed to have to select from a host of options again but
                // will be better than completely disallowing him.
                return PAYMENT_NOT_CREATED;
            }
        }

        return paymentId;
    }

        public static void main(String[] args){
                //capturePayment(30450.00, "2412653");
                
//              <output  transactionId="4793507"  paymentId="2411078"  amount="25005"  dateTime="2011-05-16 09:03:15"  mode="TEST"  referenceNo="4"  transactionType="Captured"  status="Processing"  />";

//              <output  errorCode="2"  error="Invalid Account ID/Secret Key"  />
//              <output  errorCode="12"  error="This payment is failed"  />
//              <output  errorCode="13"  error="This payment is captured already"  />           
        }
}