Rev 3724 | Rev 4008 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
namespace java in.shop2020.paymentsnamespace py shop2020.thriftpy.paymentsinclude "GenericService.thrift"/**Various structures**/enum PaymentGatewayStatus{AVAILABLE,BLOCKED}enum PaymentStatus{INIT,PENDING,SUCCESS, // HDFC Status: CAPTURED; EBS Status: CapturedFAILED, // HDFC status: NOT CAPTURED, DENIED BY RISK, HOST TIMEOUT, CANCELLEDAUTHORIZED, // EBS Status: Pending, HDFC Status: APPROVEDPARTIALLY_CAPTURED //In case of COD}// If new paymethod is added here, sales database for pentaho must also be updated.const map<string,string> PAYMENT_METHOD = {'1001' : 'EBS-TEST Payment''1004' : 'EBS-AXIS Bank Account''1007' : 'EBS-HDFC Bank Account''1008' : 'EBS-VISA''1009' : 'EBS-Citi Bank Debit Card''1010' : 'EBS-Diners Club''1012' : 'EBS-ItzCash''1015' : 'EBS-JK Bank Account''1016' : 'EBS-ICICI Bank Account''1017' : 'EBS-MasterCard''1029' : 'EBS-Federal Bank Account''1032' : 'EBS-State Bank of India Netbanking''1033' : 'EBS-State Bank of Bikaner and Jaipur Netbanking''1034' : 'EBS-State Bank of Hyderabad Netbanking''1035' : 'EBS-State Bank of Patiala Netbanking''1036' : 'EBS-State Bank of Shaurashtra Netbanking''1037' : 'EBS-State Bank of Indore Netbanking''1038' : 'EBS-State Bank of Mysore Netbanking''1039' : 'EBS-State Bank of Travancore Netbanking''1040' : 'EBS-Citi Bank Reward Point''1127' : 'EBS-Citi Bank Account''1132' : 'EBS-Done Card''1133' : 'EBS-Karnataka Bank Account''1134' : 'EBS-ICash''1135' : 'EBS-Corporation Bank Account''2000' : 'HDFC-VISA/VISA Electron Debit Card''2008' : 'HDFC-VISA''2017' : 'HDFC-MasterCard''3000' : 'COD''2001' : 'Cheque''1026' : 'EBS-ICICI Bank Debit Card''1027' : 'EBS-SBI Debit Card''2020' : 'HDFC Credit Card 3-month EMI''4000' : 'BULK'}struct Attribute{1:string name,2:string value}struct PaymentGateway{1:i64 id,2:string name,3:string url,4:i64 addedOn,5:string aliasName,6:string responseUrl,7:string errorUrl,8:PaymentGatewayStatus status9:list<Attribute> attributes // list of all attributes for PG}struct Payment{1:i64 paymentId, // trackId for bank, paymentid for us and id for table.2:i64 gatewayId, //payment gateway used3:string gatewayPaymentId4:i64 merchantTxnId, //merchant transaction id. This will be propagated further to order processing5:string gatewayTxnId, //bank trnasaction id6:double amount,7:string gatewayTxnStatus, // bank status will be stored here8:PaymentStatus status,9:i64 userId, //The user for which payment has to be processed.This is here to speed up querying.10:string errorCode,11:string description,12:string authCode,13:string referenceCode, // given by gateway14:string sessionId, // received from PG15:string gatewayTxnDate,16:list<Attribute> attributes, // list of all attributes received from PG17:i64 initTimestamp, //statring the payment processing timestamp18:i64 successTimestamp, //timestamp when payment is captured19:i64 errorTimestamp, // in case, error is received from PG}struct Refund{1:i64 id,2:i64 paymentId,3:i64 gatewayId,4:i64 orderId,5:double amount,6:string gatewayTxnId,7:i32 attempts,8:i64 createdAt,9:i64 processedAt,10:list<Attribute> attributes}exception PaymentException{1:i64 error_code,2:string message}service PaymentService extends GenericService.GenericService{/*** create a new payment and return payment id, throws an exception if gateway is not active**/i64 createPayment(1:i64 userId, 2:double amount, 3:i64 gatewayId, 4:i64 txnId) throws (1:PaymentException pe),/*** get payment for user. If status and gateway are null, it is ignored. Same for times as well.**/list<Payment> getPaymentsForUser(1:i64 userId, 2:i64 fromTime, 3:i64 toTime, 4:PaymentStatus status, 5:i64 gatewayId) throws (1:PaymentException pe),/*** get all payments for user. If gatewayId is 0, then it is ignored while filtering.**/list<Payment> getPayments(1:i64 fromTime, 2:i64 toTime, 3:PaymentStatus status, 4:i64 gatewayId) throws (1:PaymentException pe),/*** Get a particular gateway**/PaymentGateway getPaymentGateway(1:i64 id) throws (1:PaymentException pe),/*** Get a particular payment info**/Payment getPayment(1:i64 id) throws (1:PaymentException pe),/*** Get a particular payment for a transaction. Will raise exception.**/list<Payment> getPaymentForTxnId(1:i64 txnId) throws (1:PaymentException pe),/*** mark payment successful and store parameters**/bool updatePaymentDetails(1:i64 id, 2:string gatewayPaymentId, 3:string sessionId, 4:string gatewayTxnStatus, 5:string description, 6:string gatewayTxnId, 7:string authCode, 8:string referenceCode, 9:string errorCode, 10:PaymentStatus status, 11:string gatewayTxnDate, 12:list<Attribute> attributes) throws (1:PaymentException pe),/*** mark payment failed and store parametersbool markPaymentFailed(1:i64 id, 2:string gatewayPaymentId, 3:string sessionId, 4:string gatewayTxnStatus, 5:string description, 6:string errorCode, 7:list<Attribute> attributes ) throws (1:PaymentException pe)*//**Returns the minimum and maximum amounts among successful payments.List contains two double values, first minimum and second maximum amount.*/list<double> getSuccessfulPaymentsAmountRange(),/**Initialize the payment pipe for a HDFC payment. The URL the user should be redirected to is returned.In case of any processing error, an exception is raised.*/string initializeHdfcPayment(1:i64 merchantPaymentId) throws (1:PaymentException pe),/**Initialize the payment pipe for a HDFC EMI payment. The URL the user should be redirected to is returned.In case of any processing error, an exception is raised.*/string initializeHdfcEmiPayment(1:i64 merchantPaymentId) throws (1:PaymentException pe),/**Create a refund of the given amount corresponding to the given order to be processed through the samepayment gateway which processed the payment for the corresponding transaction.Returns the id of the newly created Refund.*/i64 createRefund(1:i64 orderId, 2:i64 merchantTxnId, 3:double amount) throws (1:PaymentException pe),/**Capture the payment for the given merchant transaction id. It processes the last payment for the giventransaction. If the capture attempt failed, the payment is marked as failed.*/bool capturePayment(1:i64 merchantTxnId) throws (1:PaymentException pe),/**Adds the given amount to the captured amount of a COD payment.Updates the captured amount for the corresponding payment and marks it as PARTIALLY CAPTURED.If the captured amount becomes equal to total amount, then the payment status is set as SUCCESS.Also sets the name of the entity which transferred the money, the date on which it was transferredand the corresponding transaction id.Returns false if the payment couldn't be captured.Throws exception if no such payment could be found or if the captured amount will exceed the total amount after capturing.*/bool partiallyCapturePayment(1:i64 merchantTxnId, 2:double amount, 3:string xferBy, 4:string xferTxnId, 5:i64 xferDate) throws (1:PaymentException pe)}