jgroup / laravel-bank-id
用于在Laravel应用程序中集成瑞典BankID的软件包
v1.0.0
2024-01-28 20:37 UTC
Requires
- php: ^7.4
- guzzlehttp/guzzle: ^7.8
- netresearch/jsonmapper: ^4.2
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.6
README
用于在您的Laravel应用程序中集成瑞典BankID的软件包。
源代码基于BankID提供的示例应用程序,该应用程序使用Java和Spring编写。
此软件包使用Laravel 8开发,尚未在早期版本上进行测试。
入门
使用Composer安装软件包。
composer require jgroup/laravel-bank-id
通过运行以下命令发布配置和证书(测试证书和生产ca根证书):
php artisan vendor:publish --provider="Jgroup\BankID\BankIDServiceProvider"
生产证书
将生产证书从PKCS_12格式转换为两个PEM文件,准备使用,运行以下命令:
openssl pkcs12 -in /path/to/certificate.p12 -passin pass:password_for_certificate_p12 -out /destination/folder/certificate.pem -clcerts -nokeys
openssl pkcs12 -in /path/to/certificate.p12 -passin pass:password_for_certificate_p12 -out /destination/folder/key.pem -nocerts -nodes
快速认证示例
// routes/web.php <?php use App\Models\User; use Illuminate\Http\Response; use Jgroup\BankID\Facades\BankID; use Illuminate\Support\Facades\Route; Route::post('/auth/bankid', function(Request $request) { return BankID::auth( $request->getClientIp(), 'Text to display to the user' ); }); Route::post('/auth/bankid/collect', function(Request $request) { $response = BankID::collect(); if ($response->getStatus() === 'complete') { $personalNumber = $response->getCollectResult() ->getCompletionResult() ->getPersonalNumber(); $user = User::where('pnr', $personalNumber)->firstOrFail(); // clear session transaction when completed BankID::setSessionTransaction(null); Auth::login($user); } return $response; });
快速签名示例
// routes/web.php <?php use Illuminate\Http\Response; use Illuminate\Validation\Rule; use Jgroup\BankID\Facades\BankID; use Jgroup\BankID\Rules\SignCompleted; use Illuminate\Support\Facades\Route; const SIGN_TEXT = 'Text to sign'; Route::post('/bankid/collect', function(Request $request) { return BankID::collect(); }); Route::post('/submit-form/sign', function(Request $request) { return BankID::sign( $request->getClientIp(), SIGN_TEXT ); }); Route::post('/submit-form', function(Request $request) { $request->validate([ // transactionId should be sent along with the form data 'transactionId' => [ new SignCompleted(SIGN_TEXT) ], // your validation rules ]); // logic for handling form submission // clear session transaction if submission was processed successfully BankID::setSessionTransaction(null); });