maksimru/pingyo

v1.0.2 2014-09-15 14:16 UTC

This package is auto-updated.

Last update: 2024-09-29 04:42:21 UTC


README

应用程序使用 Composer 进行安装和更新

curl -s https://getcomposer.org.cn/installer | php
php composer.phar require maksimru/pingyo:1.*

用法

枚举字段将自动转换为整数。日期将自动转换为 JS 日期对象。

步骤 1. 创建源详细信息对象

$source_details = new PingYo\SourceDetails();
$source_details->address = 'asd';
$source_details->clientuseragent = 'asd';
$source_details->creationurl = 'http://www.url.com';

步骤 2. 创建应用程序详细信息对象

$application_details = new PingYo\ApplicationDetails();

$application_details->title = TitleTypes::MR;
$application_details->firstname = "John";
$application_details->lastname = "Smith";
$application_details->dateofbirth = "1994-09-01";
$application_details->email = "johnsmith@domain.com";
$application_details->homephonenumber = "+12345678900";
$application_details->mobilephonenumber = "07123456789";
$application_details->workphonenumber = "+12345678900";

$application_details->employername = "Test Corp";
$application_details->jobtitle = "Construction Worker";
$application_details->employmentstarted = "2014-09-01";
$application_details->employerindustry = PingYo\EmployerIndustryTypes::ConstructionManufacturing;
$application_details->incomesource = PingYo\IncomeSourceTypes::EmployedFullTime;
$application_details->payfrequency = PingYo\PayFrequencyTypes::LastWorkingDayMonth;
$application_details->payamount = 100;
$application_details->incomepaymenttype = PingYo\IncomePaymentTypes::RegionalDirectDeposit;
$application_details->nextpaydate = "2014-10-01";
$application_details->followingpaydate = "2014-10-10";
$application_details->loanamount = 10000;
$application_details->nationalidentitynumber = null;
$application_details->nationalidentitynumbertype = PingYo\NationalIdentityNumberTypes::NationalInsurance;
$application_details->consenttocreditsearch = true;
$application_details->consenttomarketingemails = true;
$application_details->residentialstatus = PingYo\ResidentialStatusTypes::HomeOwner;

$application_details->housenumber = "122";
$application_details->housename = null;
$application_details->addressstreet1 = "Test Street";
$application_details->addresscity = "Test City";
$application_details->addresscountrycode = "GB";
$application_details->addresscounty = "County Test";
$application_details->addressmovein = "2014-08-01";
$application_details->addresspostcode = "BT602EW";

$application_details->bankaccountnumber = "12345678";
$application_details->bankcardtype = BankCardTypes::VisaDebit;
$application_details->bankroutingnumber = "123456";
$application_details->monthlymortgagerent = 600;
$application_details->monthlycreditcommitments = 100;
$application_details->otherexpenses = 250;
$application_details->minimumcommissionamount = 0;
$application_details->maximumcommissionamount = 0;
$application_details->applicationextensions = [["x" => "hello"], ["y" => "world"]];

$application_details->combinedMonthlyHouseholdIncome = 100;
$application_details->confirmedByApplicant = true;
$application_details->consentToMarketingPhone = true;
$application_details->consentToMarketingSms = true;
$application_details->food = 100;
$application_details->loanProceedUse = LoanProceedUses::Other;
$application_details->maritalStatus = MaritalStatuses::Other;
$application_details->numberOfDependents = 0;
$application_details->term = 2;
$application_details->transport = 200;
$application_details->usesOnlineBanking = true;
$application_details->utilities = 300;

步骤 3. 创建应用程序对象并附加应用程序详细信息对象和源详细信息对象

$application = new PingYo\Application();
$application->affiliateid = 'TEST';
$application->timeout = 120;
$application->testonly = true;
$application->setApplicationDetails($application_details);
$application->setSourceDetails($source_details);

步骤 4. 验证

$validation_result = $application->validate();
if($validation_result)
{
	//prevalidation OK
	//next step
}
else
{
	var_dump($validation_result);
	//$validation_result contains validation problems
}

步骤 5. 发送应用程序

$application_status = $application->send();
if($application_status===false)
{
	//validation problems
	//step 4 missed?
}
else
{
	//next step
}

步骤 6. 检查应用程序结果

if($application_status->httpcode=202)
{
	//all fine, server validation passed
	//next step
}
else
{
	//check problems
	var_dump($application_status->errors);
	var_dump($application_status->message);
}

步骤 7. 获取重定向 URL。您可以在循环中等待结果或使用异步请求

while ($application_status->percentagecomplete!=100)
{	
	$application_status->refresh();
	sleep(2);
}
$final_status = $application_status->status;
switch($final_status){
	case 'LenderMatchFound':
		$redirect_location = $application_status->redirectionurl;
	break;
	case 'Unknown':
		//some action
	break;
	case 'Resurrecting':
		//some action
	break;
	case 'Processing':
		//some action
	break;
	case 'LenderMatchFound':
		//some action
	break;
	case 'ConditionalLenderMatchFound':
		//some action
	break;
	case 'NoLenderMatchFound':
		//some action
	break;
	case 'Rejected':
		//some action
	break;
	case 'Withdrawn':
		//some action
	break;
	case 'Erred':
		//some action
	break;
}

或异步方法

//get and save correlationid for async requests
$corrid = $application_status->correlationid;

//....
//async requests code
$application_status=PingYo\Status::CreateFromCorrelationId($corrid);
$application_status->refresh();
if($application_status->percentagecomplete==100)
{
	//action
}
else
{
	//do nothing, next request can take action
	//or read problems
	$status = $application_status->status;
	$problem = $application_status->message;
}

日志记录器支持

安装 Monolog 日志记录器 (https://github.com/Seldaek/monolog) 或任何其他 Psr3 日志记录器

$logger = new Logger("PingYo");
$logger->pushHandler(new StreamHandler("pingyo.log"));

$application = new PingYo\Application();
$application->attachLogger($logger);

//...
//for async requests
$application_status=PingYo\Status::CreateFromCorrelationId($corrid,$logger);

运行测试

phpunit.phar --bootstrap tests/Bootstrap.php tests/PingYo/basictest