devinweb / payment
Requires
- php: ^7.1
- guzzlehttp/guzzle: ^6.5
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-08-30 01:14:43 UTC
README
支付包提供了一种简单的方法来处理MENA地区的支付网关。
安装
此包需要Laravel 5.4或更高版本。如果您的Laravel版本大于5.4,则可以跳过以下两个步骤(2、3)(包自动发现5.5+)。
- 您可以通过Composer安装此包
composer require devinweb/payment
- 打开您的
config/app.php
并将以下内容添加到providers数组中
Devinweb\Payment\PaymentServiceProvider::class,
- 在相同的
config/app.php
中,将以下内容添加到aliases数组中
'Payment' => Devinweb\Payment\Facades\Payment::class,
- 运行以下命令以发布包配置文件
config/payfort-payment.php
php artisan vendor:publish --provider="Devinweb\Payment\PaymentServiceProvider" --tag="config"
Payfort
要通过Payfort进行支付很简单,但在处理支付之前,需要设置您的 FrontEnd
,您可以在 payment-boilerplate
仓库中检查。
配置(Payfort)
现在您可以将Payfort凭据添加到 app/config/payments/php
<?php 'payfort' => [ 'callback_urls' => [ 'error-page' => '/api/error', 'success-page' => '/api/success', ], 'sandboxMode' => env('PAYFORT_SAND_BOX_MODE', true), /** * language used to specify the response language returned from payfort */ 'language' => env('LANGUAGE', 'en'), /** * your Merchant Identifier account (mid) */ 'merchantIdentifier' => env('MERCHANT_IDENTIFIER', ''), /** * your access code */ 'accessCode' => env('ACCESS_CODE', ''), /** * SHA Request passphrase */ 'SHARequestPhrase' => env('SHA_REQUEST_PASSPHRASE', ''), /** * SHA Response passphrase */ 'SHAResponsePhrase' => env('SHA_RESPONSE_PASSPHRASE', ''), /** * SHA Type (Hash Algorith) * expected Values ("sha1", "sha256", "sha512") */ 'SHAType' => env('SHA_TYPE', 'sha256'), /** * command * expected Values ("AUTHORIZATION", "PURCHASE") */ 'command' => env('COMMAND', 'AUTHORIZATION'), /** * order currency */ 'currency' => env('CURRENCY', 'USD'), ]
路由(Payfort)
要使用Payfort,您需要三个路由
- 用于从前端提交数据到后端。
- 如果支付成功。
- 如果Payfort响应错误,则进行重定向。
<?php // App\Config\payments.php // you can configure you callback routes here 'payfort' => [ 'callback_urls' => [ 'error-page' => '', // redirection to error page 'success-page' => '', // redirection to success page ], // ... ]
您可以通过 Payment
门面访问支付。
<?php use Illuminate\Http\Request; Route::post('/payment', function (Request $request) { // ... $merchant_reference = rand(0, getrandmax()); return Payment::use('payfort', $merchant_reference)->pay(); });
所需参数(Payfort)
每个请求应包含 amount
、email
、hold_name
。
<?php $request->add([ 'amount' => '', 'email' => '', 'hold_name' => '' ])
Payfort Apple Pay
您可以使用此包通过Payfort处理Apple Pay交易。
配置(Payfort Apple Pay)
您应将Payfort Apple Pay凭据添加到 app/confing/payments/php
<?php 'payfort_apple_pay' => [ 'sandboxMode' => true, 'language' => 'ar', 'merchantIdentifier' => '', 'accessCode' => '', 'SHARequestPhrase' => '', 'SHAResponsePhrase' => '', 'SHAType' => 'sha256', 'command' => 'PURCHASE', 'currency' => 'SAR', ]
用法(Payfort Apple Pay)
要通过Payfort Apple Pay进行支付,与之前的方法相同,您可以使用。
return Payment::use('payfort_apple_pay', $merchant_reference)->pay();
所需参数(Payfort Apple Pay)
要在请求负载中附加以使用Apple Pay的参数
{ "apple_data": "", "apple_header": { "apple_ephemeralPublicKey": "", "apple_publicKeyHash": "", "apple_transactionId": "-" }, "apple_paymentMethod": { "apple_displayName": "", "apple_network": "", "apple_type": "" }, "apple_signature": "", "apple_version": "EC_v1", "digital_wallet": "APPLE_PAY", //package requirements "amount": 240, // optional data if you need them "email": "", "name": "", "phone": "" }
通过ReactNative支付
如果您想通过webView在您的React Native移动应用中处理支付
function onNavigationStateChange() { // this method will be invoked each time the url changed } function onMessage() { // here you can handle the final result } return ( <WebView source={{ html: html() }} onNavigationStateChange={onNavigationStateChange} javaScriptEnabled={true} domStorageEnabled={true} onMessage={onMessage} startInLoadingState /> );
在您的PHP控制器或路由中,您可以使用
<?php return Payment::use('payfort')->viaReactNative()->pay();
Payfort事件
我们知道Payfort可以通知商户,对于所有在交易上订阅的事件。我们需要首先将您的回调添加到Payfort仪表板中,然后您可以在应用程序中实现此回调。
<?php use Illuminate\Http\Request; Route::match(['get', 'post'], '/payfort-callback', function(Request $request) { return Payment::use('payfort')->webHook(); });
此webHook可以调用两个内置事件。有两个事件可供您监听。
示例
查看此存储库 payment-boilerplate
。
成功响应
[ "response_code" => "18000", "card_number" => "400555******0001", "card_holder_name" => "CUSTOMER_HOLDER_NAME", "signature" => "d641d71c13da959cba92371d70c686b602e2b62796dfca5286c760c6b5d9e3b1", "merchant_identifier" => "YOUR_MERCHANT_IDENTIFIER", "expiry_date" => "2105", "access_code" => "YOUR_ACCESS_CODE", "language" => "ar", "service_command" => "TOKENIZATION", "response_message" => "عملية ناجحة", "merchant_reference" => "278245857", "token_name" => "dced12c0eeeb444185dcc450b917d987", "return_url" => "YOUR_RETURN_URL" "card_bin" => "400555" "status" => "18" ]
失败响应
[ "response_code" => "00016", "card_number" => "400550******0001", "card_holder_name" => "CUSTOMER_HOLDER_NAME", "signature" => "signature_value", "merchant_identifier" => "YOUR_MERCHANT_IDENTIFIER", "expiry_date" => "2105", "access_code" => "YOUR_ACCESS_CODE", "language" => "ar", "service_command" => "TOKENIZATION", "response_message" => "رقم البطاقة غير صحيح", "merchant_reference" => "158151963", "return_url" => "YOUR_RETURN_URL", "status" => "00", "error_msg" => "رقم البطاقة غير صحيح", ]
测试
composer test
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
有关详细信息,请参阅CONTRIBUTING。
致谢
关于Devinweb
Devinweb是一家位于摩洛哥泰图安的Web应用程序公司。我们的网站。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。