Skip to content

Commit

Permalink
Merge pull request #15417 from eileenmcnaughton/matt
Browse files Browse the repository at this point in the history
Add trxn_id as a parameter on Payment.get
  • Loading branch information
mattwire authored Oct 7, 2019
2 parents 6cd53c7 + c420454 commit ffadd26
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
7 changes: 7 additions & 0 deletions api/v3/Payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ function civicrm_api3_payment_get($params) {
$limit = CRM_Utils_Array::value('limit', $params['options']);
}
$params['options']['limit'] = 0;
if (isset($params['trxn_id'])) {
$params['financial_trxn_id.trxn_id'] = $params['trxn_id'];
}
$eft = civicrm_api3('EntityFinancialTrxn', 'get', $params);
if (!empty($eft['values'])) {
$eftIds = [];
Expand Down Expand Up @@ -210,6 +213,10 @@ function _civicrm_api3_payment_get_spec(&$params) {
'type' => CRM_Utils_Type::T_INT,
'api.aliases' => ['contribution_id'],
],
'trxn_id' => [
'title' => 'Transaction ID',
'type' => CRM_Utils_Type::T_STRING,
],
];
}

Expand Down
46 changes: 46 additions & 0 deletions tests/phpunit/api/v3/PaymentTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,52 @@ public function testGetPayment() {
]);
}

/**
* Retrieve Payment using trxn_id.
*/
public function testGetPaymentWithTrxnID() {
$this->_individualId2 = $this->individualCreate();
$params1 = [
'contact_id' => $this->_individualId,
'trxn_id' => 111111,
'total_amount' => 10,
];
$contributionID1 = $this->contributionCreate($params1);

$params2 = [
'contact_id' => $this->_individualId2,
'trxn_id' => 222222,
'total_amount' => 20,
];
$contributionID2 = $this->contributionCreate($params2);

$paymentParams = ['trxn_id' => 111111];
$payment = $this->callAPISuccess('payment', 'get', $paymentParams);
$expectedResult = [
$payment['id'] => [
'total_amount' => 10,
'trxn_id' => 111111,
'status_id' => 1,
'is_payment' => 1,
'contribution_id' => $contributionID1,
],
];
$this->checkPaymentResult($payment, $expectedResult);

$paymentParams = ['trxn_id' => 222222];
$payment = $this->callAPISuccess('payment', 'get', $paymentParams);
$expectedResult = [
$payment['id'] => [
'total_amount' => 20,
'trxn_id' => 222222,
'status_id' => 1,
'is_payment' => 1,
'contribution_id' => $contributionID2,
],
];
$this->checkPaymentResult($payment, $expectedResult);
}

/**
* Test email receipt for partial payment.
*/
Expand Down

0 comments on commit ffadd26

Please sign in to comment.