/** * @param array $options * @return CompletePurchaseRequest */ public function createRequest($options = []) { $stub = $this->stub; $httpRequest = new HttpRequest([], array_merge(['ik_co_id' => $stub->purse, 'ik_pm_no' => $stub->payment_no, 'ik_desc' => $stub->description, 'ik_pw_via' => $stub->payway, 'ik_am' => $stub->amount, 'ik_cur' => $stub->currency, 'ik_inv_id' => $stub->transactionId, 'ik_inv_st' => $stub->state, 'ik_inv_prc' => $stub->time, 'ik_sign' => $stub->sign], $options)); $request = new CompletePurchaseRequest($this->getHttpClient(), $httpRequest); $request->initialize(['signAlgorithm' => $stub->signAlgorithm, 'signKey' => $stub->signKey]); return $request; }
/** * {@inheritdoc} */ public function __construct(RequestInterface $request, $data) { parent::__construct($request, $data); $signKey = $this->request->getTestMode() ? $this->request->getTestKey() : $this->request->getSignKey(); $signExpected = $this->request->calculateSign($this->data, $signKey); if ($this->getSign() !== $signExpected) { throw new InvalidResponseException('Failed to validate signature: ' . $signExpected); } if ($this->getState() !== 'success') { throw new InvalidResponseException('The payment was not success'); } }
public function testTestMode() { $stub = $this->stub; $httpRequest = new HttpRequest([], ['ik_co_id' => $stub->purse, 'ik_trn_id' => $stub->transactionId, 'ik_desc' => $stub->description, 'ik_am' => $stub->amount, 'ik_cur' => $stub->currency, 'ik_inv_prc' => $stub->time, 'ik_sign' => $stub->sign, 'ik_inv_st' => $stub->state]); $request = new CompletePurchaseRequest($this->getHttpClient(), $httpRequest); $request->initialize(['testMode' => true, 'purse' => $stub->purse, 'signAlgorithm' => $stub->signAlgorithm, 'testKey' => $stub->testKey]); $data = $request->getData(); $this->assertSame($stub->purse, $data['ik_co_id']); $this->assertSame($stub->transactionId, $data['ik_trn_id']); $this->assertSame($stub->description, $data['ik_desc']); $this->assertSame($stub->amount, $data['ik_am']); $this->assertSame($stub->currency, $data['ik_cur']); $this->assertSame($stub->time, $data['ik_inv_prc']); }