...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
package payeezy.process.paymentgateway.payeezy; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.time.Instant; import java.util.ArrayList; import java.util.Date; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; import org.json.JSONException; import org.apache.commons.codec.binary.Base64; import com.crm.businessobject.accounts.CRMBOAccountReceivableBean; import com.crm.businessobject.billing.CRMBOBillBean; import com.crm.businessobject.financialtransactions.CRMBOPaymentBean; import com.crm.businessobject.financialtransactions.CRMBOPaymentCancellationBean; import com.crm.businessobject.financialtransactions.CRMBOPaymentIntentionBean; import com.crm.businessobject.paymentgateway.CRMBOPaymentGatewayCardBean; import com.crm.dataobject.financialtransactions.CRMDOPayment; import com.crm.dataobject.paymentgateway.CRMDOPaymentGatewayCard; import com.crm.dataobject.paymentgateway.CRMDOPaymentGatewaySetting; import com.crm.dataobject.paymentgateway.PaymentGatewayRequestLifeCycleState; import com.crm.dataobject.platform.CRMDOCurrency; import com.crm.exception.MandatoryFieldException; import com.crm.framework.json.JSONArray; import com.crm.framework.json.JSONObject; import com.crm.framework.json.JSONUtil; import com.crm.framework.util.CallList; import com.crm.framework.util.DateUtil; import com.crm.framework.util.ExceptionUtil; import com.crm.process.paymentgateway.CRMProcessPaymentGatewayBean; import com.crm.process.paymentgateway.CreateAccountParameters; import com.crm.process.paymentgateway.CreateCardParameters; import com.crm.process.paymentgateway.CreatePaymentCancellationParameters; import com.crm.process.paymentgateway.CreatePaymentGatewayAccountResult; import com.crm.process.paymentgateway.CreatePaymentGatewayCardResult; import com.crm.process.paymentgateway.CreatePaymentGatewayPaymentCancellationResult; import com.crm.process.paymentgateway.CreatePaymentGatewayPaymentResult; import com.crm.process.paymentgateway.CreatePaymentParameters; import com.crm.process.paymentgateway.DeleteAccountParameters; import com.crm.process.paymentgateway.DeleteCardParameters; import com.crm.process.paymentgateway.DeletePaymentGatewayAccountResult; import com.crm.process.paymentgateway.DeletePaymentGatewayCardResult; import com.crm.process.paymentgateway.PaymentGatewayCardResult; import com.crm.process.paymentgateway.PaymentGatewayParameters; import com.crm.process.paymentgateway.PaymentGatewayResult; import com.crm.process.paymentgateway.UpdateAccountParameters; import com.crm.process.paymentgateway.UpdateCardParameters; import com.crm.process.paymentgateway.UpdatePaymentGatewayAccountResult; import com.crm.process.paymentgateway.UpdatePaymentGatewayCardResult; import payeezy.businessobject.paymentgateway.payeezy.PAYEEZYCRMBOPayeezyPaymentGatewaySettingBean; import payeezy.dataobject.paymentgateway.payeezy.PayeezyMode; import payeezy.dataobject.paymentgateway.payeezy.PayeezyParameter; import payeezy.exception.paymentgateway.PaymentGatewayPayeezyException; @Stateless(mappedName = "ejb/PAYEEZYCRMProcessPayeezyGateway") @LocalBean public class PAYEEZYCRMProcessPayeezyGatewayBean extends CRMProcessPaymentGatewayBean { private static final long serialVersionUID = 1L; private static final String PAYEEZY_PAYMENT_GATEWAY_SUC_LOG_PATH = "Providers/Payment Gateways/Payeezy_Gateway"; private static final String PAYEEZY_PAYMENT_GATEWAY_ERROR_LOG_PATH = "Providers/Payment Gateways/Errors/Payeezy_Gateway"; private static final String HMAC_SHA256_ALGORITHM = "HmacSHA256"; @EJB private CRMBOPaymentBean paymentBean; @EJB private CRMBOPaymentCancellationBean paymentCancellationBean; @EJB private CRMBOAccountReceivableBean accountReceivableBean; @EJB private CRMBOPaymentIntentionBean paymentIntentionBean; @EJB private CRMBOBillBean billBean; @EJB private CRMBOPaymentGatewayCardBean paymentGatewayCardBean; @EJB private PAYEEZYCRMBOPayeezyPaymentGatewaySettingBean payeezyPaymentGatewaySettingBean; protected static Integer timeout = 300 * 1000; /** * Default constructor. */ public PAYEEZYCRMProcessPayeezyGatewayBean() { super(); } @Override public CreatePaymentGatewayAccountResult processCreateAccount(CreateAccountParameters parameters) throws Exception { CreatePaymentGatewayAccountResult result = new CreatePaymentGatewayAccountResult(); result.setLifeCycleState(PaymentGatewayRequestLifeCycleState.POSTED); result.setResponseID(parameters.getAccountNumber()); return result; } @Override public UpdatePaymentGatewayAccountResult processUpdateAccount(UpdateAccountParameters parameters) throws Exception { return null; } @Override public DeletePaymentGatewayAccountResult processDeleteAccount(DeleteAccountParameters parameters) throws Exception { return null; } @Override public CreatePaymentGatewayCardResult processCreateCard(CreateCardParameters parameters) throws PaymentGatewayPayeezyException, Exception{ CreatePaymentGatewayCardResult result = new CreatePaymentGatewayCardResult(); result.setLifeCycleState(PaymentGatewayRequestLifeCycleState.POSTED); result.setReferenceNumber(parameters.getToken()); return result; } @Override public UpdatePaymentGatewayCardResult processUpdateCard(UpdateCardParameters parameters) throws Exception { return null; } @Override public DeletePaymentGatewayCardResult processDeleteCard(DeleteCardParameters parameters) throws Exception { return null; } @Override public CreatePaymentGatewayPaymentResult processCreatePayment(CreatePaymentParameters parameters) throws Exception { CreatePaymentGatewayPaymentResult result = new CreatePaymentGatewayPaymentResult(); String requestStr = null; try { String cardReferenceNumber = parameters.getCardReferenceNumber(); if(cardReferenceNumber==null) { throw new MandatoryFieldException(getCRMSession(), "key_card_reference_number"); } CRMDOPaymentGatewayCard paymentGatewayCard = paymentGatewayCardBean.loadByReferenceNumber(cardReferenceNumber, new ArrayList<String>()); String cardHolderName = null; String brand = null; Integer expirationMonth = null; Integer expirationYear = null; if(paymentGatewayCard!=null) { cardHolderName = paymentGatewayCard.getHolderName(); brand = paymentGatewayCard.getBrand(); expirationMonth = paymentGatewayCard.getExpMonth(); expirationYear = paymentGatewayCard.getExpYear(); } PayeezyConnectionParameters connectionParameters = getConnectionParameters(parameters); JSONObject request = new JSONObject(); Integer amountInt = parameters.getAmount().multiply(new BigDecimal(100)).intValue(); String amountStr = amountInt.toString(); ArrayList<String> billNumbers = parameters.getBillNumbers(); ArrayList<String> invoiceNumbers = parameters.getInvoiceNumbers(); String orderData = "Bills: "+getMetadataList(billNumbers)+" Invoices: "+getMetadataList(invoiceNumbers); request.put("method", "token"); request.put("transaction_type", "purchase"); request.put("amount", amountStr); request.put("order_data ", orderData); request.put("currency_code", "USD"); request.put("token", getTokenJSON(cardHolderName, cardReferenceNumber, brand, expirationMonth, expirationYear)); String authorization = getAuthorization(connectionParameters, request.toString()); String urlStr = connectionParameters.getUrl(); URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", connectionParameters.getContentType()); conn.setRequestProperty("apiKey", connectionParameters.getApiKey()); conn.setRequestProperty("token", connectionParameters.getMerchantToken()); conn.setRequestProperty("Authorization", authorization); conn.setRequestProperty("nonce", connectionParameters.getNonce()); conn.setRequestProperty("timestamp", connectionParameters.getTimestamp()); conn.setDoOutput(true); requestStr = getRequest(urlStr,request); JSONObject responseJSON = getResponse(conn, request, "Create Payment Request: " +requestStr); result = (CreatePaymentGatewayPaymentResult) setTransactionInformation(result, responseJSON); } catch (Exception e) { CallList.LogTextFile(getCRMSession(), "Create Payment Request: " +requestStr+") Error: "+ExceptionUtil.getStackTrace(e), PAYEEZY_PAYMENT_GATEWAY_ERROR_LOG_PATH,""); result.setErrorDescription(e.getMessage()); result.setLifeCycleState(PaymentGatewayRequestLifeCycleState.REJECTED); } return result; } @Override public CreatePaymentGatewayPaymentCancellationResult processCreatePaymentCancellation(CreatePaymentCancellationParameters parameters) throws Exception { CreatePaymentGatewayPaymentCancellationResult result = new CreatePaymentGatewayPaymentCancellationResult(); String requestStr = null; try { ArrayList<String> associations = new ArrayList<String>(); associations.add("accountReceivable"); associations.add("paymentGatewayCard"); associations.add("accountReceivable.currency"); CRMDOPayment payment = paymentBean.loadByReferenceNumber(parameters.getPaymentNumber(), associations); String paymentPayeezyRefNumber = payment.getPaymentGatewayRefNumber(); CRMDOPaymentGatewayCard paymentGatewayCard = payment.getPaymentGatewayCard(); String transactionTag = parameters.getPaymentReferenceNumber(); Integer amountInt = payment.getTotalAmount().multiply(new BigDecimal(100)).intValue(); String amountStr = amountInt.toString(); String currency = payment.getAccountReceivable().getCurrency().getCode(); String cardReferenceNumber = paymentGatewayCard.getReferenceNumber(); String cardHolderName = null; String brand = null; Integer expirationMonth = null; Integer expirationYear = null; if(paymentGatewayCard!=null) { cardHolderName = paymentGatewayCard.getHolderName(); brand = paymentGatewayCard.getBrand(); expirationMonth = paymentGatewayCard.getExpMonth(); expirationYear = paymentGatewayCard.getExpYear(); } PayeezyConnectionParameters connectionParameters = getConnectionParameters(parameters); JSONObject request = new JSONObject(); request.put("method", "token"); request.put("transaction_type", "refund"); request.put("amount", amountStr); request.put("transaction_tag ", transactionTag); request.put("currency_code", "USD"); request.put("token", getTokenJSON(cardHolderName, cardReferenceNumber, brand, expirationMonth, expirationYear)); String urlStr = connectionParameters.getUrl()+"/"+paymentPayeezyRefNumber; URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", connectionParameters.getContentType()); conn.setRequestProperty("apiKey", connectionParameters.getApiKey()); conn.setRequestProperty("token", connectionParameters.getMerchantToken()); conn.setRequestProperty("Authorization", getAuthorization(connectionParameters,request.toString())); conn.setRequestProperty("nonce", connectionParameters.getNonce()); conn.setRequestProperty("timestamp", connectionParameters.getTimestamp()); conn.setDoOutput(true); requestStr = getRequest(urlStr,request); JSONObject responseJSON = getResponse(conn, request, "Create Payment Cancellation Request: " +requestStr); result = (CreatePaymentGatewayPaymentCancellationResult) setTransactionInformation(result, responseJSON); } catch (Exception e) { CallList.LogTextFile(getCRMSession(), "Create Payment Cancellation Request: " +requestStr+") Error: "+ExceptionUtil.getStackTrace(e), PAYEEZY_PAYMENT_GATEWAY_ERROR_LOG_PATH,""); result.setErrorDescription(e.getMessage()); result.setLifeCycleState(PaymentGatewayRequestLifeCycleState.REJECTED); } return result; } private PaymentGatewayCardResult setCardInformation(PaymentGatewayCardResult card, JSONObject responseJSON) throws Exception{ if(responseJSON!=null) { JSONObject tokenJSON = JSONUtil.getJSONObjectParameter(responseJSON, "token", getCRMSession()); String status = JSONUtil.getStringParameter(responseJSON, "status", getCRMSession()); if(status!=null && status.equalsIgnoreCase("success")) { card.setLifeCycleState(PaymentGatewayRequestLifeCycleState.POSTED); } else { card = (PaymentGatewayCardResult) setErrorInformation(card, responseJSON); card.setLifeCycleState(PaymentGatewayRequestLifeCycleState.REJECTED); } if(tokenJSON!=null) { String cardholderName = JSONUtil.getStringParameter(tokenJSON, "cardholder_name", getCRMSession()); String expDate = JSONUtil.getStringParameter(tokenJSON, "exp_date", getCRMSession()); String type = JSONUtil.getStringParameter(tokenJSON, "type", getCRMSession()); String token = JSONUtil.getStringParameter(tokenJSON, "value", getCRMSession()); card.setHolderName(cardholderName); card.setResponseID(token); card.setBrand(payeezyPaymentGatewaySettingBean.getCardBrand(type)); if(expDate!=null) { Integer expMonth = new Integer(expDate.substring(0,2)); Integer expYear = new Integer(expDate.substring(2,4))+2000; card.setExpMonth(expMonth); card.setExpYear(expYear); } } } return card; } private PaymentGatewayResult setTransactionInformation(PaymentGatewayResult result, JSONObject responseJSON) throws Exception{ if(responseJSON!=null) { String transactionStatus = JSONUtil.getStringParameter(responseJSON, "transaction_status", getCRMSession()); String valisationStatus = JSONUtil.getStringParameter(responseJSON, "validation_status", getCRMSession()); if(valisationStatus!=null && valisationStatus.equalsIgnoreCase("success") && transactionStatus!=null && transactionStatus.equalsIgnoreCase("approved")) { String transactionTag = JSONUtil.getStringParameter(responseJSON, "transaction_tag", getCRMSession()); result.setResponseID(transactionTag); result.setLifeCycleState(PaymentGatewayRequestLifeCycleState.POSTED); } else { result = (CreatePaymentGatewayPaymentResult) setErrorInformation(result, responseJSON); result.setLifeCycleState(PaymentGatewayRequestLifeCycleState.REJECTED); } } return result; } private PaymentGatewayResult setErrorInformation(PaymentGatewayResult result, JSONObject responseJSON) throws Exception{ String errorCode = ""; String errorDescription = ""; if(responseJSON!=null) { JSONObject errorJSON = JSONUtil.getJSONObjectParameter(responseJSON, "error", getCRMSession()); if(errorJSON!=null) { JSONArray messagesJSON = JSONUtil.getJSONArrayParameter(errorJSON, "messages", getCRMSession()); if(messagesJSON!=null) { for(int i=0;i<messagesJSON.size();i++) { JSONObject messageJSON = (JSONObject) messagesJSON.get(i); if(messageJSON!=null) { errorCode += JSONUtil.getStringParameter(messageJSON, "code", getCRMSession())+", "; errorDescription += JSONUtil.getStringParameter(messageJSON, "description", getCRMSession())+", "; } } } } } if(errorCode!=null && !errorCode.isEmpty()) { errorCode = errorCode.substring(0, errorCode.length()-2); if(errorCode.length()>32) { errorCode = errorCode.substring(0, 31); } result.setErrorCode(errorCode); } if(errorDescription!=null && !errorDescription.isEmpty()) { errorDescription = errorDescription.substring(0, errorDescription.length()-2); result.setErrorDescription(errorDescription); } return result; } private String getRequest(String url, JSONObject originalRequestJSON) throws Exception{ JSONObject requestJSON = new JSONObject(originalRequestJSON, JSONObject.getNames(originalRequestJSON)); String request=""; if(url!=null) { request = "URL:" +url; } if(requestJSON!=null) { JSONObject creditCardJSON = JSONUtil.getJSONObjectParameter(requestJSON, "credit_card", getCRMSession()); if(creditCardJSON!=null) { creditCardJSON.remove("cvv"); String cardNumber = JSONUtil.getStringParameter(requestJSON, "card_number", getCRMSession()); if(cardNumber!=null) { cardNumber = "************"+cardNumber.substring(cardNumber.length()-4,cardNumber.length()); creditCardJSON.remove("card_number"); } creditCardJSON.put("card_number", cardNumber); } request+= ", Request: "+requestJSON.toString(); } return request; } private String getMetadataList(ArrayList<String> list){ String s = ""; if(list!=null) { for(String o:list) { s += ""+o+","; } if(s.length()>0) { s = s.substring(0, s.length()-1); } } return s; } @Override public Boolean isCurrencySupported(CRMDOCurrency currency, CRMDOPaymentGatewaySetting paymentGatewaySetting) throws Exception { return payeezyPaymentGatewaySettingBean.isCurrencySupported(currency,paymentGatewaySetting); } private PayeezyConnectionParameters getConnectionParameters(PaymentGatewayParameters parameters) throws NoSuchAlgorithmException{ PayeezyConnectionParameters connectionParameters = new PayeezyConnectionParameters(); String mode = (String) parameters.getGeneralparameter(PayeezyParameter.MODE.toString()); String apiKey = null; String merchantToken = null; String apiSecret = null; String jsSecurityKey = null; String transarmorToken = null; String url = null; String nonce = Long.toString(Math.abs(SecureRandom.getInstance("SHA1PRNG").nextLong())); String timestamp = Long.toString(Instant.now().toEpochMilli()); if(mode!=null && mode.equals(PayeezyMode.TEST.toString())) { apiKey = (String) parameters.getGeneralparameter(PayeezyParameter.TEST_API_KEY.toString()); merchantToken = (String) parameters.getGeneralparameter(PayeezyParameter.TEST_MERCHANT_TOKEN.toString()); apiSecret = (String) parameters.getGeneralparameter(PayeezyParameter.TEST_API_SECRET.toString()); jsSecurityKey = (String) parameters.getGeneralparameter(PayeezyParameter.TEST_JS_SECURITY_KEY.toString()); transarmorToken = (String) parameters.getGeneralparameter(PayeezyParameter.TEST_TA_TOKEN.toString()); url = (String) parameters.getGeneralparameter(PayeezyParameter.TEST_URL.toString()); } else if(mode!=null && mode.equals(PayeezyMode.LIVE.toString())) { apiKey = (String) parameters.getGeneralparameter(PayeezyParameter.LIVE_API_KEY.toString()); merchantToken = (String) parameters.getGeneralparameter(PayeezyParameter.LIVE_MERCHANT_TOKEN.toString()); apiSecret = (String) parameters.getGeneralparameter(PayeezyParameter.LIVE_API_SECRET.toString()); jsSecurityKey = (String) parameters.getGeneralparameter(PayeezyParameter.LIVE_JS_SECURITY_KEY.toString()); transarmorToken = (String) parameters.getGeneralparameter(PayeezyParameter.LIVE_TA_TOKEN.toString()); url = (String) parameters.getGeneralparameter(PayeezyParameter.LIVE_URL.toString()); } if(url!=null) { if(parameters instanceof CreateCardParameters) { url += "transactions/tokens"; } else if(parameters instanceof CreatePaymentParameters) { url += "transactions"; } else if(parameters instanceof CreatePaymentCancellationParameters) { url += "transactions"; } } connectionParameters.setApiKey(apiKey); connectionParameters.setMerchantToken(merchantToken); connectionParameters.setUrl(url); connectionParameters.setApiSecret(apiSecret); connectionParameters.setJsSecurityKey(jsSecurityKey); connectionParameters.setContentType("application/json"); connectionParameters.setTransarmorToken(transarmorToken); connectionParameters.setNonce(nonce); connectionParameters.setTimestamp(timestamp); return connectionParameters; } public JSONObject getCreditCardJSON(String cardHolderName, String cardNumber, String cardBrand, Integer expMonth, Integer expYear, String cvv) throws Exception { JSONObject creditCardJSON=new JSONObject(); Integer expDate = null; if(expMonth!=null && expYear!=null) { expDate = expMonth*100+expYear % 1000; } creditCardJSON.put("type", payeezyPaymentGatewaySettingBean.getCardType(cardBrand)); creditCardJSON.put("cardholder_name", cardHolderName); creditCardJSON.put("card_number", cardNumber); creditCardJSON.put("exp_date", expDate); creditCardJSON.put("cvv", cvv); return creditCardJSON; } public JSONObject getTokenJSON(String cardHolderName, String cardReferenceNumber, String cardBrand, Integer expMonth, Integer expYear) throws Exception { JSONObject tokenJSON=new JSONObject(); tokenJSON.put("token_type", "FDToken"); JSONObject tokenDataJSON=new JSONObject(); Integer expDate = null; if(expMonth!=null && expYear!=null) { expDate = expMonth*100+expYear % 1000; } tokenDataJSON.put("type", payeezyPaymentGatewaySettingBean.getCardType(cardBrand)); tokenDataJSON.put("cardholder_name", cardHolderName); tokenDataJSON.put("value", cardReferenceNumber); tokenDataJSON.put("exp_date", expDate); tokenJSON.put("token_data", tokenDataJSON); return tokenJSON; } private String getAuthorization(PayeezyConnectionParameters connectionParameters, String request) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, Exception{ Mac mac=Mac.getInstance(HMAC_SHA256_ALGORITHM); String apiSecret=connectionParameters.getApiSecret(); SecretKeySpec secret_key = new SecretKeySpec(apiSecret.getBytes(), HMAC_SHA256_ALGORITHM); mac.init(secret_key); String apikey = connectionParameters.getApiKey(); String nonce = connectionParameters.getNonce(); String timeStamp = connectionParameters.getTimestamp(); String token = connectionParameters.getMerchantToken(); String payload = request; StringBuilder buff=new StringBuilder(); buff.append(apikey) .append(nonce) .append(timeStamp); if(token!=null){ buff.append(token); } if(payload != null){ buff.append(payload); } String bufferData = buff.toString(); //MessageLogger.logMessage(String.format(bufferData)); byte[] macHash=mac.doFinal(bufferData.getBytes("UTF-8")); //MessageLogger.logMessage(Integer.toString(macHash.length)); //MessageLogger.logMessage(String.format("MacHAsh:{}" , macHash)); String authorizeString = new String(Base64.encodeBase64(toHex(macHash))); // MessageLogger.logMessage(String.format("Authorize:{}" , authorizeString)); return authorizeString; } /** * Converts the bytes to Hex bytes * @param arr * @return */ private byte[] toHex(byte[] arr) { String hex= byteArrayToHex(arr); return hex.getBytes(); } private String byteArrayToHex(byte[] a) { StringBuilder sb = new StringBuilder(a.length * 2); for(byte b: a) sb.append(String.format("%02x", b & 0xff)); return sb.toString(); } @SuppressWarnings("deprecation") private JSONObject getResponse(HttpURLConnection conn, JSONObject request, String requestInfo) throws Exception{ JSONObject responseJSON = null; CallList.LogTextFile(getCRMSession(), requestInfo, PAYEEZY_PAYMENT_GATEWAY_SUC_LOG_PATH,""); OutputStream os = conn.getOutputStream(); os.write(request.toString().getBytes()); os.flush(); if (conn.getResponseCode() != HttpURLConnection.HTTP_OK && conn.getResponseCode() != HttpURLConnection.HTTP_CREATED && conn.getResponseCode() != HttpURLConnection.HTTP_ACCEPTED) { String errorDescription = ""; if(conn.getErrorStream()!=null) { BufferedReader br = new BufferedReader(new InputStreamReader((conn.getErrorStream()))); if(br!=null) { errorDescription = br.readLine(); } } CallList.LogTextFile(getCRMSession(),requestInfo+"\nError: HTTP error code : "+ conn.getResponseCode()+"\nError Description: "+errorDescription,PAYEEZY_PAYMENT_GATEWAY_ERROR_LOG_PATH,""); throw new RuntimeException("Failed : HTTP error code : "+ conn.getResponseCode()+" error description: "+errorDescription); } BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); String output; Date date = DateUtil.getCurrentDate(); long startTime = date.getTime(); long duration = 0; while( true ) { duration =DateUtil.getCurrentDate().getTime() - startTime; if(duration>timeout) { throw new Exception("Time out"); } if ((output = br.readLine()) != null) { try { CallList.LogTextFile(getCRMSession(),requestInfo+"\nResponse: "+output,PAYEEZY_PAYMENT_GATEWAY_SUC_LOG_PATH,""); break; } catch (JSONException ex) { } } else{ try { Thread.sleep(50); } catch (Exception e) { } } } conn.disconnect(); responseJSON = new JSONObject(output); return responseJSON; } } |
6. Summary
...
Page
You will need to create one main summary page for provisioning requests, and two that will be used by the main as drill-downs: one for provisioning request parameters and one for provisioning request process informationpayment gateway requests.
For more information on creating custom summary pages go to Customize Summary Pages.
a. Provisioning Requests
...
title | Provisioning Requests |
---|
...
.
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<summary><?xml version="1.0" encoding="UTF-8"?><summary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../xsd/summary.xsd"> <title>key_provider payment_gateway_requests</title> <sql>FROMPROVISIONINGREQUESTS PAYMENTGATEWAYREQUESTS LEFT JOIN USERS CREATEDBY ON CREATEDBY.USERID =PROVISIONINGREQUESTS PAYMENTGATEWAYREQUESTS.PROVREQCREATEDBYUSERID PAYGATEWAYREQCREATEDBYUSERID LEFT JOIN USERS UPDATEDBY ON UPDATEDBY.USERID =PROVISIONINGREQUESTS PAYMENTGATEWAYREQUESTS.PROVREQUPDATEDBYUSERID PAYGATEWAYREQUPDATEDBYUSERID LEFT JOIN OUUNITS CREATEDBYUNIT ON CREATEDBYUNIT.OUUID =PROVISIONINGREQUESTS PAYMENTGATEWAYREQUESTS.PROVREQCREATEDBYOUUID PAYGATEWAYREQCREATEDBYOUUID LEFT JOIN OUUNITS UPDATEDBYUNIT ON UPDATEDBYUNIT.OUUID =PROVISIONINGREQUESTS PAYMENTGATEWAYREQUESTS.PROVREQUPDATEDBYOUUID PAYGATEWAYREQUPDATEDBYOUUID LEFT JOINPROVPROVIDERS PAYMENTGATEWAYSETTINGS ONPROVPROVIDERS PAYMENTGATEWAYSETTINGS.PROVPROVIDERID PAYGATEWAYSETID =PROVISIONINGREQUESTS PAYMENTGATEWAYREQUESTS.PROVPROVIDERID PAYGATEWAYSETID LEFT JOINSUBSCRIPTIONS PAYMENTGATEWAYCUSTOMERACCOUNT ONSUBSCRIPTIONS PAYMENTGATEWAYCUSTOMERACCOUNT.SUBID PAYGATECUSACCID =PROVISIONINGREQUESTS PAYMENTGATEWAYREQUESTS.SUBID PAYGATECUSACCIDWHERE PROVISIONINGREQUESTS.PROVREQDELETED = 0 AND PROVPROVIDERS.PROVPROVIDERPROTOCOL = 'TUCANO' </sql> <rowsperpage>20</rowsperpage> <primaryfield>PROVISIONINGREQUESTS.PROVREQID</primaryfield> <mainlinkfield>PROVREQNUM</mainlinkfield> <orderbyfields>PROVISIONINGREQUESTS.PROVREQCREATEDDATE DESC</orderbyfields> <multiselect>true</multiselect> <module>CUSTOM_TUCANO</module> <fieldlist> <!-- external filters --> <field> <fieldname>PROVPROVIDERS.PROVPROVIDERID</fieldname> <filtertextoption>equal</filtertextoption> </field> <field> <fieldname>PROVISIONINGREQUESTS.PROVREQID</fieldname> <filtertextoption>equal</filtertextoption> </field> <!-- basic search --> <field> <fieldname>PROVISIONINGREQUESTS.PROVREQNUM</fieldname> <caption>key_number</caption> <filter>true</filter> </field> <field> <fieldname>TYPE_FILTER</fieldname> <fieldfunction>PROVISIONINGREQUESTS.PROVREQTYPECODE</fieldfunction> <caption>key_type</caption> <filter>true</filter> <fixedlookup>ejb/MYCOMPANYCRMUITucanoServiceProvisioningRequest.getTypeOptions:key_all</fixedlookup> </field> <field> <fieldname>LIFECYCLESTATE_FILTER</fieldname> <fieldfunction>PROVISIONINGREQUESTS.LIFECYCLESTATE</fieldfunction> <caption>key_life_cycle_state</caption> <filter>true</filter> <fixedlookup>ejb/MYCOMPANYCRMUITucanoServiceProvisioningRequest.getLifeCycleStateOptions:key_all</fixedlookup> LEFT JOIN ACCOUNTSRECEIVABLE ON PAYMENTGATEWAYCUSTOMERACCOUNT.ACCRECID = ACCOUNTSRECEIVABLE.ACCRECID LEFT JOIN PAYMENTGATEWAYCARDS ON PAYMENTGATEWAYCARDS.PAYGATEWAYCARDID = PAYMENTGATEWAYREQUESTS.PAYGATEWAYCARDID LEFT JOIN ACCPAYMENTPREFERENCES ON ACCPAYMENTPREFERENCES.ACCPAYPREFID = PAYMENTGATEWAYCARDS.ACCPAYPREFID LEFT JOIN PAYMENTPREFERENCES ON PAYMENTPREFERENCES.PAYPREFID = ACCPAYMENTPREFERENCES.PAYPREFID LEFT JOIN PAYMENTS ON PAYMENTS.PAYMENTID = PAYMENTGATEWAYREQUESTS.PAYMENTID LEFT JOIN PAYMENTCANCELLATIONS ON PAYMENTCANCELLATIONS.PAYMENTCANCELID = PAYMENTGATEWAYREQUESTS.PAYMENTCANCELID LEFT JOIN BILLS ON BILLS.BILLID = PAYMENTGATEWAYREQUESTS.BILLID LEFT JOIN WALLETS ON WALLETS.WALLETID = PAYMENTGATEWAYREQUESTS.WALLETID LEFT JOIN SUBSCRIPTIONS ON SUBSCRIPTIONS.SUBID=PAYMENTGATEWAYREQUESTS.SUBID LEFT JOIN PROCESSRUNLOG ON PROCESSRUNLOG.PROCESSRUNLOGID = PAYMENTGATEWAYREQUESTS.PROCESSID WHERE PAYMENTGATEWAYREQUESTS.PAYGATEWAYREQDELETED = 0 AND PAYMENTGATEWAYSETTINGS.PAYMENTGATEWAYPROTOCOL='PAYEEZY' </sql> <rowsperpage>20</rowsperpage> <primaryfield>PAYMENTGATEWAYREQUESTS.PAYGATEWAYREQID</primaryfield> <mainlinkfield>PAYMENTGATEWAYREQUESTS.PAYGATEWAYREQNUM</mainlinkfield> <orderbyfields>PAYMENTGATEWAYREQUESTS.PAYGATEWAYREQCREATEDDATE DESC</orderbyfields> <multiselect>false</multiselect> <entityfilter></entityfilter> <module>CUSTOM_PAYEEZY</module> <fieldlist> <!-- external filters --> <field> <fieldname>PAYMENTGATEWAYREQUESTS.PAYGATEWAYREQID</fieldname> <filtertextoption>equal</filtertextoption> </field> <field><fieldname>PRIORITY_FILTER< <fieldname>PAYMENTGATEWAYREQUESTS.PAYMENTID</fieldname> </field> <field><fieldfunction>PROVISIONINGREQUESTS <fieldname>PAYMENTGATEWAYREQUESTS.PROVREQPRIORITY< PAYMENTCANCELID</fieldfunction> fieldname><caption>key_priority</caption> </field><filter>true</filter> <field><fixedlookup>ejb/MYCOMPANYCRMUITucanoServiceProvisioningRequest.getPriorityOptions:key_all</fixedlookup> <fieldname>PAYMENTGATEWAYREQUESTS.BILLID</fieldname> </field> <field>
<fieldname>SUBSCRIPTIONS<fieldname>PAYMENTGATEWAYREQUESTS.SUBID< WALLETID</fieldname><caption>key_subscription</caption> </field><filter>true</filter> <field><fieldtype>string</fieldtype> <filterlookupname>dataset;subscriptions.load;subid;subnum</filterlookupname> <fieldname>PAYMENTGATEWAYREQUESTS.SUBID</fieldname> </field> <field><fieldname>PROVISIONINGREQUESTS <fieldname>ACCOUNTSRECEIVABLE.PROVREQSCHEDULEDDATE< ACCRECID</fieldname><caption>key_scheduled_date</caption> <filter>true</filter> </field> <field><fieldtype>date< <fieldname>PAYMENTGATEWAYREQUESTS.PAYGATECUSACCID</fieldtype> fieldname><filtertextoption>range< <filtertextoption>equal</filtertextoption> </field><field> <fieldname>PROVISIONINGREQUESTS.PROVREQEXECUTIONDATE</fieldname> <caption>key_executed_date</caption> <filter>true</filter> <!-- fields --> <field><fieldtype>date< <fieldname>PAYMENTGATEWAYREQUESTS.PAYGATEWAYREQNUM</fieldtype> fieldname><filtertextoption>range</filtertextoption> </field> <field> <fieldname>PROCESSNAME_FILTER</fieldname> <caption>key_number</caption><fieldfunction>PROVISIONINGREQUESTS.PROCESSNAME< <summary>true</fieldfunction> summary><caption>key_process_name</caption> <available>true</available> <filter>true</filter><filtertextoption>equal</filtertextoption> <fixedlookup>ejb/MYCOMPANYCRMUITucanoServiceProvisioningRequest.getProvRequestProcessNameOptions:key_all</fixedlookup> <filteravailable>true</filteravailable> </field><field>
<fieldname>PROCESSID_FILTER</fieldname><field><fieldfunction>PROVISIONINGREQUESTS <fieldname>PAYMENTGATEWAYSETTINGS.PROCESSID< PAYGATEWAYSETNAME</fieldfunction> fieldname> <caption>key_payment_process gateway_run< provider</caption><filter>true< <summary>true</filter> summary><filtertextoption>equal</filtertextoption> <filterlookupname>dataset;processrun.tucano.load;PROCESSRUNLOGID;PROCESSRUNLOGNUM:PROCESSID:PROCESSRUNLOGSTATUS:PROCESSRUNLOGSTARTDATE:PROCESSRUNLOGENDDATE</filterlookupname> </field></field>
<field>
<fieldname>STB_FILTER<<fieldname>TYPE</fieldname><fieldfunction>PROVISIONINGREQUESTS.PROVREQID</fieldfunction> <fieldfunction><caption>key_installed_item</caption> <filter>true</filter> <fieldtype>string</fieldtype> CASE<filtercondition> WHENPROVISIONINGREQUESTS.PROVREQID IN ( SELECT PROVREQUESTPARAMETERS.PROVREQID FROM PROVREQUESTPARAMETERS PAYMENTGATEWAYREQUESTS.PAYMENTID IS NOT NULL THEN 'Payment'INNER WHENJOIN PAYMENTGATEWAYREQUESTS.PAYMENTCANCELIDINSTALLEDITEMS ISON NOTPROVREQPARAMNAME NULLIN ( 'SERVICE_CA_ID', 'STB_CA_ID' ) THEN 'Payment Cancellation'AND WHENINSTALLEDITEMS PAYMENTGATEWAYREQUESTS.INSTITEMALTCODE REFUNDID= ISPROVREQUESTPARAMETERS.PROVREQPARAMCHARVALUE WHERE INSTALLEDITEMS.INSTITEMID IN ('#1') NOT NULL THEN 'Refund'AND WHENPROVREQUESTPARAMETERS.PROVREQPARAMDELETED = 0 PAYMENTGATEWAYREQUESTS.PAYGATEWAYCARDID IS NOT NULL THEN 'Card') </filtercondition> <filterlookupname>dataset;inventory.loadinstalleditem;institemid;institemserialnum</filterlookupname> </field> <!-- advanced search --> <field> <fieldname>PROVISIONINGREQUESTS.PROVREQERRORCODE</fieldname> WHEN PAYMENTGATEWAYREQUESTS.PAYGATECUSACCID IS NOT NULL THEN 'Account' END </fieldfunction> <caption>key_error_code< type</caption> <filter>true</filter><filteronexpand>true< <summary>true</filteronexpand> summary></field> <field> <fieldname>PROVISIONINGREQUESTS.PROVREQERRORDESC</fieldname> <caption>key_error_description</caption> <filter>true</filter> <filteronexpand>true</filteronexpand> </field> <fixedlookup>|key_all|Payment|key_payment|Payment Cancellation|key_payment_cancellation|Refund|key_refund|Account|key_account|Card|key_card</fixedlookup> </field> <field><fieldname>CREATEDBYUSER_FILTER< <fieldname>PROCESSRUNDEFINITION</fieldname><fieldfunction>CREATEDBY <fieldfunction>PROCESSRUNLOG.USERID< PROCESSRUNLOGNUM</fieldfunction> <caption>key_created payment_by gateway_user< run</caption><filter>true< <summary>true</filter> summary><filteronexpand>true< </filteronexpand> field><filterlookupname>dataset;users.load;userid;username:name</filterlookupname> </field> <field> <fieldname>CREATEDBYUNIT_FILTER</fieldname> <fieldfunction>CREATEDBYUNIT.OUUID< <field> <fieldname>PAYMENTNUMBER</fieldname> <fieldfunction> case when PAYMENTGATEWAYREQUESTS.LIFECYCLESTATE = 'POSTED' then PAYMENTS.PAYMENTNUM else PAYMENTS.PAYMENTREFNUM end </fieldfunction> <caption>key_created_by_unit< payment</caption><filter>true</filter> <filteronexpand>true</filteronexpand> <filterlookupname>dataset;networkmanagement.loadunits;ouuid;ouuname:ougname:oucname</filterlookupname> <summary>true</summary> <link>javascript:displayModalCreate('financialtransactions/payment','ejb/CRMUIPayment','loadForm','java.lang.String@((PAYMENTGATEWAYREQUESTS.PAYMENTID))','',null,'','')</link> </field> <field><fieldname>PROVREQCREATEDDATE_FILTER< <fieldname>PAYMENTCANCELNUMBER</fieldname><fieldfunction>PROVISIONINGREQUESTS.PROVREQCREATEDDATE</fieldfunction> <fieldfunction><fieldtype>date</fieldtype> CASE<caption>key_date_created</caption> WHEN PAYMENTCANCELLATIONS.LIFECYCLESTATE = 'POSTED'<filter>true</filter> <filteronexpand>true</filteronexpand>
then PAYMENTCANCELLATIONS.PAYMENTCANCELNUM<filtertextoption>range</filtertextoption>
</field>
<field>ELSE PAYMENTCANCELLATIONS.PAYMENTCANCELREFNUM<fieldname>UPDATEDBYUSER_FILTER</fieldname> END<fieldfunction>UPDATEDBY.USERID< </fieldfunction> <caption>key_updated payment_by_user< cancellation</caption><filter>true< <summary>true</filter> <filteronexpand>true</filteronexpand> <filterlookupname>dataset;users.load;userid;username:name</filterlookupname> summary> <link>javascript:displayModalCreate('financialtransactions/paymentCancellation','ejb/CRMUIPaymentCancellation','loadForm','java.lang.String@((PAYMENTGATEWAYREQUESTS.PAYMENTCANCELID))','',null,'','')</link> </field><field>
<fieldname>UPDATEDBYUNIT_FILTER</fieldname><field><fieldfunction>UPDATEDBYUNIT <fieldname>PAYMENTGATEWAYREQUESTS.OUUID< PAYGATEWAYREQREFNUM</fieldfunction> fieldname> <caption>key_updated payment_gateway_by reference_unit< number</caption><filter>true< <summary>true</filter> summary><filteronexpand>true< </filteronexpand> field><filterlookupname>dataset;networkmanagement.loadunits;ouuid;ouuname:ougname:oucname</filterlookupname>
</field>
<field>
<fieldname>PROVREQUPDATEDDATE<fieldname>PAYMENT_FILTER</fieldname><fieldfunction>PROVISIONINGREQUESTS <fieldfunction>PAYMENTS.PROVREQUPDATEDDATE< PAYMENTID</fieldfunction><fieldtype>date</fieldtype>
<caption>key_ date_updated<payment</caption> <filter>true</filter><filteronexpand>true</filteronexpand> <filtertextoption>range</filtertextoption> <filterlookupname>dataset;financialtransactions.loadpayments;paymentid;paymentrefnum</filterlookupname> </field><!-- fields -->
<field>
<fieldname>PROVISIONINGREQUESTS.PROVREQNUM<<fieldname>PAYMENT_CANCELLATION_FILTER</fieldname><caption>key_number</caption> <fieldfunction>PAYMENTCANCELLATIONS.PAYMENTCANCELID</fieldfunction><summary>true</summary> <caption>key_payment_cancellation</caption> <filter>true</filter> <filterlookupname>dataset;financialtransactions.loadpaymentcancellations;paymentcancelid;paymentcancelrefnum</filterlookupname> </field> <field><fieldname>TYPE< <fieldname>CARD_FILTER</fieldname><fieldfunction>PROVISIONINGREQUESTS <fieldfunction>PAYMENTGATEWAYCARDS.PROVREQTYPECODE< PAYGATEWAYCARDID</fieldfunction> <caption>key_type< payment_gateway_card</caption><summary>true< <filter>true</summary> filter><fixedlookup>ejb/CRMUITucanoServiceProvisioningRequest.getTypeOptions:key_n/a</fixedlookup> <filterlookupname>dataset;paymentgateway.loadcards;paygatewaycardid;PAYGATEWAYCARDHOLDERNAME</filterlookupname> </field><field>
<fieldname>LIFECYCLESTATE</fieldname><field><fieldfunction>PROVISIONINGREQUESTS <fieldname>ACCOUNTSRECEIVABLE.LIFECYCLESTATE< ACCRECID</fieldfunction> fieldname> <caption>key_life account_cycle_state< name</caption><summary>true</summary> <filter>true</filter> <filteravailable>true</filteravailable><fixedlookup>ejb/CRMUITucanoServiceProvisioningRequest.getLifeCycleStateOptions:key_n/a</fixedlookup> <fieldtype>string</fieldtype> <filterlookupname>dataset;accounts.load;accrecid;accrecname</filterlookupname> </field> <field><fieldname>SCHEDULEDDATE< <fieldname>SUBSCRIPTION_FILTER</fieldname><fieldfunction>PROVISIONINGREQUESTS <fieldfunction>SUBSCRIPTIONS.PROVREQSCHEDULEDDATE< SUBID</fieldfunction> <caption>key_scheduled_date< subscription</caption> <filter>true</filter><summary>true</summary> <filterlookupname>dataset;subscriptions.load;subid;subnum</filterlookupname> </field> <field><fieldname>EXECUTIONDATE< <fieldname>ACCOUNTSRECEIVABLE.ACCRECNUM</fieldname><fieldfunction>PROVISIONINGREQUESTS.PROVREQEXECUTIONDATE</fieldfunction>
<caption>key_ executedaccount_date< number</caption><summary>true</summary> <mouseover>true</mouseover> <summary>true</summary> <link>javascript:displayModalCreate('accounts/accountReceivable','ejb/CRMUIAccountReceivable','loadForm','java.lang.String@((ACCOUNTSRECEIVABLE.ACCRECID))','',null,'','')</link> </field> <field><fieldname>SUBSCRIPTIONS <fieldname>PAYMENTPREFERENCES.SUBNUM< PAYPREFNAME</fieldname> <caption>key_subscription< _accounts_receivable_payment_preference</caption> <mouseover>true</mouseover> <summary>true</summary> </field><field>
<fieldname>CREATEDBYUSERNAME</fieldname><field><fieldfunction>CREATEDBY <fieldname>PAYMENTGATEWAYCARDS.USERNAME< PAYGATEWAYCARDHOLDERNAME</fieldfunction> fieldname> <caption>key_created payment_by gateway_user< card</caption><expand>true</expand> <mouseover>true</mouseover> <summary>true</summary> </field><field>
<fieldname>UPDATEDBYUSERNAME</fieldname><field><fieldfunction>UPDATEDBY <fieldname>PAYMENTGATEWAYCUSTOMERACCOUNT.USERNAME< PAYGATECUSACCNUM</fieldfunction> fieldname> <caption>key_updated payment_gateway_by customer_user< account</caption><expand>true</expand> <mouseover>true</mouseover> <summary>true</summary> </field> <field><fieldname>CREATEDBYUNITOUUNAME< <fieldname>BILLS.BILLNUM</fieldname><fieldfunction>CREATEDBYUNIT.OUUNAME</fieldfunction> <caption>key_created_by_unit< <caption>key_paid_bill</caption><expand>true< <summary>true</expand> summary>< <available>true</field> available><field> <fieldname>UPDATEDBYUNITOUUNAME</fieldname> <fieldfunction>UPDATEDBYUNIT.OUUNAME</fieldfunction> <caption>key_updated_by_unit</caption> <expand>true</expand> </field> <field> <fieldname>PROVISIONINGREQUESTS.PROVREQCREATEDDATE< <link>javascript:displayModalCreate('billing/bill','ejb/CRMUIBill','loadForm','java.lang.String@((PAYMENTGATEWAYREQUESTS.BILLID))','',null,'','')</link> </field> <field> <fieldname>BILL_FILTER</fieldname><fieldtype>date< <fieldfunction>BILLS.BILLID</fieldtype> fieldfunction> <caption>key_date paid_created< bill</caption><expand>true</expand> <filter>true</filter> <filterlookupname>dataset;billing.load;billid;billnum</filterlookupname> </field> <field><fieldname>PROVISIONINGREQUESTS <fieldname>WALLETS.PROVREQUPDATEDDATE< WALLETNUM</fieldname><fieldtype>date</fieldtype> <caption>key_topped_date up_updated< wallet</caption><expand>true< <summary>true</expand> summary>< <available>true</field> available><field> <fieldname>PROVISIONINGREQUESTS.PROVREQREQUEST</fieldname> <caption>key_request</caption> <expand>true</expand> </field> <link>javascript:displayModalCreate('wallets/wallet','ejb/CRMUIWallet','loadForm','java.lang.String@((PAYMENTGATEWAYREQUESTS.WALLETID))','',null,'','')</link> </field> <field><fieldname>PROVISIONINGREQUESTS <fieldname>SUBSCRIPTIONS.PROVREQRESPONSE< SUBNUM</fieldname> <caption>key_response< subscription</caption> <summary>true</summary><expand>true< <available>true</expand> available></field> <link>javascript:displayModalCreate('subscriptions/subscription','ejb/CRMUISubscription','loadForm','java.lang.String@((PAYMENTGATEWAYREQUESTS.SUBID))','',null,'','')</link> <!-- drilldowns --> /field> <field><fieldname>PARAMETERS <fieldname>WALLETNUM_DD< FILTER</fieldname><fieldfunction>''< <fieldfunction>WALLETS.WALLETID</fieldfunction> <caption>key_parameters< wallet</caption><summary>true< <filter>true</summary> filter><fieldtype>label</fieldtype> <label>key_parameters</label> <link>drilldown:provisioning/tucano/request_parameters;hidefilters~true~PROVREQUESTPARAMETERS.PROVREQID~((PROVISIONINGREQUESTS.PROVREQID))</link> </field> <filterlookupname>dataset;wallets.load;walletid;walletnum</filterlookupname> </field> <field><fieldname>PROCESSINFORMATION <fieldname>PROCESSID_DD< FILTER</fieldname><fieldfunction>''< <fieldfunction>PAYMENTGATEWAYREQUESTS.PROCESSID</fieldfunction> <caption>key_process_information< run</caption><summary>true< <filter>true</summary> filter><fieldtype>label< <filtertextoption>equal</fieldtype> filtertextoption><label>key_process_information</label>
<link>drilldown:provisioning/tucano/request_processInformation;hidefilters~true~PROVISIONINGREQUESTS.PROVREQID~((PROVISIONINGREQUESTS.PROVREQID))</link><filterlookupname>dataset;processrun.paymentgateway.loadpayeezy;PROCESSRUNLOGID;PROCESSRUNLOGNUM:PROCESSID:PROCESSRUNLOGSTARTDATE:PROCESSRUNLOGENDDATE</filterlookupname> </field></fieldlist> </summary> |
b. Provisioning Request Parameters
Ui expand | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
|
c. Provisioning Request Process Information
Ui expand | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
|
7. Data Entry Page
You will need to create one data entry page for the provisioning provider. For more information on creating custom data entry pages go to Customize Data Entry Pages.
Ui expand | ||||||
---|---|---|---|---|---|---|
| ||||||
Note that, generic components should be used for Log Information and Allowed Application Servers sections. Code Block | | |||||
|
7. Data Entry Page
You will need to create one data entry page for the payment gateway. For more information on creating custom data entry pages go to Customize Data Entry Pages.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../xsd/dataEntry.xsd"> <id>paymentgateway/payeezy/setting</id> <name/> <datapath>name</datapath> <entity></entity> <module>CUSTOM_PAYEEZY</module> <functioncall> <functions> <function> </function> </functions> </functioncall> <datasources> <datasource> <key>form</key> <classname>com.crm.web.generator.datasource.DTODatasource</classname> </datasource> </datasources> <mainmenu> <components> <component><id>cmpPassword< <id>cmpHome</id> <name>key_password< home</name> <hideinmodal>true</hideinmodal> <visiblemodes>read</visiblemodes> <elements><password> <button><id>pswPassword< <id>btnHome</id><label>key <name>key_password< home</label> name><datapath>provisioningParameters/password</datapath> <setmode>read</setmode> <refresh>page</refresh><datatype>java.lang.String</datatype> <url>page.do?act=summary&xml=paymentgateway/payeezy/settings</url> </password> button> </elements> </component>
<component>
<id>cmpAddressCountry<<id>cmpNew</id> <name>key_address_country< new</name> <hideinmodal>true</hideinmodal> <visiblemodes>read</visiblemodes> <elements><textbox> <button><id>txtAddressCountry< <id>btnNew</id><label>key <name>key_address_country< new</label> name><datapath>provisioningParameters <setmode>new</addressCountry</datapath> setmode><datatype>java.lang.String</datatype> <refresh>page</refresh></textbox> <functioncall></elements> <functions></component> <function> <type>ejb</type><component> <id>cmpLanguageID<<classname>ejb/PAYEEZYCRMUIPayeezyPaymentGatewaySetting</id> classname><name>key_language_id</name> <functionname>createButton</functionname><elements> <textbox><resultaction>replace</resultaction><id>txtLanguageID< <datatype>root</id> datatype><label>key_language_id</label> <parameters><datapath>provisioningParameters/languageID</datapath> <datatype>java.lang.String</datatype><parameter></textbox> </elements>
<<value>PAYEEZY</component> value> <component>
<id>cmpDefaultProductID</id><datatype>java.lang.String</datatype><name>key_default_product_id</name> <elements>
</parameter><textbox> <id>txtDefaultProductID<</id> parameters><label>key_default_product_id</label> </function><datapath>provisioningParameters/defaultProductID</datapath> </functions><datatype>java.lang.Integer</datatype> </functioncall> </textbox> button> </elements> </component> <component>
<id>cmpSTBMaterialID<<id>cmpEdit</id> <name>key_stb_material_id< edit</name> <visiblemodes>read</visiblemodes> <elements><textbox> <button><id>txtSTBMaterialID< <id>btnEdit</id><label>key_stb_material_id</label> <name>key_edit</name> <visibilityconditions>'[[getValue,java.lang.String,isEditable]]'!='0'</visibilityconditions><datapath>provisioningParameters <setmode>edit</stbMaterialID</datapath> setmode><datatype>java.lang.Integer</datatype> <refresh>page</refresh></textbox> </elements> <disableonclick>true</disableonclick></component> <functioncall><component> <id>cmpProviderID</id><functions><name>key_provider_id</name> <elements><function> <textbox>
<id>txtProviderID<<type>ejb</id> type><label>key_provider_id</label> <classname>ejb/PAYEEZYCRMUIPayeezyPaymentGatewaySetting</classname><datapath>provisioningParameters/providerID</datapath> <datatype>java.lang.String</datatype><functionname>editButton</functionname></textbox> <<resultaction>replace</elements> resultaction></component>
<component><datatype>root</datatype><id>cmpTVEAdapter</id> <name>key_tve_adapter</name> <parameters><elements> <textbox><parameter><id>txtTVEAdapter</id> <label>key_tve_adapter</label><value>[[getDTO]]</value><datapath>provisioningParameters/tveAdapter</datapath> <datatype>java.lang. String<Object</datatype> </textbox> parameter> </elements> parameters></component> </function><component> <id>cmpJWTKey<</id> functions><name>key_jwt_key</name> </functioncall><elements> </button><password> <button><id>pswJWTKey< <id>btnEdit</id><label>key <name>key_jwt_key< edit</label> name><datapath>provisioningParameters/jwtKey</datapath> <visibilityconditions>'[[getValue,java.lang.String,isEditable]]'=='0'</visibilityconditions><datatype>java.lang.String</datatype> <style>TopToolbarItemsDisabled</style> </password> button> </elements> </component> <component>
<id>cmpJWTExpirationTime<<id>cmpSave</id> <name>key_jwt_expiration_time_in_seconds< save</name><elements> <visiblemodes>edit,new</visiblemodes><textbox> <elements><id>txtJWTExpirationTime</id> <button><label>key_jwt_expiration_time_in_seconds</label> <id>btnSave</id><datapath>provisioningParameters/jwtExpirationTimeInSeconds</datapath> <name>key_save</name><datatype>java.lang.Integer</datatype> </textbox> <setmode>read</setmode>< <refresh>page</elements> refresh></component> <functioncall><component> <id>cmpDistributorsDrilldown</id>
<name>key_distributors</name><functions><elements> <drilldown>
<id>ddDistributors</id>
<tabid>tabDistributors</tabid><function></drilldown> <<type>ejb</elements> type></component>
<component><classname>ejb/PAYEEZYCRMUIPayeezyPaymentGatewaySetting</classname><id>cmpServicesDrilldown</id> <name>key_services< <functionname>saveButton</name> functionname><elements> <drilldown><resultaction>replace</resultaction><id>ddServices< <datatype>root</id> datatype> <tabid>tabServices</tabid>
</drilldown><parameters></elements> </component>
<parameter><component> <id>cmpDevicesDrilldown</id>
<name>key_devices</name><value>[[getDTO]]</value><elements> <drilldown>
<datatype>java.lang.Object</datatype><id>ddDevices</id> <tabid>tabDevices<</tabid> parameter></drilldown> </ elements>parameters></component> </components> function></main> <details>
<tabs>
<tab></functions><id>tabDevices< </id> functioncall><name>key_stb</name> </button><reload>true< </reload> elements><datasourcesetkey>physicalGoods< </datasourcesetkey> component><rowvisibilityconditions> <component>'[[getValue,java.lang.String,physicalGoods[CURRENT_ROW]/value]]'=='DECODER' <id>cmpCancel</id>< <name>key_cancel</rowvisibilityconditions> name><functioncall> <visiblemodes>edit,new</visiblemodes><functions> <elements><function> <button><type>ejb< <id>btnCancel</type> id><classname>ejb/MYCOMPANYCRMUITucanoServiceProvider</classname> <name>key_cancel</name><functionname>loadPhysicalGoodsTab< <setmode>read</functionname> setmode><resultaction>setreplace</resultaction> <refresh>cancel,page.do?act=summary&xml=paymentgateway/payeezy/settings</refresh><datapath>physicalGoods< </datapath> button> </elements><datasourcesetkey>physicalGoods< </datasourcesetkey> component> </components> </mainmenu> <main><parameters> <components><parameter> <component><value>[[getDTO]]</value> <id>cmpEmpty</id> <elements><datatype>java.lang.Object</datatype> <emptyline></emptyline> </elements> </parameter> component></parameters> <component>< <id>cmpParametersDrilldown</function> id></functions> <name>key_parameter</name></functioncall> <elements><tabmenu> <drilldown><components> <id>ddParameters</id><component> <tabid>tabParameters</tabid><id>cmpAdd< </id> drilldown> </elements><name>key_add</name> </component> <component><visiblemodes>edit,new< <id>cmpParametersEmtpyDrilldown</visiblemodes> id> <name/> <elements> <emptyline/><modal> </elements> </component> <component><id>mdlAdd< <id>cmpEmptyLine</id> <elements> <emptyline/><name>key_add</name> </elements> </component> <component><type>search< <id>cmpCurrenciesEmpty</type> id> <name/><refresh>tab,tabDevices</refresh> <elements> <emptyline/><datasetname>products.loadtypes< </datasetname> elements> </component><datasetreturnhiddenfield>PRODTYPEID</datasetreturnhiddenfield> <component> <id>cmpEmpty1</id><filter>PRODUCTTYPES.PRODTYPECLASSIFICATION='PHYSICALGOODS <visibilityconditions>'[[getAlias,java.lang.String,showPaymentType]]'!='1'</filter> visibilityconditions> <elements><assignments> <emptyline></emptyline> </elements> </component><assignment> <component> <id>cmpEmpty2</id><datapath>modal</datapath> <visibilityconditions>'[[getAlias,java.lang.String,showRefundType]]'!='1'</visibilityconditions> <elements><datatype>alias< <emptyline></datatype> emptyline> </elements> </ assignment>component> <component>< <id>cmpEmpty3</assignments> id> <elements><onclosefunction> <emptyline></emptyline> </elements> </component><functions> <component> <id>cmpEmpty4</id><function> <elements> <emptyline></emptyline> </elements><type>ejb< </type> component> <component><classname>ejb/MYCOMPANYCRMUITucanoServiceProvider</classname> <id>cmpEmpty5</id> <elements><functionname>addSetTopBoxButton</functionname> <emptyline></emptyline> </elements> </component><resultaction>setappend</resultaction> </components> </main> <details> <tabs><datapath>physicalGoods</datapath> <tab> <id>tabCurrencies</id> <name>key_currencies</name><datasourcesetkey>physicalGoods< <datasourcesetkey>paymentGatewayCurrencies</datasourcesetkey> <functioncall><parameters> <functions> <function><parameter> <type>ejb</type> <classname>ejb/PAYEEZYCRMUIPayeezyPaymentGatewaySetting</classname><value>[[getDTO]]</value> <functionname>loadCurrenciesTab</functionname><datatype>java.lang.Object</datatype> <resultaction>setreplace</resultaction></parameter> <datapath>paymentGatewayCurrencies</datapath> <datasourcesetkey>paymentGatewayCurrencies</datasourcesetkey><parameter> <parameters> <parameter> <value>[[getAlias,java.lang.String,modal getDTO]]</value> <datatype>java. utillang.ArrayList< Object</datatype> </parameter>
</parameters>
</function>
</functions>
</ onclosefunction>functioncall></modal> <tabmenu></elements> </component> <components> <component><id>cmpRemove< <id>cmpAdd</id> <name>key_remove< add</name> <visiblemodes>edit,new</visiblemodes> <elements> <button><id>btnRemove< <id>btnAdd</id> <name>key_remove< add</name> <refresh>tab,tabDevices< tabCurrencies</refresh> <functioncall> <functions> <function> <type>ejb</type> <classname>ejb/MYCOMPANYCRMUITucanoServiceProvider< PAYEEZYCRMUIPayeezyPaymentGatewaySetting</classname><functionname>removePhysicalGoodButton< <functionname>addCurrencyButton</functionname><datasourcesetkey>physicalGoods< <datasourcesetkey>paymentGatewayCurrencies</datasourcesetkey><resultaction>markdeleted< <resultaction>setappend</resultaction> <parameters> <parameter>
<value>[[ getSelectedDTOs,java.lang.String,physicalGoodsgetDTO]]</value> <datatype>java.lang.Object</datatype>
</parameter>
</parameters>
</function>
</functions>
</functioncall>
</button>
</elements>
</component>
</components><component></tabmenu> <components><id>cmpRemove</id><component> <id>cmpSelect</id><name>key_remove</name><name /> <visiblemodes>edit,new</visiblemodes> <elements><rowselector> <button><id>rowID< <id>btnRemove</id> <name>key_remove</name><datapath>id</datapath> <<refresh>tab,tabCurrencies</rowselector> refresh></elements> </component><functioncall><component> <id>cmpProductType</id><functions><name>key_product_type</name> <elements><function><textbox> <type>ejb</type><id>txtProduct</id> <datapath>productType<classname>ejb/name< PAYEEZYCRMUIPayeezyPaymentGatewaySetting</datapath> classname><readonly>true</readonly> </textbox><functionname>removeCurrencyButton</functionname></elements> < <datasourcesetkey>paymentGatewayCurrencies</component> datasourcesetkey><component> <id>cmpProductDescription< <resultaction>setdelete</id> resultaction><name>key_description</name> <elements><parameters><textbox> <id>txtProductDescription</id><parameter><datapath>productType/description</datapath> <readonly>true</readonly>
<value>[[getSelectedDTOs,java.lang.String,paymentGatewayCurrencies]]</value></textbox> </elements>
<datatype>java.lang.Object</datatype></component> </components>
</ tab>parameter> <tab>
<id>tabServices<</id> parameters><name>key_services</name> <datasourcesetkey>services</datasourcesetkey>
</function><functioncall> <functions>
</functions><function> <type>ejb<</type> functioncall><classname>ejb </MYCOMPANYCRMUITucanoServiceProvider</classname> button><functionname>loadServicesTab< </functionname> elements><resultaction>setreplace< </resultaction> component><datapath>services< </datapath> components><datasourcesetkey>services</datasourcesetkey> </tabmenu> <components><parameters> <component><parameter> <id>cmpSelect</id> <name/><value>[[getDTO]]</value> <elements><datatype>java.lang.Object</datatype> <rowselector>< <id>rowID</parameter> id>< <datapath>id</parameters> datapath> </function> rowselector> </functions> elements> </functioncall> component><tabmenu> <components>
<component>
<id>cmpAdd<<id>cmpCurrency</id> <name>key_ add<currency</name><visiblemodes>edit,new</visiblemodes> <elements><elements> <selectbox><modal> <id>slbCurrency</id><id>mdlAdd< <lookuptype>ejb</id> lookuptype><name>key_add</name> <datapath>currency</datapath><type>search< <datapathid>id</type> datapathid><refresh>tab,tabServices;tab,tabDistributors</refresh> <classname>com.crm.dataobject.platform.CRMDOCurrency</classname><datasetname>products.loadservices</datasetname> <datatype>load</datatype><datasetreturnhiddenfield>PRODID< <reload>true</datasetreturnhiddenfield> reload><assignments> <refresh>page</refresh><assignment> <onload> <datapath>modal<<type>ejb</datapath> type><datatype>alias</datatype> <classname>ejb/CRMUIPaymentGatewaySetting</classname>< <functionname>getCurrencyCodeOptions</assignment> functionname></assignments> <parameters><onclosefunction> <parameter><functions> <value>[[getDTO]]</value><function> <datatype>java.lang.Object</datatype> </parameter><type>ejb</type> </parameters><classname>ejb/MYCOMPANYCRMUITucanoServiceProvider</classname> </onload> </selectbox><functionname>addServiceButton< </functionname> elements> </component> </components><resultaction>setappend< </resultaction> tab> <tab><datapath>services< <id>tabParameters</datapath> id> <rowvisibilityconditions>'[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/isVisible]]'==1</rowvisibilityconditions> <name>key_parameters</name><datasourcesetkey>services< <datasourcesetkey>gatewayParameters</datasourcesetkey> <functioncall><parameters> <functions> <function><parameter> <type>ejb</type> <classname>ejb/PAYEEZYCRMUIPayeezyPaymentGatewaySetting</classname><value>[[getDTO]]</value> <functionname>loadParametersTab</functionname> <resultaction>setreplace</resultaction><datatype>java.lang.Object</datatype> <datapath>gatewayParameters</datapath> <datasourcesetkey>gatewayParameters</datasourcesetkey>< <datasortby>order,asc</parameter> datasortby> <parameters> <parameter> <value>[[ getAlias,java.lang.String,modalgetDTO]]</value> <datatype>java. utillang.ArrayList< Object</datatype> </parameter>
</parameters>
</function> <function>< <type>ejb</functions> type></onclosefunction> <classname>ejb/PAYEEZYCRMUIPayeezyPaymentGatewaySetting</classname>< <functionname>echoDTOs</modal> functionname>< <resultaction>setoverwrite</elements> resultaction>< <datasourcesetkey>gatewayParameters</component> datasourcesetkey><component> <datasortby>order,asc</datasortby><id>cmpRemove</id> <parameters><name>key_remove</name> <parameter><visiblemodes>new,edit</visiblemodes> <value>[[getAllDTOs,java.lang.String,gatewayParameters]]</value><elements> <datatype>java.lang.Object</datatype><button> </parameter><id>btnRemove< </id> parameters><name>key_remove</name> </function> </functions><refresh>tab,tabServices;tab,tabDistributors</refresh> </functioncall> <tabmenu><functioncall> <components> </components><functions> </tabmenu> <components><function> <component> <id>cmpSelect</id><type>ejb< <name/type> > <elements><classname>ejb/MYCOMPANYCRMUITucanoServiceProvider</classname> <rowselector> <id>rowID</id><functionname>removeServiceButton</functionname> <datapath>id</datapath><datasourcesetkey>services< </datasourcesetkey> rowselector> </elements><resultaction>markdeleted< </resultaction> component> <component><parameters> <id>cmpParameter</id> <name>key_parameter</name><parameter> <elements> <textbox><value>[[getSelectedDTOs,java.lang.String,services]]</value> <id>txtParameter</id> <datapath>parameter/name</datapath><datatype>java.lang.Object</datatype> <readonly>true</readonly> <datatype>alias</datatype> </parameter> textbox> </elements> </ parameters>component> <component>< <id>cmpValue</function> id> <name>key_value</name></functions> <elements></functioncall> <textbox></button> <visibilityconditions></elements> </component> '[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/type]]'=='String' &&</components> </tabmenu>('[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='TEST_MERCHANT_TOKEN' ||<components> <component>'[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='TEST_URL' ||<id>cmpSelect</id> <name/>'[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='TEST_TA_TOKEN' ||<elements> <rowselector>
<id>rowID</id>
'[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='TEST_API_KEY' ||<datapath>id</datapath> '[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='LIVE_MERCHANT_TOKEN' ||</rowselector> '[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='LIVE_URL' ||</elements> </component>
<component>'[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='LIVE_TA_TOKEN' ||<id>cmpProduct</id> <name>key_product</name>'[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='LIVE_API_KEY')<elements> <textbox></visibilityconditions><id>txtProduct< <id>txtValue</id><datapath>product <datapath>value/code< stringValue</datapath><readonly>true< <width>50%</readonly> width> </textbox></elements> </component> <selectbox><component> <id>cmpProductDescription<<id>slbMode</id><name>key_description</name> <visibilityconditions><elements> <textbox>
'[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/type]]'=='String' &&<id>txtProductDescription</id> '[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='MODE'<datapath>product </description</datapath> visibilityconditions><readonly>true< <lookuptype>ejb</readonly> lookuptype></textbox> <datapath>value/stringValue</datapath></elements> </component>
<component><datatype>enum</datatype><id>cmpProductIdentifier</id> <name>key_provisioning_system_identifier</name> <elements> <classname>com.crm.dataobject.paymentgateway.braintree.BraintreeMode</classname><textbox> <refresh>section,secAuthenticationSettings</refresh><id>txtProductIdentifier</id> <onload><datapath>value< <type>ejb</datapath> type></textbox> <classname>ejb/PAYEEZYCRMUIPayeezyPaymentGatewaySetting</classname></elements> <<functionname>getModeOptions</component> functionname></components> </ tab>onload><tab> <id>tabDistributors</id> <onchange><name>key_distributors</name> <datasourcesetkey>provisioningDistributors</datasourcesetkey><functions><functioncall> <functions> <function><function> <type>ejb</type> <classname>ejb/MYCOMPANYCRMUITucanoServiceProvider< PAYEEZYCRMUIPayeezyPaymentGatewaySetting</classname><functionname>loadDistributorsTab< <functionname>setParametersVisibility</functionname><resultaction>setreplace< <resultaction>replace</resultaction><datapath>provisioningDistributors</datapath> <datatype>root</datatype><datasourcesetkey>provisioningDistributors</datasourcesetkey> <parameters><parameters> <parameter> <value>[[getDTO]]</value> <datatype>java.lang.Object</datatype></parameter> </ parameters>parameter></function> </ functions>parameters></functioncall> <components>
</function><component> <id>cmpDistributorName<</id> functions><name>key_name</name> <elements> <textbox> <id>txtDistributorName</id> </onchange><datapath>name< <width>50%</datapath> width> </textbox> selectbox></elements> <password></component> <visibilityconditions><component> <id>cmpDistributorAltCode</id> '[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/type]]'=='String' &&<name>key_alternative_code</name> ('[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='TEST_API_SECRET' ||<elements> '[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='TEST_JS_SECURITY_KEY' ||<textbox> <id>txtDistributorAltCode</id>
'[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='LIVE_API_SECRET' ||<datapath>altCode</datapath> '[[getValue,java.lang.String,gatewayParameters[CURRENT_ROW]/parameter/name]]'=='LIVE_JS_SECURITY_KEY') </textbox> visibilityconditions></elements> </component><id>pswPassword</id><component> <id>cmpDistributorDescription</id>
<name>key_description</name>
<datapath>value/stringValue</datapath><elements> <textbox><datatype>java.lang.String</datatype><id>txtDistributorDescription< <width>50%</id> width><datapath>description< </datapath> password></textbox>
</elements>
</component>
</components>
</tab>
</tabs>
</details>
</page> |
Code Block | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| providerCustomlayout
| true | <page>
| |||||||||
<?xml version="1.0" encoding="UTF-8"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../xsd/dataEntryLayout.xsd"> <mainmenu> <components> <component><id>cmpEdit</id></component> <component><id>cmpSave</id></component> <component><id>cmpCancel</id></component> <component><id>cmpActions</id></component> </components> </mainmenu> <main> <view> <type>areas</type> <screenareas> <screenarea> <leftscreenarea> <sections> <section><id>secMainInformation</id></section>
<section><id>secDistributors</id></section>
<section><id>secServices<<section><id>secAuthenticationSettings</id></section><section><id>secPhysicalGoods< <section><id>secSupportedAttributes</id></section> <section><id>secAllowedApplicationServers</id></section>
<section><id>secLogInformation</id></section>
</sections>
</leftscreenarea>
</screenarea>
</screenareas>
</view>
<sections>
<section>
<id>secMainInformation</id>
<name>key_main_information</name>
<disable>false</disable>
<subsections><instruction>key_instruction_setting_sec_main_information</instruction><id>secProvider</id> <left><id>secConnectionParameters</id> <components></subsections> </section> <component><id>file:general/name.xml</id></component> <component><id>file:general/altCode.xml</id></component><section> <id>secProvider</id>
<component><id>file:paymentgateway/paymentGateway.xml</id></component><name>key_provider_information</name> <disable>false< </disable> components><instruction>key_instruction_billing_provisioning_tucano_provider_main_information_provider</instruction> </left><left> <right><columns>2</columns> <components><components> <component><id>file:paymentgateway/lifeCycleState.xml</id></component><component><id>cmpName< <component><id>file:general/description.xml</id></component><component><id>cmpProvisioningProtocol</id></component>
<component><id>cmpAltCode</id></component></components> </right> </section><component> <section> <id>secLogInformation</id><id>file:general/description_rowspan_2.xml</id> <name>key_log_information</name> <disable>false</disable><rowspan>2</rowspan> <left></component> <components><component><id>cmpLifeCycleState< <component><id>file:loginfo/logInfoGroup.xml</id></component> </components> </left> </section> <section><id>secConnectionParameters< <id>secAuthenticationSettings</id> <name>key_connection authentication_parameters< settings</name> <disable>false</disable> <instruction>key_instruction_billing setting_provisioning sec_tucano_provider_main_information_connection_parameters< authentication_settings</instruction> <left><columns>2</columns> <components><components> <component><component><id>cmpURL</id>< <id>cmpParametersDrilldown</id> </component> </components><component><id>cmpIdentityKey</id></component> </left> <right> <components> <component> <id>cmpParametersEmtpyDrilldown</id><component><id>cmpUsername</id>< </component><component><id>cmpPassword</id></component> </components> </right><component><id>cmpAddressCountry< </id></component> section><component><id>cmpLanguageID</id></component> <section><component><id>cmpDefaultProductID</id></component> <id>secSupportedAttributes</id><component><id>cmpSTBMaterialID</id></component> <name>key_supported_attributes</name><component><id>cmpProviderID</id></component> <disable>false</disable><component><id>cmpTVEAdapter</id></component> <subsections><component><id>cmpJWTKey</id></component> <id>secFinancialSettings</id><component><id>cmpJWTExpirationTime</id></component> <id>secCurrencies</id>< <id>secAllowedApplicationServers</components> id> </left> subsections> </section>
<section>
<id>secServices<<id>secFinancialSettings</id> <name>key_financial_services< settings</name><disable>false</disable> <instruction>key_ instructioninstructions_billing setting_provisioning generic_tucano sec_provider_services_service_package_mapping< financial_settings</instruction> <disable>false</disable> <left> <columns>3</columns> <components><component><id>cmpServicesDrilldown< <component><id>file:paymentgateway/paymentMethod.xml</id></component> <component><id>file:paymentgateway/paymentType.xml</id></component> <component><id>cmpEmpty1</id></component></components> </left> <component><id>cmpEmpty3</id></component> <component><id>file:paymentgateway/paymentCancellationType.xml</id></component></section> <component><section> <id>secPhysicalGoods<<id>cmpEmpty5</id><name>key_physical_goods</name> <colspan>2</colspan><disable>false< </disable> component><instruction>key_instruction_billing_provisioning_perception_provider_physical_goods_devices</instruction> <component><left> <components><id>file:paymentgateway/paymentPreferences.xml</id><component><id>cmpDevicesDrilldown</id>< </component> </components> </left> </section> <section>
<id>secDistributors<<id>secCurrencies</id> <name>key_distributors< currencies</name> <disable>false</disable> <instruction>key_instruction_billing setting_provisioning payeezy_tucano sec_provider_distributors< currencies</instruction> <left><columns>4</columns>
<components>
<component><id>cmpDistributorsDrilldown<<component><id>file:paymentgateway/currencies.xml</id></component> </components></left> </section> <section> <id>secAllowedApplicationServers</id> <name>key_allowed_application_servers</name> <disable>false</disable> <instruction>key_instruction_provisioning_conax_web_services_provider_sec_allowed_application_servers</instruction> </left><left> <right> <components><component><id>file:platform/allowedApplicationServers.xml</ <component><id>cmpCurrenciesEmpty</id></component> </components> </left> right> </section> <section><id>secLogInformation< <id>secAllowedApplicationServers</id> <name>key_log allowed_application_information< servers</name> <disable>false</disable> <instruction>key_instruction_provisioning_conax_web_services_provider_sec_allowed_application_servers</instruction> <left> <components> <component><id>file:loginfo platform/logInfoGroup allowedApplicationServers.xml</id></component> </components> </left> </section> </sections> </main> <details><view>default</view> <tabs><tabs>
<tab>
<id>tabServices<<id>tabCurrencies</id> <disable>true</disable> <preload>true</preload> <showheader>false</showheader> <components> <component><id>cmpSelect</id></component><component><id>cmpProduct< <component><id>cmpCurrency</id></component><component><id>cmpProductDescription</id></component> </components><component><id>cmpProductIdentifier</id></component> </ components>tab></tab>
<tab>
<id>tabDevices<<id>tabParameters</id> <disable>true</disable> <preload>true</preload> <showheader>false</showheader> <components><component><id>cmpSelect< <component><id>cmpParameter</id></component><component><id>cmpProductType< <component><id>cmpValue</id></component><component><id>cmpProductDescription</id></component> </components> </tab> <tab><id>tabDistributors< <id>file:platform/allowedApplicationServers.xml</id><preload>true< <disable>true</preload> disable><disable>true< <preload>true</disable> preload> <showheader>false</showheader> <components><component><id>cmpDistributorName< <component><id>cmpSelect</id></component> <component><id>cmpApplicationServer</id></component><component><id>cmpDistributorAltCode< <component><id>cmpAddedBy</id></component><component><id>cmpDistributorDescription< <component><id>cmpAddedOn</id></component> </components> </tab> <tab> <id>file:platform paymentgateway/allowedApplicationServers paymentPreferences.xml</id> <disable>true</disable> <preload>true</preload><showheader>false< <showheader>true</showheader> <components><component><id>cmpSelect< <component><id>cmpName</id></component><component><id>cmpApplicationServer< <component><id>cmpPaymentMethod</id></component><component><id>cmpAddedBy</id></component> <component><id>cmpAddedOn< <component><id>cmpDescription</id></component> </components> </tab> </tabs> </details> </page>
|
8. Menu Options Metadata File
...