{
"amountFormula": {
"senderAmount": "TOTALAMOUNT",
"receiverAmount": "AMOUNT"
},
"actionPriority": "before",
"createdAt": "2025-11-10T11:41:16.924Z",
"updatedAt": "2025-11-29T17:28:03.757Z",
"id": "6911cf5c831bfc03608b398e",
"code": "CUSTOMERREQUESTPHONETOPUP",
"name": "Customer request phone top up",
"fullName": "Customer request phone top up",
"desc": "",
"channels": [
"mobile"
],
"related": [
"customer"
],
"version": 2,
"action": "",
"transType": "normal",
"isRefund": false,
"billerService": "none",
"actionParams": {},
"actions": [
{
"params": [
{
"name": "ServiceId",
"source": "transaction",
"field": "SERVICEID",
"defaultValue": ""
},
{
"name": "TransRefId",
"source": "transaction",
"field": "TRANSREFID",
"defaultValue": ""
},
{
"name": "ServiceName",
"source": "service",
"field": "name",
"defaultValue": ""
},
{
"name": "TransOrigAmount",
"source": "transaction",
"field": "AMOUNT",
"defaultValue": ""
},
{
"name": "TransAmount",
"source": "transaction",
"field": "TOTALAMOUNT",
"defaultValue": ""
},
{
"name": "Currency",
"source": "transaction",
"field": "CURRENCY",
"defaultValue": ""
},
{
"name": "TransType",
"source": "",
"field": "",
"defaultValue": "normal"
},
{
"name": "SenderId",
"source": "transaction",
"field": "SENDERID",
"defaultValue": ""
},
{
"name": "SenderSettlement",
"source": "transaction",
"field": "SENDERSETTLEMENT",
"defaultValue": ""
},
{
"name": "SenderSettlementDates",
"source": "transaction",
"field": "SENDERSETTLEMENTDATES",
"defaultValue": ""
},
{
"name": "ReceiverId",
"source": "transaction",
"field": "RECEIVERID",
"defaultValue": ""
},
{
"name": "ReceiverSettlement",
"source": "transaction",
"field": "RECEIVERSETTLEMENT",
"defaultValue": ""
},
{
"name": "ReceiverSettlementDates",
"source": "transaction",
"field": "RECEIVERSETTLEMENTDATES",
"defaultValue": ""
},
{
"name": "AggregatorId",
"source": "transaction",
"field": "AGGREGATORID",
"defaultValue": ""
},
{
"name": "feeCalculating",
"source": "transaction",
"field": "FEECALCULATING",
"defaultValue": ""
},
{
"name": "distributionCalculating",
"source": "transaction",
"field": "DISTRIBUTIONCALCULATING",
"defaultValue": ""
},
{
"name": "discountCalculating",
"source": "transaction",
"field": "DISCOUNTCALCULATING",
"defaultValue": ""
},
{
"name": "TotalDebitFee",
"source": "transaction",
"field": "DEBITFEE",
"defaultValue": ""
},
{
"name": "TotalCreditFee",
"source": "transaction",
"field": "CREDITFEE",
"defaultValue": ""
},
{
"name": "TotalDebitTax",
"source": "transaction",
"field": "DEBITTAX",
"defaultValue": ""
},
{
"name": "TotalCreditTax",
"source": "transaction",
"field": "CREDITTAX",
"defaultValue": ""
},
{
"name": "TotalDebitDiscount",
"source": "transaction",
"field": "TOTALDEBITDISCOUNT",
"defaultValue": ""
},
{
"name": "TotalCreditDiscount",
"source": "transaction",
"field": "TOTALCREDITDISCOUNT",
"defaultValue": ""
},
{
"name": "BillerDiscountAmount",
"source": "transaction",
"field": "DISCOUNTAMOUNT",
"defaultValue": ""
},
{
"name": "TotalDebitTax",
"source": "transaction",
"field": "DEBITTAX",
"defaultValue": ""
},
{
"name": "TotalCreditTax",
"source": "transaction",
"field": "CREDITTAX",
"defaultValue": ""
},
{
"name": "taxCalculating",
"source": "transaction",
"field": "TAXCALCULATING",
"defaultValue": ""
}
],
"valueToSet": [],
"output": [
{
"name": "glSteps",
"source": "metadata",
"field": "data.journalEntry.glSteps",
"defaultValue": "",
"mapToTransaction": "transStepLog.3.glPostingLog"
}
],
"error": [
{
"code": "errorCode",
"value": "0",
"mapping": "0",
"message": "Success"
},
{
"code": "errorCode",
"value": "default",
"mapping": "9101",
"message": "GL Posting get failed"
}
],
"selects": [],
"isAsync": false,
"priority": null,
"actionCode": "glposting",
"entryPoint": "model:transdefinition",
"method": "performTransaction",
"type": "glposting",
"entryConditions": "errorCode == 0",
"required": true,
"hasEnquiry": true,
"name": "GL Posting",
"r": 0,
"viewConfiguration": {
"x": 34,
"y": 80,
"r": 50,
"inputConnectors": [
{
"name": ""
}
],
"outputConnectors": [
{
"name": ""
}
]
},
"nextActions": [
"2"
],
"actionId": "1"
},
{
"params": [
{
"name": "targetAccount",
"source": "transaction",
"field": "TRANSBODY.CUSTOMERPHONE",
"defaultValue": ""
},
{
"name": "topupAmount",
"source": "transaction",
"field": "TRANSBODY.AMOUNT",
"defaultValue": ""
},
{
"name": "transRefId",
"source": "transaction",
"field": "TRANSBODY.TRANSREFID",
"defaultValue": ""
},
{
"name": "senderPhone",
"source": "transaction",
"field": "TRANSBODY.SENDERPHONE",
"defaultValue": ""
},
{
"name": "providerCode",
"source": "transaction",
"field": "TRANSBODY.PROVIDER",
"defaultValue": ""
}
],
"valueToSet": [],
"output": [
{
"name": "amount",
"source": "metadata",
"field": "transAmount",
"defaultValue": "",
"mapToTransaction": "outputMessage.AMOUNT"
},
{
"name": "actualAmount",
"source": "metadata",
"field": "discountAmount",
"defaultValue": "",
"mapToTransaction": "outputMessage.DISCOUNTAMOUNT"
},
{
"name": "detail",
"source": "metadata",
"field": "detail",
"defaultValue": "",
"mapToTransaction": ""
},
{
"name": "requestID",
"source": "metadata",
"field": "detail.requestID",
"defaultValue": "",
"mapToTransaction": "outputMessage.BILLERTRANS.detail.requestID"
},
{
"name": "sysTransId",
"source": "metadata",
"field": "detail.sysTransId",
"defaultValue": "",
"mapToTransaction": "outputMessage.BILLERTRANS.detail.sysTransId"
},
{
"name": "signature",
"source": "metadata",
"field": "detail.signature",
"defaultValue": "",
"mapToTransaction": "outputMessage.BILLERTRANS.detail.signature"
}
],
"error": [
{
"code": "err",
"value": "0",
"mapping": "0",
"message": "Nạp tiền điện thoại thành công"
},
{
"code": "err",
"value": "-7",
"mapping": "-7",
"message": "Nạp tiền điện thoại thất bại"
},
{
"code": "err",
"value": "-32",
"mapping": "-32",
"message": "Nạp tiền điện thoại thất bại"
},
{
"code": "err",
"value": "-5",
"mapping": "-5",
"message": "Giao dịch thất bại, vui lòng thử lại sau"
},
{
"code": "err",
"value": "-8",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-10",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-11",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-17",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-19",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-1",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-9",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-24",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-3",
"mapping": "-3",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-6",
"mapping": "-6",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-14",
"mapping": "-14",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-25",
"mapping": "-25",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-23",
"mapping": "-23",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-21",
"mapping": "-21",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-22",
"mapping": "-22",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-26",
"mapping": "-26",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-33",
"mapping": "-33",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-27",
"mapping": "-27",
"message": "Số điện thoại không tồn tại hoặc chuyển mạng giữ số"
},
{
"code": "err",
"value": "-28",
"mapping": "-28",
"message": "Nhà mạng đang bảo trì, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-29",
"mapping": "-29",
"message": "Nhà mạng đang bảo trì, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-34",
"mapping": "-34",
"message": "Nhà mạng đang bảo trì, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-35",
"mapping": "-35",
"message": "Nhà mạng đang bảo trì, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "9999",
"mapping": "9999",
"message": ""
},
{
"code": "err",
"value": "default",
"mapping": "9100",
"message": ""
}
],
"selects": [],
"entryPointType": "",
"isAsync": true,
"priority": "medium",
"actionCode": "payment",
"entryPoint": "BILLER_INT/billpayment/phonetopup",
"method": "post",
"type": "directional_integration",
"entryConditions": "errorCode == 0",
"required": true,
"hasEnquiry": 0,
"name": "Payment",
"r": 0,
"viewConfiguration": {
"x": 309,
"y": 143,
"r": 50,
"inputConnectors": [
{
"name": ""
}
],
"outputConnectors": [
{
"name": ""
}
]
},
"nextActions": [
"3",
"1731461005127"
],
"actionId": "2"
},
{
"params": [
{
"name": "transRefId",
"source": "transaction",
"field": "TRANSREFID",
"defaultValue": ""
}
],
"valueToSet": [],
"output": [
{
"name": "reversedGlSteps",
"source": "metadata",
"field": "data.journalEntry.glSteps",
"defaultValue": "",
"mapToTransaction": "transStepLog.3.glReversalLog"
}
],
"error": [
{
"code": "errorCode",
"value": "0",
"mapping": "0",
"message": "Success"
},
{
"code": "errorCode",
"value": "default",
"mapping": "9101",
"message": "GL Posting reversing get failed"
}
],
"selects": [],
"actionCode": "reverseTransaction",
"entryPoint": "model:transdefinition",
"method": "reverseTransaction",
"type": "internal_ingression",
"entryConditions": "errorCode != 0",
"required": true,
"hasEnquiry": true,
"name": "Reverse Tranasction",
"r": 0,
"viewConfiguration": {
"x": 596,
"y": 71,
"r": 50,
"inputConnectors": [
{
"name": ""
}
],
"outputConnectors": [
{
"name": ""
}
]
},
"nextActions": null,
"actionId": "3"
},
{
"params": [],
"valueToSet": [],
"output": [],
"error": [
{
"code": "err",
"value": "0",
"mapping": "0",
"message": "Success"
},
{
"code": "err",
"value": "default",
"mapping": "500",
"message": "Something went wrong"
}
],
"selects": [],
"name": "Save Biller Trans",
"entryConditions": "errorCode==0",
"actionCode": "1731461005127",
"entryPoint": "model:transaction",
"type": "internal_ingression",
"required": true,
"method": "saveAfterServiceActionResult",
"viewConfiguration": {
"x": 610,
"y": 210,
"r": 50,
"inputConnectors": [
{
"name": ""
}
],
"outputConnectors": [
{
"name": ""
}
]
},
"nextActions": null,
"actionId": "1731461005127"
}
],
"startAction": "1",
"confirmation": true,
"status": 1,
"lockedBy": {},
"activatedBy": {},
"statusChangedAt": null,
"createdBy": {
"id": "6911c6e9831bfc03608b3914",
"name": "TuanLG",
"roles": [
"root"
]
},
"updatedBy": {
"id": "69130072dd4bae11885a9eb4",
"name": "TEST",
"roles": [
"root"
]
},
"note": "Get list card price",
"devGrp": 0,
"serviceToRefund": "",
"inputFields": {},
"outputFields": [],
"paymentResult": {
"en": [
{
"id": "amount",
"name": "Amount",
"value": "balanceFluctuation.sender.arisingAmount",
"dataType": "currency",
"isMapping": true,
"isCopy": false,
"needSecured": false,
"needsDisplay": true,
"actor": "sender"
},
{
"id": "amount",
"name": "Amount",
"value": "balanceFluctuation.receiver.arisingAmount",
"dataType": "currency",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false,
"actor": "receiver",
"needsDisplay": true
},
{
"id": "postBalance",
"name": "Post balance",
"value": "balanceFluctuation.sender.closeBalance",
"dataType": "currency",
"isMapping": true,
"isCopy": false,
"needSecured": false,
"needsDisplay": true,
"actor": "sender"
},
{
"id": "postBalance",
"name": "Post balance",
"value": "balanceFluctuation.receiver.closeBalance",
"dataType": "currency",
"isMapping": true,
"isCopy": false,
"needSecured": false,
"needsDisplay": true,
"actor": "receiver"
},
{
"id": "transactonName",
"name": "Transaction Name",
"value": "name",
"dataType": "text",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false
},
{
"id": "transactionStatus",
"name": "Status",
"value": "status",
"dataType": "text",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false
},
{
"id": "transactionCode",
"name": "Code",
"value": "code",
"dataType": "text",
"isMapping": true,
"isFormula": false,
"isCopy": true,
"needSecured": false,
"needsDisplay": true
},
{
"id": "time",
"name": "Time",
"value": "createdAt",
"dataType": "datetime",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false
},
{
"id": "method",
"name": "Methods",
"value": "V-Pay Pocket",
"dataType": "text",
"isMapping": false,
"isFormula": false,
"isCopy": false,
"needSecured": false
},
{
"id": "fee",
"name": "Fee",
"value": "fees.debitFee",
"dataType": "currency",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false,
"actor": "sender",
"needsDisplay": true
},
{
"id": "fee",
"name": "Fee",
"value": "fees.creditFee",
"dataType": "currency",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false,
"actor": "receiver",
"needsDisplay": true
}
]
},
"paymentPreview": {},
"paymentShortResult": "",
"serviceTarget": "",
"fieldBuilder": [
{
"order": 1,
"name": "SERVICEID",
"rule": "mapping",
"datatype": "string",
"variable": "SERVICEID",
"source": "parameters"
},
{
"order": 2,
"name": "SENDERPHONE",
"rule": "mapping",
"datatype": "string",
"variable": "phone",
"source": "user"
},
{
"order": 3,
"name": "SENDERCLIENT",
"rule": "fixed",
"datatype": "string",
"variable": "",
"source": "customer"
},
{
"order": 4,
"name": "AMOUNT",
"rule": "mapping",
"datatype": "float",
"variable": "AMOUNT",
"source": "parameters"
},
{
"order": 5,
"name": "CURRENCY",
"rule": "fixed",
"datatype": "string",
"source": "VND"
},
{
"order": 6,
"name": "DEVICEID",
"rule": "mapping",
"datatype": "string",
"variable": "DEVICEID",
"source": "parameters"
},
{
"order": 7,
"name": "SENDERID",
"rule": "query",
"datatype": "string",
"variable": "id",
"source": "senderPocket",
"query": "queryPocketByPhone(SENDERPHONE,SENDERCLIENT,CURRENCY)"
},
{
"order": 8,
"name": "USERID",
"rule": "mapping",
"datatype": "string",
"variable": "user",
"source": "senderPocket"
},
{
"order": 9,
"name": "SENDERUSERID",
"rule": "mapping",
"datatype": "string",
"variable": "user",
"source": "senderPocket"
},
{
"order": 10,
"name": "OFFERID",
"rule": "mapping",
"datatype": "string",
"variable": "offer",
"source": "user",
"query": ""
},
{
"order": 11,
"name": "MessageType",
"rule": "fixed",
"datatype": "string",
"variable": "",
"source": "FO"
},
{
"order": 12,
"name": "SENDERPHONE",
"rule": "mapping",
"datatype": "string",
"variable": "SENDERPHONE",
"source": "parameters"
},
{
"order": 13,
"name": "CUSTOMERPHONE",
"rule": "mapping",
"datatype": "string",
"variable": "CUSTOMERPHONE",
"source": "parameters"
},
{
"order": 14,
"name": "PROVIDER",
"rule": "mapping",
"datatype": "string",
"variable": "PROVIDER",
"source": "parameters"
}
],
"actionResult": [],
"webResult": "",
"typeResult": "none",
"category": "personal",
"icon": null,
"historyResult": [],
"allowMoveCategory": 0
}curl --location --request POST '/admin/v2/service/updateService' \
--header 'Authorization: Bearer ' \
--header 'Accept: application/json' \
--header 'User-Agent: Mozilla/5.0' \
--header 'Referer: https://wallet-admin-vpay-dev2.vinsmartfuture.tech/' \
--header 'Content-Type: application/json;charset=UTF-8' \
--data-raw '{
"amountFormula": {
"senderAmount": "TOTALAMOUNT",
"receiverAmount": "AMOUNT"
},
"actionPriority": "before",
"createdAt": "2025-11-10T11:41:16.924Z",
"updatedAt": "2025-11-29T17:28:03.757Z",
"id": "6911cf5c831bfc03608b398e",
"code": "CUSTOMERREQUESTPHONETOPUP",
"name": "Customer request phone top up",
"fullName": "Customer request phone top up",
"desc": "",
"channels": [
"mobile"
],
"related": [
"customer"
],
"version": 2,
"action": "",
"transType": "normal",
"isRefund": false,
"billerService": "none",
"actionParams": {},
"actions": [
{
"params": [
{
"name": "ServiceId",
"source": "transaction",
"field": "SERVICEID",
"defaultValue": ""
},
{
"name": "TransRefId",
"source": "transaction",
"field": "TRANSREFID",
"defaultValue": ""
},
{
"name": "ServiceName",
"source": "service",
"field": "name",
"defaultValue": ""
},
{
"name": "TransOrigAmount",
"source": "transaction",
"field": "AMOUNT",
"defaultValue": ""
},
{
"name": "TransAmount",
"source": "transaction",
"field": "TOTALAMOUNT",
"defaultValue": ""
},
{
"name": "Currency",
"source": "transaction",
"field": "CURRENCY",
"defaultValue": ""
},
{
"name": "TransType",
"source": "",
"field": "",
"defaultValue": "normal"
},
{
"name": "SenderId",
"source": "transaction",
"field": "SENDERID",
"defaultValue": ""
},
{
"name": "SenderSettlement",
"source": "transaction",
"field": "SENDERSETTLEMENT",
"defaultValue": ""
},
{
"name": "SenderSettlementDates",
"source": "transaction",
"field": "SENDERSETTLEMENTDATES",
"defaultValue": ""
},
{
"name": "ReceiverId",
"source": "transaction",
"field": "RECEIVERID",
"defaultValue": ""
},
{
"name": "ReceiverSettlement",
"source": "transaction",
"field": "RECEIVERSETTLEMENT",
"defaultValue": ""
},
{
"name": "ReceiverSettlementDates",
"source": "transaction",
"field": "RECEIVERSETTLEMENTDATES",
"defaultValue": ""
},
{
"name": "AggregatorId",
"source": "transaction",
"field": "AGGREGATORID",
"defaultValue": ""
},
{
"name": "feeCalculating",
"source": "transaction",
"field": "FEECALCULATING",
"defaultValue": ""
},
{
"name": "distributionCalculating",
"source": "transaction",
"field": "DISTRIBUTIONCALCULATING",
"defaultValue": ""
},
{
"name": "discountCalculating",
"source": "transaction",
"field": "DISCOUNTCALCULATING",
"defaultValue": ""
},
{
"name": "TotalDebitFee",
"source": "transaction",
"field": "DEBITFEE",
"defaultValue": ""
},
{
"name": "TotalCreditFee",
"source": "transaction",
"field": "CREDITFEE",
"defaultValue": ""
},
{
"name": "TotalDebitTax",
"source": "transaction",
"field": "DEBITTAX",
"defaultValue": ""
},
{
"name": "TotalCreditTax",
"source": "transaction",
"field": "CREDITTAX",
"defaultValue": ""
},
{
"name": "TotalDebitDiscount",
"source": "transaction",
"field": "TOTALDEBITDISCOUNT",
"defaultValue": ""
},
{
"name": "TotalCreditDiscount",
"source": "transaction",
"field": "TOTALCREDITDISCOUNT",
"defaultValue": ""
},
{
"name": "BillerDiscountAmount",
"source": "transaction",
"field": "DISCOUNTAMOUNT",
"defaultValue": ""
},
{
"name": "TotalDebitTax",
"source": "transaction",
"field": "DEBITTAX",
"defaultValue": ""
},
{
"name": "TotalCreditTax",
"source": "transaction",
"field": "CREDITTAX",
"defaultValue": ""
},
{
"name": "taxCalculating",
"source": "transaction",
"field": "TAXCALCULATING",
"defaultValue": ""
}
],
"valueToSet": [],
"output": [
{
"name": "glSteps",
"source": "metadata",
"field": "data.journalEntry.glSteps",
"defaultValue": "",
"mapToTransaction": "transStepLog.3.glPostingLog"
}
],
"error": [
{
"code": "errorCode",
"value": "0",
"mapping": "0",
"message": "Success"
},
{
"code": "errorCode",
"value": "default",
"mapping": "9101",
"message": "GL Posting get failed"
}
],
"selects": [],
"isAsync": false,
"priority": null,
"actionCode": "glposting",
"entryPoint": "model:transdefinition",
"method": "performTransaction",
"type": "glposting",
"entryConditions": "errorCode == 0",
"required": true,
"hasEnquiry": true,
"name": "GL Posting",
"r": 0,
"viewConfiguration": {
"x": 34,
"y": 80,
"r": 50,
"inputConnectors": [
{
"name": ""
}
],
"outputConnectors": [
{
"name": ""
}
]
},
"nextActions": [
"2"
],
"actionId": "1"
},
{
"params": [
{
"name": "targetAccount",
"source": "transaction",
"field": "TRANSBODY.CUSTOMERPHONE",
"defaultValue": ""
},
{
"name": "topupAmount",
"source": "transaction",
"field": "TRANSBODY.AMOUNT",
"defaultValue": ""
},
{
"name": "transRefId",
"source": "transaction",
"field": "TRANSBODY.TRANSREFID",
"defaultValue": ""
},
{
"name": "senderPhone",
"source": "transaction",
"field": "TRANSBODY.SENDERPHONE",
"defaultValue": ""
},
{
"name": "providerCode",
"source": "transaction",
"field": "TRANSBODY.PROVIDER",
"defaultValue": ""
}
],
"valueToSet": [],
"output": [
{
"name": "amount",
"source": "metadata",
"field": "transAmount",
"defaultValue": "",
"mapToTransaction": "outputMessage.AMOUNT"
},
{
"name": "actualAmount",
"source": "metadata",
"field": "discountAmount",
"defaultValue": "",
"mapToTransaction": "outputMessage.DISCOUNTAMOUNT"
},
{
"name": "detail",
"source": "metadata",
"field": "detail",
"defaultValue": "",
"mapToTransaction": ""
},
{
"name": "requestID",
"source": "metadata",
"field": "detail.requestID",
"defaultValue": "",
"mapToTransaction": "outputMessage.BILLERTRANS.detail.requestID"
},
{
"name": "sysTransId",
"source": "metadata",
"field": "detail.sysTransId",
"defaultValue": "",
"mapToTransaction": "outputMessage.BILLERTRANS.detail.sysTransId"
},
{
"name": "signature",
"source": "metadata",
"field": "detail.signature",
"defaultValue": "",
"mapToTransaction": "outputMessage.BILLERTRANS.detail.signature"
}
],
"error": [
{
"code": "err",
"value": "0",
"mapping": "0",
"message": "Nạp tiền điện thoại thành công"
},
{
"code": "err",
"value": "-7",
"mapping": "-7",
"message": "Nạp tiền điện thoại thất bại"
},
{
"code": "err",
"value": "-32",
"mapping": "-32",
"message": "Nạp tiền điện thoại thất bại"
},
{
"code": "err",
"value": "-5",
"mapping": "-5",
"message": "Giao dịch thất bại, vui lòng thử lại sau"
},
{
"code": "err",
"value": "-8",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-10",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-11",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-17",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-19",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-1",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-9",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-24",
"mapping": "404",
"message": "Đã xảy ra sự cố, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-3",
"mapping": "-3",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-6",
"mapping": "-6",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-14",
"mapping": "-14",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-25",
"mapping": "-25",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-23",
"mapping": "-23",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-21",
"mapping": "-21",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-22",
"mapping": "-22",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-26",
"mapping": "-26",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-33",
"mapping": "-33",
"message": "Số điện thoại không hợp lệ"
},
{
"code": "err",
"value": "-27",
"mapping": "-27",
"message": "Số điện thoại không tồn tại hoặc chuyển mạng giữ số"
},
{
"code": "err",
"value": "-28",
"mapping": "-28",
"message": "Nhà mạng đang bảo trì, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-29",
"mapping": "-29",
"message": "Nhà mạng đang bảo trì, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-34",
"mapping": "-34",
"message": "Nhà mạng đang bảo trì, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "-35",
"mapping": "-35",
"message": "Nhà mạng đang bảo trì, vui lòng thử lại sau ít phút"
},
{
"code": "err",
"value": "9999",
"mapping": "9999",
"message": ""
},
{
"code": "err",
"value": "default",
"mapping": "9100",
"message": ""
}
],
"selects": [],
"entryPointType": "",
"isAsync": true,
"priority": "medium",
"actionCode": "payment",
"entryPoint": "BILLER_INT/billpayment/phonetopup",
"method": "post",
"type": "directional_integration",
"entryConditions": "errorCode == 0",
"required": true,
"hasEnquiry": 0,
"name": "Payment",
"r": 0,
"viewConfiguration": {
"x": 309,
"y": 143,
"r": 50,
"inputConnectors": [
{
"name": ""
}
],
"outputConnectors": [
{
"name": ""
}
]
},
"nextActions": [
"3",
"1731461005127"
],
"actionId": "2"
},
{
"params": [
{
"name": "transRefId",
"source": "transaction",
"field": "TRANSREFID",
"defaultValue": ""
}
],
"valueToSet": [],
"output": [
{
"name": "reversedGlSteps",
"source": "metadata",
"field": "data.journalEntry.glSteps",
"defaultValue": "",
"mapToTransaction": "transStepLog.3.glReversalLog"
}
],
"error": [
{
"code": "errorCode",
"value": "0",
"mapping": "0",
"message": "Success"
},
{
"code": "errorCode",
"value": "default",
"mapping": "9101",
"message": "GL Posting reversing get failed"
}
],
"selects": [],
"actionCode": "reverseTransaction",
"entryPoint": "model:transdefinition",
"method": "reverseTransaction",
"type": "internal_ingression",
"entryConditions": "errorCode != 0",
"required": true,
"hasEnquiry": true,
"name": "Reverse Tranasction",
"r": 0,
"viewConfiguration": {
"x": 596,
"y": 71,
"r": 50,
"inputConnectors": [
{
"name": ""
}
],
"outputConnectors": [
{
"name": ""
}
]
},
"nextActions": null,
"actionId": "3"
},
{
"params": [],
"valueToSet": [],
"output": [],
"error": [
{
"code": "err",
"value": "0",
"mapping": "0",
"message": "Success"
},
{
"code": "err",
"value": "default",
"mapping": "500",
"message": "Something went wrong"
}
],
"selects": [],
"name": "Save Biller Trans",
"entryConditions": "errorCode==0",
"actionCode": "1731461005127",
"entryPoint": "model:transaction",
"type": "internal_ingression",
"required": true,
"method": "saveAfterServiceActionResult",
"viewConfiguration": {
"x": 610,
"y": 210,
"r": 50,
"inputConnectors": [
{
"name": ""
}
],
"outputConnectors": [
{
"name": ""
}
]
},
"nextActions": null,
"actionId": "1731461005127"
}
],
"startAction": "1",
"confirmation": true,
"status": 1,
"lockedBy": {},
"activatedBy": {},
"statusChangedAt": null,
"createdBy": {
"id": "6911c6e9831bfc03608b3914",
"name": "TuanLG",
"roles": [
"root"
]
},
"updatedBy": {
"id": "69130072dd4bae11885a9eb4",
"name": "TEST",
"roles": [
"root"
]
},
"note": "Get list card price",
"devGrp": 0,
"serviceToRefund": "",
"inputFields": {},
"outputFields": [],
"paymentResult": {
"en": [
{
"id": "amount",
"name": "Amount",
"value": "balanceFluctuation.sender.arisingAmount",
"dataType": "currency",
"isMapping": true,
"isCopy": false,
"needSecured": false,
"needsDisplay": true,
"actor": "sender"
},
{
"id": "amount",
"name": "Amount",
"value": "balanceFluctuation.receiver.arisingAmount",
"dataType": "currency",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false,
"actor": "receiver",
"needsDisplay": true
},
{
"id": "postBalance",
"name": "Post balance",
"value": "balanceFluctuation.sender.closeBalance",
"dataType": "currency",
"isMapping": true,
"isCopy": false,
"needSecured": false,
"needsDisplay": true,
"actor": "sender"
},
{
"id": "postBalance",
"name": "Post balance",
"value": "balanceFluctuation.receiver.closeBalance",
"dataType": "currency",
"isMapping": true,
"isCopy": false,
"needSecured": false,
"needsDisplay": true,
"actor": "receiver"
},
{
"id": "transactonName",
"name": "Transaction Name",
"value": "name",
"dataType": "text",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false
},
{
"id": "transactionStatus",
"name": "Status",
"value": "status",
"dataType": "text",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false
},
{
"id": "transactionCode",
"name": "Code",
"value": "code",
"dataType": "text",
"isMapping": true,
"isFormula": false,
"isCopy": true,
"needSecured": false,
"needsDisplay": true
},
{
"id": "time",
"name": "Time",
"value": "createdAt",
"dataType": "datetime",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false
},
{
"id": "method",
"name": "Methods",
"value": "V-Pay Pocket",
"dataType": "text",
"isMapping": false,
"isFormula": false,
"isCopy": false,
"needSecured": false
},
{
"id": "fee",
"name": "Fee",
"value": "fees.debitFee",
"dataType": "currency",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false,
"actor": "sender",
"needsDisplay": true
},
{
"id": "fee",
"name": "Fee",
"value": "fees.creditFee",
"dataType": "currency",
"isMapping": true,
"isFormula": false,
"isCopy": false,
"needSecured": false,
"actor": "receiver",
"needsDisplay": true
}
]
},
"paymentPreview": {},
"paymentShortResult": "",
"serviceTarget": "",
"fieldBuilder": [
{
"order": 1,
"name": "SERVICEID",
"rule": "mapping",
"datatype": "string",
"variable": "SERVICEID",
"source": "parameters"
},
{
"order": 2,
"name": "SENDERPHONE",
"rule": "mapping",
"datatype": "string",
"variable": "phone",
"source": "user"
},
{
"order": 3,
"name": "SENDERCLIENT",
"rule": "fixed",
"datatype": "string",
"variable": "",
"source": "customer"
},
{
"order": 4,
"name": "AMOUNT",
"rule": "mapping",
"datatype": "float",
"variable": "AMOUNT",
"source": "parameters"
},
{
"order": 5,
"name": "CURRENCY",
"rule": "fixed",
"datatype": "string",
"source": "VND"
},
{
"order": 6,
"name": "DEVICEID",
"rule": "mapping",
"datatype": "string",
"variable": "DEVICEID",
"source": "parameters"
},
{
"order": 7,
"name": "SENDERID",
"rule": "query",
"datatype": "string",
"variable": "id",
"source": "senderPocket",
"query": "queryPocketByPhone(SENDERPHONE,SENDERCLIENT,CURRENCY)"
},
{
"order": 8,
"name": "USERID",
"rule": "mapping",
"datatype": "string",
"variable": "user",
"source": "senderPocket"
},
{
"order": 9,
"name": "SENDERUSERID",
"rule": "mapping",
"datatype": "string",
"variable": "user",
"source": "senderPocket"
},
{
"order": 10,
"name": "OFFERID",
"rule": "mapping",
"datatype": "string",
"variable": "offer",
"source": "user",
"query": ""
},
{
"order": 11,
"name": "MessageType",
"rule": "fixed",
"datatype": "string",
"variable": "",
"source": "FO"
},
{
"order": 12,
"name": "SENDERPHONE",
"rule": "mapping",
"datatype": "string",
"variable": "SENDERPHONE",
"source": "parameters"
},
{
"order": 13,
"name": "CUSTOMERPHONE",
"rule": "mapping",
"datatype": "string",
"variable": "CUSTOMERPHONE",
"source": "parameters"
},
{
"order": 14,
"name": "PROVIDER",
"rule": "mapping",
"datatype": "string",
"variable": "PROVIDER",
"source": "parameters"
}
],
"actionResult": [],
"webResult": "",
"typeResult": "none",
"category": "personal",
"icon": null,
"historyResult": [],
"allowMoveCategory": 0
}'