Rev 1118 | Rev 1731 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
namespace java in.shop2020.paymentsnamespace py shop2020.thriftpy.payments/**Various structures**/enum PaymentGatewayStatus{AVAILABLE,BLOCKED}enum PaymentStatus{INIT,PENDING,SUCCESS, // HDFC Status: CAPTUREDFAILED // HDFC status: NOT CAPTURED, DENIED BY RISK, HOST TIMEOUT, CANCELLED}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}exception PaymentException{1:i64 error_code,2:string message}service PaymentService{/*** For closing the open session in sqlalchemy*/void closeSession(),/*** 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. Gateway is mandatory.**/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 maximum amount of a single payment.*/double getMaxPaymentAmount(),/**Returns the minimum amount of a single payment.*/double getMinPaymentAmount(),}