/** * @param ClientInterface $client * @param GiropayTransactionStartRequest $giropayRequest * @return RequestInterface */ protected function buildTransactionStartRequest(ClientInterface $client, GiropayTransactionStartRequest $giropayRequest) { $requestArray = array(); $requestArray['merchantId'] = $this->getMerchantId(); $requestArray['projectId'] = $this->getProjectId(); if ($giropayRequest->getMerchantTxId() == "") { throw new InvalidArgumentException("Field merchantTxId is required"); } $requestArray['merchantTxId'] = $giropayRequest->getMerchantTxId(); if ($giropayRequest->getAmount() == "") { throw new InvalidArgumentException("Field amount is required"); } $requestArray['amount'] = $giropayRequest->getAmount(); if ($giropayRequest->getCurrency() == "") { throw new InvalidArgumentException("Field currency is required"); } $requestArray['currency'] = $giropayRequest->getCurrency(); if ($giropayRequest->getPurpose() == "") { throw new InvalidArgumentException("Field purpose is required"); } $requestArray['purpose'] = $giropayRequest->getPurpose(); if ($giropayRequest->getBic() == "") { throw new InvalidArgumentException("Field bic is required"); } $requestArray['bic'] = $giropayRequest->getBic(); if ($giropayRequest->getIban() != "") { $requestArray['iban'] = $giropayRequest->getIban(); } if ($giropayRequest->getInfo1Label() != "" || $giropayRequest->getInfo1Text() != "") { $requestArray['info1Label'] = $giropayRequest->getInfo1Label(); $requestArray['info1Text'] = $giropayRequest->getInfo1Text(); } if ($giropayRequest->getInfo2Label() != "" || $giropayRequest->getInfo2Text() != "") { $requestArray['info2Label'] = $giropayRequest->getInfo2Label(); $requestArray['info2Text'] = $giropayRequest->getInfo2Text(); } if ($giropayRequest->getInfo3Label() != "" || $giropayRequest->getInfo3Text() != "") { $requestArray['info3Label'] = $giropayRequest->getInfo3Label(); $requestArray['info3Text'] = $giropayRequest->getInfo3Text(); } if ($giropayRequest->getInfo4Label() != "" || $giropayRequest->getInfo4Text() != "") { $requestArray['info4Label'] = $giropayRequest->getInfo4Label(); $requestArray['info4Text'] = $giropayRequest->getInfo4Text(); } if ($giropayRequest->getInfo5Label() != "" || $giropayRequest->getInfo5Text() != "") { $requestArray['info5Label'] = $giropayRequest->getInfo5Label(); $requestArray['info5Text'] = $giropayRequest->getInfo5Text(); } $requestArray['urlRedirect'] = $giropayRequest->getUrlRedirect(); $requestArray['urlNotify'] = $giropayRequest->getUrlNotify(); //this works because the hash list in PHP has a sort order (we get the values out in the order we added them) $sortedValuesString = implode('', array_values($requestArray)); $requestArray['hash'] = $this->getHMACMD5Hash($this->getSecret(), $sortedValuesString); $request = $client->createRequest("POST", "https://payment.girosolution.de/girocheckout/api/v2/transaction/start", ['body' => $requestArray]); return $request; }