/** * Sign a Webservice Request * * @param Request $request * @return void * */ public function signRequest(Request $request) { $txt = ''; if ($request->hasAmount()) { $txt .= $request->getAmount(); } if ($request->hasOrder()) { $txt .= $request->getOrder(); } if ($request->hasMerchantCode()) { $txt .= $request->getMerchantCode(); } if ($request->hasCurrency()) { $txt .= $request->getCurrency(); } switch ($request->getTransactionType()) { case Transaction::TYPE_AUTH: case Transaction::TYPE_PREAUTH: case Transaction::TYPE_AUTH_DEFERRED: if ($request->hasPan()) { $txt .= $request->getPan(); } if ($request->hasCvv2()) { $txt .= $request->getCvv2(); } break; case Transaction::TYPE_RECURRING_AUTH_INITIAL: case Transaction::TYPE_RECURRING_AUTH_DEFERRED_INTITIAL: if ($request->hasPan()) { $txt .= $request->getPan(); } if ($request->hasSumtotal()) { $txt .= $request->getSumtotal(); } if ($request->hasCvv2()) { $txt .= $request->getCvv2(); } break; case Transaction::TYPE_FULLFILL: case Transaction::TYPE_VOID: case Transaction::TYPE_RECURRING_AUTH: case Transaction::TYPE_CANCEL: case Transaction::TYPE_FULLFILL_DEFERRED: case Transaction::TYPE_CANCEL_DEFERRED: case Transaction::TYPE_RECURRING_AUTH_DEFERRED: // Nothing to add here break; } // Append Transaction Type $txt .= $request->getTransactionType(); // Append Secret Key $txt .= $this->getSecretKey(); // Calculate hash $signature = sha1($txt); // Sign Request $request->setSignature($signature); }