Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • T transactionCC
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 10
    • Issues 10
    • List
    • Boards
    • Service Desk
    • Milestones
  • Jira
    • Jira
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • smartcontracts
  • transactionCC
  • Issues
  • #5

Closed
Open
Created Dec 02, 2017 by Ghost User@ghost

Проверять корректность партнерского кода.

На данном этапе при вызове чейнкод транзакций не осуществляется проверка корректности и существования партнерского кода. Точнее

// CommissionForTransfer compute commission based on transaction input parameters
func (txnMngr *transactionManagerImpl) CommissionForTransfer(txnArgs *TxnFundsLockInput, adapter *managerAux) (float32, error) {
	// TODO: Do we need to check correctness of the partner code?
	args := util.ToChaincodeArgs(GetCommissionFunction, txnArgs.PartnerCode, txnArgs.CustomerType, txnArgs.CommissionType.String())

	resp := adapter.InvokeChaincode(CommissionChaincode, args, CommissionChannel)
	if resp.Status != int32(shim.OK) {
		errMsg := fmt.Sprintf("Error obtain commission for operation id %s, parnter code %s, due to %s", txnArgs.OperationID, txnArgs.PartnerCode, resp.Message)
		logger.Error(errMsg)
		return 0, errors.New(errMsg)
	}

	var commission commissionCC.Commission
	err := json.Unmarshal(resp.Payload, &commission)
	if err != nil {
		errMsg := fmt.Sprintf("Failed to deserialize commission for operation id %s, parnter code %s, due to %s", txnArgs.OperationID, txnArgs.PartnerCode, resp.Message)
		logger.Error(errMsg)
		return 0, errors.New(errMsg)
	}
	cpercent, err := strconv.ParseFloat(commission.CommisionPercent, 32)
	if err != nil {
		errMsg := fmt.Sprintf("Failed to parse commission percent for operation id %s, parnter code %s, due to %s", txnArgs.OperationID, txnArgs.PartnerCode, resp.Message)
		logger.Error(errMsg)
		return 0, errors.New(errMsg)
	}
	return float32(cpercent), nil
}

При подсчете коммисси необходимо добавить проверку и вызывать чейнкод который оперирует информацие по партнерским организациям.

Assignee
Assign to
Time tracking