@@ -342,4 +342,107 @@ public void testTransactionEventWithAch() throws Exception {
342342 server .shutdown ();
343343 }
344344
345+ @ Test
346+ public void testTransactionEventWithSenderReceiverAddressesAnd3dsFields () throws Exception {
347+ String expectedRequestBody = "{\n " +
348+ " \" $type\" : \" $transaction\" ,\n " +
349+ " \" $api_key\" : \" YOUR_API_KEY\" ,\n " +
350+ " \" $user_id\" : \" billy_jones_301\" ,\n " +
351+ " \" $amount\" : 506790000,\n " +
352+ " \" $currency_code\" : \" USD\" ,\n " +
353+ "\n " +
354+ " \" $user_email\" : \" bill@gmail.com\" ,\n " +
355+ " \" $transaction_type\" : \" $sale\" ,\n " +
356+ " \" $transaction_status\" : \" $failure\" ,\n " +
357+ " \" $order_id\" : \" ORDER-123124124\" ,\n " +
358+ " \" $transaction_id\" : \" 719637215\" ,\n " +
359+ " \" $decline_category\" : \" $lost\" ,\n " +
360+ " \" $status_3ds\" : \" $authentication_successful\" ,\n " +
361+ " \" $triggered_3ds\" : true,\n " +
362+ " \" $processor_3ds_requested\" : false,\n " +
363+ " \" $merchant_initiated_transaction\" : true,\n " +
364+ " \" $sender_address\" : {\n " +
365+ " \" $name\" : \" Bill Jones\" ,\n " +
366+ " \" $phone\" : \" 1-415-555-6041\" ,\n " +
367+ " \" $address_1\" : \" 2100 Main Street\" ,\n " +
368+ " \" $address_2\" : \" Apt 3B\" ,\n " +
369+ " \" $city\" : \" New London\" ,\n " +
370+ " \" $region\" : \" New Hampshire\" ,\n " +
371+ " \" $country\" : \" US\" ,\n " +
372+ " \" $zipcode\" : \" 03257\" \n " +
373+ " },\n " +
374+ " \" $receiver_address\" : {\n " +
375+ " \" $name\" : \" Bill Jones\" ,\n " +
376+ " \" $phone\" : \" 1-415-555-6041\" ,\n " +
377+ " \" $address_1\" : \" 2100 Main Street\" ,\n " +
378+ " \" $address_2\" : \" Apt 3B\" ,\n " +
379+ " \" $city\" : \" New London\" ,\n " +
380+ " \" $region\" : \" New Hampshire\" ,\n " +
381+ " \" $country\" : \" US\" ,\n " +
382+ " \" $zipcode\" : \" 03257\" \n " +
383+ " },\n " +
384+ " \" $payment_method\" : {\n " +
385+ " \" $ach\" : {\n " +
386+ " \" $ach_type\" : \" $credit\" ,\n " +
387+ " \" $routing_number\" : \" 072403005\" ,\n " +
388+ " \" $account_number\" : \" 12345\" ,\n " +
389+ " \" $account_holder_name\" : \" Jane Doe\" \n " +
390+ " }\n " +
391+ " },\n " +
392+ "}" ;
393+
394+ // Start a new mock server and enqueue a mock response.
395+ MockWebServer server = new MockWebServer ();
396+ MockResponse response = new MockResponse ();
397+ response .setResponseCode (HTTP_OK );
398+ response .setBody ("{\n " +
399+ " \" status\" : 0,\n " +
400+ " \" error_message\" : \" OK\" ,\n " +
401+ " \" time\" : 1327604222,\n " +
402+ " \" request\" : \" " + TestUtils .unescapeJson (expectedRequestBody ) + "\" \n " +
403+ "}" );
404+ server .enqueue (response );
405+ server .start ();
406+
407+ // Create a new client and link it to the mock server.
408+ SiftClient client = new SiftClient ("YOUR_API_KEY" , "YOUR_ACCOUNT_ID" ,
409+ new OkHttpClient .Builder ()
410+ .addInterceptor (OkHttpUtils .urlRewritingInterceptor (server ))
411+ .build ());
412+
413+ // Build and execute the request against the mock server.
414+ EventRequest request = client .buildRequest (new TransactionFieldSet ()
415+ .setUserId ("billy_jones_301" )
416+ .setAmount (506790000L )
417+ .setCurrencyCode ("USD" )
418+ .setUserEmail ("bill@gmail.com" )
419+ .setTransactionType ("$sale" )
420+ .setTransactionStatus ("$failure" )
421+ .setDeclineCategory ("$lost" )
422+ .setOrderId ("ORDER-123124124" )
423+ .setTransactionId ("719637215" )
424+ .setStatus3Ds ("$authentication_successful" )
425+ .setTriggered3Ds (true )
426+ .setProcessor3DsRequested (false )
427+ .setMerchantInitiatedTransaction (true )
428+ .setSenderAddress (TestUtils .sampleAddress2 ())
429+ .setReceiverAddress (TestUtils .sampleAddress2 ())
430+ .setPaymentMethod (TestUtils .samplePaymentMethod3 ()));
431+ EventResponse siftResponse = request .send ();
432+
433+ // Verify the request.
434+ RecordedRequest request1 = server .takeRequest ();
435+ Assert .assertEquals ("POST" , request1 .getMethod ());
436+ Assert .assertEquals ("/v206/events" , request1 .getPath ());
437+ JSONAssert .assertEquals (expectedRequestBody , request .getFieldSet ().toJson (), true );
438+
439+ // Verify the response.
440+ Assert .assertEquals (HTTP_OK , siftResponse .getHttpStatusCode ());
441+ Assert .assertEquals (0 , (int ) siftResponse .getBody ().getStatus ());
442+ JSONAssert .assertEquals (response .getBody ().readUtf8 (),
443+ siftResponse .getBody ().toJson (), true );
444+
445+ server .shutdown ();
446+ }
447+
345448}
0 commit comments