diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c64a998..eac20124 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ * Added `Recurly_AccountAcquisition` [#259](https://github.com/recurly/recurly-client-php/pull/259) * Added support for automated exports [#260](https://github.com/recurly/recurly-client-php/pull/260) * Added support for shipping addresses [#269](https://github.com/recurly/recurly-client-php/pull/269) +* Adding support for `risk_rules_triggered` in `Recurly_FraudInfo` [#274](https://github.com/recurly/recurly-client-php/pull/274) ## Version 2.6.0 (August 9th, 2016) diff --git a/Tests/Recurly/Transaction_Test.php b/Tests/Recurly/Transaction_Test.php index e242aef0..810c04a8 100644 --- a/Tests/Recurly/Transaction_Test.php +++ b/Tests/Recurly/Transaction_Test.php @@ -35,6 +35,15 @@ public function testGetTransaction() { $this->assertInstanceOf('Recurly_FraudInfo', $transaction->fraud); $this->assertEquals($transaction->fraud->score, 99); $this->assertEquals($transaction->fraud->decision, 'DECLINE'); + + $risk_rules = $transaction->fraud->risk_rules_triggered; + $this->assertEquals(count($risk_rules), 2); + + $this->assertEquals($risk_rules[0]->code, "848760"); + $this->assertEquals($risk_rules[0]->message, "Review Non-Normal Network Type"); + + $this->assertEquals($risk_rules[1]->code, "404934"); + $this->assertEquals($risk_rules[1]->message, "More than 4 unique Email Addresses"); } public function testCreateTransactionFailed() { diff --git a/Tests/fixtures/transactions/show-200.xml b/Tests/fixtures/transactions/show-200.xml index 52aebbfb..bbf2b08c 100644 --- a/Tests/fixtures/transactions/show-200.xml +++ b/Tests/fixtures/transactions/show-200.xml @@ -56,6 +56,16 @@ Content-Type: application/xml; charset=utf-8 <fraud> <score type="integer">99</score> <decision>DECLINE</decision> + <risk_rules_triggered> + <rule> + <code>848760</code> + <message>Review Non-Normal Network Type</message> + </rule> + <rule> + <code>404934</code> + <message>More than 4 unique Email Addresses</message> + </rule> + </risk_rules_triggered> </fraud> <a name="refund" href="https://api.recurly.com/v2/transactions/abcdef1234567890" method="delete"/> </transaction> diff --git a/lib/recurly.php b/lib/recurly.php index bf0c87d7..f277f12e 100644 --- a/lib/recurly.php +++ b/lib/recurly.php @@ -8,6 +8,7 @@ require_once(dirname(__FILE__) . '/recurly/error_list.php'); require_once(dirname(__FILE__) . '/recurly/errors.php'); require_once(dirname(__FILE__) . '/recurly/fraud_info.php'); +require_once(dirname(__FILE__) . '/recurly/fraud_risk_rule.php'); require_once(dirname(__FILE__) . '/recurly/link.php'); require_once(dirname(__FILE__) . '/recurly/pager.php'); require_once(dirname(__FILE__) . '/recurly/response.php'); diff --git a/lib/recurly/base.php b/lib/recurly/base.php index 5ea8f604..862b17cf 100644 --- a/lib/recurly/base.php +++ b/lib/recurly/base.php @@ -203,8 +203,10 @@ public function getLinks() { 'plan_code' => 'string', 'plan_codes' => 'array', 'pending_subscription' => 'Recurly_Subscription', + 'risk_rules_triggered' => 'array', 'redemption' => 'Recurly_CouponRedemption', 'redemptions' => 'Recurly_CouponRedemptionList', + 'rule' => 'Recurly_FraudRiskRule', 'setup_fee_in_cents' => 'Recurly_CurrencyList', 'shipping_address' => 'Recurly_ShippingAddress', 'shipping_addresses' => 'Recurly_ShippingAddressList', diff --git a/lib/recurly/fraud_info.php b/lib/recurly/fraud_info.php index 99165c63..03ddf2e5 100644 --- a/lib/recurly/fraud_info.php +++ b/lib/recurly/fraud_info.php @@ -7,8 +7,9 @@ class Recurly_FraudInfo { var $score; var $decision; + var $risk_rules_triggered; public function __toString() { - return "<Recurly_FraudInfo score=\"{$this->score}\" decision={$this->decision}>"; + return "<Recurly_FraudInfo score=\"{$this->score}\" decision=\"{$this->decision}\">"; } } diff --git a/lib/recurly/fraud_risk_rule.php b/lib/recurly/fraud_risk_rule.php new file mode 100644 index 00000000..b3512f0b --- /dev/null +++ b/lib/recurly/fraud_risk_rule.php @@ -0,0 +1,14 @@ +<?php + +/** + * Represents the <rule> object in <risk_rules_triggered> + */ +class Recurly_FraudRiskRule +{ + var $code; + var $message; + + public function __toString() { + return "<Recurly_FraudRiskRule code=\"{$this->code}\" message=\"{$this->message}\">"; + } +}