承接 carropublic/myinfo 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

carropublic/myinfo

最新稳定版本:4.0.0

Composer 安装命令:

composer require carropublic/myinfo

包简介

PHP Integrating with MyInfo

README 文档

README

Latest Version on Packagist Total Downloads

This is a Laravel Pacakge for MyInfo. You can read more about MyInfo on their page. There is [PUBLIC] Demo client application for integrating with MyInfo which was in Nodejs. So, I implemented my own for Laravel Package base on their Nodejs demo.

Take a look at contributing.md to see a to do list.

Installation

Via Composer

$ composer require carropublic/myinfo

Usage

Run php artisan vendor:publish which will move private.pem and public.pem to your storage/ssl folder. I got the private/public key pair from MyInfo demo page. You have to use your own

Setup Environment

MYINFO_AUTHORIZE_API="https://test.api.myinfo.gov.sg/com/v3/authorise"
MYINFO_TOKEN_API="https://test.api.myinfo.gov.sg/com/v3/token"
MYINFO_PERSON_API="https://test.api.myinfo.gov.sg/com/v3/person"
MYINFO_CALLBACK_URL="http://localhost:3001/callback"
MYINFO_CLIENT_ID="STG2-MYINFO-SELF-TEST"
MYINFO_CLIENT_SECRET="44d953c796cccebcec9bdc826852857ab412fbe2"
MYINFO_REALM="http://localhost:3001"
MY_INFO_PRIVATE_KEY="ssl/private.pem"
MY_INFO_PUBLIC_KEY="ssl/public.pem"
MYINFO_ATTRIBUTES="uinfin,name,sex,race,nationality,dob,email,mobileno,regadd,housingtype,hdbtype,marital,edulevel,noa-basic,ownerprivate,cpfcontributions,cpfbalances"
MYINFO_PURPOSE="demonstrating MyInfo APIs"

Usage,

You can create aturhoize URL something like the following.

MyInfo::createAuthorizeUrl($code); # $code in this case for state

When user agree to retrieve their info, then it's gonna redirect to MYINFO_CALLBACK_URL base on your configruation. Then you need to handle something like the following

// This is the state that you passed when creating authorize URL
$state           = $request->input('state');

// This is the authorizon code
$code           = $request->input('code');

// Create token request base on authorize code
$myInfoToken    = MyInfo::createTokenRequest($code);
$token          = json_decode($myInfoToken, true);

if (!$token) {
	// handle error when there is no token		
}

$jwtPayload = MyInfo::getJWTPayload($token['access_token']);

if(!$jwtPayload) {
	// handle error when there is problem with getting JWT
}

$userUniFin = $jwtPayload['sub'];

// Create person request
$personRequest = MyInfo::createPersonRequest(
	$userUniFin,
	$token['access_token']
);

if(!$personRequest) {
	// handle error when there is problem with person request
}

// Get user data using private key
$userData = MyInfo::getUserData(
	$personRequest,
	storage_path(config('myinfo.keys.private'))
);

Change log

Please see the changelog for more information on what has changed recently.

Testing

$ composer test

Contributing

Please see contributing.md for details and a todo list.

Security

If you discover any security related issues, please email author email instead of using the issue tracker.

Credits

License

license. Please see the license file for more information.

统计信息

  • 总下载量: 96.78k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 5
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-11-12