Skip to content

Commit

Permalink
== Version 8.23.0 (December 18, 2013)
Browse files Browse the repository at this point in the history
* Feature: advancedFraudChecks now available in authorization and sale 
* Feature: catLevel (Cardholder Activated Terminal) now available in pos
* Feature: advancedFraudResults now available in fraudResult
  • Loading branch information
Greg, Dake committed Dec 18, 2013
1 parent 8d53742 commit 47e7d82
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 8 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
= LitleOnline CHANGELOG

== Version 8.23.0 (December 18, 2013)
* Feature: advancedFraudChecks now available in authorization and sale
* Feature: catLevel (Cardholder Activated Terminal) now available in pos
* Feature: advancedFraudResults now available in fraudResult

== Version 8.22.0 (December 18, 2013)
* Feature: Support for the following new gift card transactions:
ActivateReversal, DeactivateReversal, LoadReversal, RefundReversal,
Expand Down
4 changes: 2 additions & 2 deletions lib/LitleOnline.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
define('CURRENT_XML_VERSION', '8.22');
define('CURRENT_SDK_VERSION', 'PHP;8.22.0');
define('CURRENT_XML_VERSION', '8.23');
define('CURRENT_SDK_VERSION', 'PHP;8.23.0');
define('MAX_TXNS_PER_BATCH', 100000);
define('MAX_TXNS_PER_REQUEST', 500000);
require_once realpath(dirname(__FILE__)) . '/LitleXmlMapper.php';
Expand Down
2 changes: 2 additions & 0 deletions lib/LitleOnlineRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public function authorizationRequest($hash_in)
'fraudFilterOverride'=> XmlFields::returnArrayValue($hash_in,'fraudFilterOverride'),
'recurringRequest'=>XmlFields::recurringRequestType(XmlFields::returnArrayValue($hash_in,'recurringRequest')),
'debtRepayment'=>XmlFields::returnArrayValue($hash_in,'debtRepayment'),
'advancedFraudChecks'=>XmlFields::advancedFraudChecksType(XmlFields::returnArrayValue($hash_in,'advancedFraudChecks')),
);
}

Expand Down Expand Up @@ -110,6 +111,7 @@ public function saleRequest($hash_in)
'recurringRequest'=>XmlFields::recurringRequestType(XmlFields::returnArrayValue($hash_in,'recurringRequest')),
'litleInternalRecurringRequest'=>XmlFields::litleInternalRecurringRequestType(XmlFields::returnArrayValue($hash_in,'litleInternalRecurringRequest')),
'debtRepayment'=>XmlFields::returnArrayValue($hash_in,'debtRepayment'),
'advancedFraudChecks'=>XmlFields::advancedFraudChecksType(XmlFields::returnArrayValue($hash_in,'advancedFraudChecks')),
);

$choice_hash = array($hash_out['card'],$hash_out['paypal'],$hash_out['token'],$hash_out['paypage']);
Expand Down
15 changes: 14 additions & 1 deletion lib/XmlFields.php
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,8 @@ public static function pos($hash_in)
"capability"=>(Checker::requiredField(XmlFields::returnArrayValue($hash_in, "capability"))),
"entryMode"=>(Checker::requiredField(XmlFields::returnArrayValue($hash_in, "entryMode"))),
"cardholderId"=>(Checker::requiredField(XmlFields::returnArrayValue($hash_in, "cardholderId"))),
"terminalId"=>XmlFields::returnArrayValue($hash_in,"terminalId")
"terminalId"=>XmlFields::returnArrayValue($hash_in,"terminalId"),
"catLevel"=>XmlFields::returnArrayValue($hash_in,"catLevel"),
);
return $hash_out;
}
Expand Down Expand Up @@ -499,4 +500,16 @@ public static function litleInternalRecurringRequestType($hash_in)
return $hash_out;
}
}

public static function advancedFraudChecksType($hash_in)
{
if (isset($hash_in))
{
$hash_out = array(
"threatMetrixSessionId"=>(Checker::requiredField(XmlFields::returnArrayValue($hash_in, "threatMetrixSessionId", 128)))
);
return $hash_out;
}
}

}
8 changes: 4 additions & 4 deletions test/functional/test_litleRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ function test_addBatch(){
$this->assertFalse(file_exists($fn2));


$expected = '<batchRequest merchantId="07103610" merchantSdk="PHP;8.22.0" authAmount="0" numAuths="0" saleAmount="123" numSales="1" creditAmount="0" numCredits="0" numTokenRegistrations="0"
$expected = '<batchRequest merchantId="07103610" merchantSdk="PHP;8.23.0" authAmount="0" numAuths="0" saleAmount="123" numSales="1" creditAmount="0" numCredits="0" numTokenRegistrations="0"
captureGivenAuthAmount="0" numCaptureGivenAuths="0" forceCaptureAmount="0" numForceCaptures="0" authReversalAmount="0" numAuthReversals="0"
captureAmount="0" numCaptures="0" echeckVerificationAmount="0" numEcheckVerification="0" echeckCreditAmount="0" numEcheckCredit="0"
numEcheckRedeposit="0" echeckSalesAmount="0" numEcheckSales="0" numUpdateCardValidationNumOnTokens="0"
Expand Down Expand Up @@ -94,7 +94,7 @@ function test_addRFRRequest(){
$request->createRFRRequest(array('litleSessionId' => '8675309'));


$expected = '<litleRequest numBatchRequests="0" version="8.22" xmlns="http://www.litle.com/schema">
$expected = '<litleRequest numBatchRequests="0" version="8.23" xmlns="http://www.litle.com/schema">
<authentication><user>XXXXXX</user><password>XXXXXX</password></authentication>
<RFRRequest><litleSessionId>8675309</litleSessionId></RFRRequest>
</litleRequest>';
Expand Down Expand Up @@ -137,9 +137,9 @@ function test_closeRequest(){
$this->assertTrue(file_exists($request->request_file));


$expected = '<litleRequest numBatchRequests="1" version="8.22" xmlns="http://www.litle.com/schema">
$expected = '<litleRequest numBatchRequests="1" version="8.23" xmlns="http://www.litle.com/schema">
<authentication><user>XXXXX</user><password>XXXXX</password></authentication>
<batchRequest merchantId="07103610" merchantSdk="PHP;8.22.0" authAmount="0" numAuths="0" saleAmount="123" numSales="1" creditAmount="0" numCredits="0" numTokenRegistrations="0"
<batchRequest merchantId="07103610" merchantSdk="PHP;8.23.0" authAmount="0" numAuths="0" saleAmount="123" numSales="1" creditAmount="0" numCredits="0" numTokenRegistrations="0"
captureGivenAuthAmount="0" numCaptureGivenAuths="0" forceCaptureAmount="0" numForceCaptures="0" authReversalAmount="0" numAuthReversals="0"
captureAmount="0" numCaptures="0" echeckVerificationAmount="0" numEcheckVerification="0" echeckCreditAmount="0" numEcheckCredit="0"
numEcheckRedeposit="0" echeckSalesAmount="0" numEcheckSales="0" numUpdateCardValidationNumOnTokens="0" numUpdateSubscriptions="0"
Expand Down
14 changes: 14 additions & 0 deletions test/unit/test_XmlFields.php
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,20 @@ function test_recurringRequest_missingRequired() {
$this->assertEquals ( $hash_out ['subscription'] ['startDate'], NULL );
$this->assertEquals ( $hash_out ['subscription'] ['amount'], NULL );
}

function test_pos_has_optional_catLevel()
{
$hash=array(
"capability"=>"123",
"entryMode"=>"NO",
"catLevel"=>"self service");
$hash_out = XmlFields::pos($hash);
$this->assertEquals($hash_out["capability"],"123");
$this->assertEquals($hash_out["entryMode"], "NO");
$this->assertEquals($hash_out["cardholderId"],"REQUIRED");
$this->assertEquals($hash_out["catLevel"],"self service");
}

}


Expand Down
49 changes: 49 additions & 0 deletions test/unit/test_authorization.php
Original file line number Diff line number Diff line change
Expand Up @@ -446,4 +446,53 @@ function test_debtRepayment() {
$litleTest->newXML = $mock;
$litleTest->authorizationRequest($hash_in);
}

function test_advancedFraudChecks() {
$hash_in = array(
'card'=>array(
'type'=>'VI',
'number'=>'4100000000000001',
'expDate'=>'1213'
),
'orderId'=>'12344',
'amount'=>'2',
'orderSource'=>'ecommerce',
'debtRepayment'=>'true',
'advancedFraudChecks'=>array(
'threatMetrixSessionId' => 'abc123'
)
);
$mock = $this->getMock('LitleXmlMapper');
$mock
->expects($this->once())
->method('request')
->with($this->matchesRegularExpression('/.*<debtRepayment>true<\/debtRepayment><advancedFraudChecks><threatMetrixSessionId>abc123<\/threatMetrixSessionId><\/advancedFraudChecks><\/authorization>.*/'));
$litleTest = new LitleOnlineRequest();
$litleTest->newXML = $mock;
$litleTest->authorizationRequest($hash_in);
}

function test_advancedFraudChecks_withoutThreatMetrixSessionId() {
//In 8.23, threatMetrixSessionId is optional, but really should be required.
//It will be required in 8.24, so I'm making it required here in the schema.
//There is no good reason to send an advancedFraudChecks element without a threatMetrixSessionId.
$hash_in = array(
'card'=>array(
'type'=>'VI',
'number'=>'4100000000000001',
'expDate'=>'1213'
),
'orderId'=>'12344',
'amount'=>'2',
'orderSource'=>'ecommerce',
'debtRepayment'=>'true',
'advancedFraudChecks'=>array(
)
);

$litleTest = new LitleOnlineRequest();
$this->setExpectedException('InvalidArgumentException','Missing Required Field: /threatMetrixSessionId/');
$retOb = $litleTest->authorizationRequest($hash_in);
}

}
2 changes: 1 addition & 1 deletion test/unit/test_litleOnlineRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ function test_set_merchant_sdk_default()
$mock = $this->getMock('LitleXmlMapper');
$mock->expects($this->once())
->method('request')
->with($this->matchesRegularExpression('/.*merchantSdk="PHP;8.22.0".*/'));
->with($this->matchesRegularExpression('/.*merchantSdk="PHP;8.23.0".*/'));

$litleTest = new LitleOnlineRequest();
$litleTest->newXML = $mock;
Expand Down
47 changes: 47 additions & 0 deletions test/unit/test_sale.php
Original file line number Diff line number Diff line change
Expand Up @@ -469,5 +469,52 @@ function test_debtRepayment_optional() {
$litleTest->saleRequest($hash_in);
}

function test_advancedFraudChecks() {
$hash_in = array(
'card'=>array(
'type'=>'VI',
'number'=>'4100000000000001',
'expDate'=>'1213'
),
'orderId'=>'12344',
'amount'=>'2',
'orderSource'=>'ecommerce',
'debtRepayment'=>'true',
'advancedFraudChecks'=>array(
'threatMetrixSessionId' => 'abc123'
)
);
$mock = $this->getMock('LitleXmlMapper');
$mock
->expects($this->once())
->method('request')
->with($this->matchesRegularExpression('/.*<debtRepayment>true<\/debtRepayment><advancedFraudChecks><threatMetrixSessionId>abc123<\/threatMetrixSessionId><\/advancedFraudChecks><\/sale>.*/'));
$litleTest = new LitleOnlineRequest();
$litleTest->newXML = $mock;
$litleTest->saleRequest($hash_in);
}

function test_advancedFraudChecks_withoutThreatMetrixSessionId() {
//In 8.23, threatMetrixSessionId is optional, but really should be required.
//It will be required in 8.24, so I'm making it required here in the schema.
//There is no good reason to send an advancedFraudChecks element without a threatMetrixSessionId.
$hash_in = array(
'card'=>array(
'type'=>'VI',
'number'=>'4100000000000001',
'expDate'=>'1213'
),
'orderId'=>'12344',
'amount'=>'2',
'orderSource'=>'ecommerce',
'debtRepayment'=>'true',
'advancedFraudChecks'=>array(
)
);

$litleTest = new LitleOnlineRequest();
$this->setExpectedException('InvalidArgumentException','Missing Required Field: /threatMetrixSessionId/');
$retOb = $litleTest->saleRequest($hash_in);
}

}

0 comments on commit 47e7d82

Please sign in to comment.