khaleds/payment

适用于Paypal, Paymob, Kashier, Hyperpay和Fawry的支付助手

dev-master 2023-03-22 14:50 UTC

This package is auto-updated.

Last update: 2024-09-22 18:10:14 UTC


README

Awesome MIT License Made With Love

支付网关助手(PayPal - Paymob - Fawry - Thawani - WeAccept - Kashier - Hyperpay - Tap - Opay - Paytabs - Vodafone Cash - Orange Money - Meza Wallet - Etisalat Cash)payment-gateways.jpg

支持的网关

安装

composer require nafezly/payments

php artisan migrate

将其添加到您的DatabaseSeeder运行方法中

use Khaleds\Payment\Seeders\PaymentMethodsTableSeeder;

        $this->call(PaymentMethodsTableSeeder::class);

发布供应商文件

php artisan vendor:publish --tag="nafezly-payments-config"
php artisan vendor:publish --tag="nafezly-payments-lang"

nafezly-payments.php文件

<?php
return [

    #PAYMOB
    'PAYMOB_API_KEY' => env('PAYMOB_API_KEY'),
    'PAYMOB_INTEGRATION_ID' => env('PAYMOB_INTEGRATION_ID'),
    'PAYMOB_IFRAME_ID' => env('PAYMOB_IFRAME_ID'),
    'PAYMOB_HMAC' => env('PAYMOB_HMAC'),
    'PAYMOB_CURRENCY'=> env('PAYMOB_CURRENCY',"EGP"),


    #HYPERPAY
    'HYPERPAY_BASE_URL' => env('HYPERPAY_BASE_URL', "https://eu-test.oppwa.com"),
    'HYPERPAY_URL' => env('HYPERPAY_URL', env('HYPERPAY_BASE_URL') . "/v1/checkouts"),
    'HYPERPAY_TOKEN' => env('HYPERPAY_TOKEN'),
    'HYPERPAY_CREDIT_ID' => env('HYPERPAY_CREDIT_ID'),
    'HYPERPAY_MADA_ID' => env('HYPERPAY_MADA_ID'),
    'HYPERPAY_APPLE_ID' => env('HYPERPAY_APPLE_ID'),
    'HYPERPAY_CURRENCY' => env('HYPERPAY_CURRENCY', "SAR"),


    #KASHIER
    'KASHIER_ACCOUNT_KEY' => env('KASHIER_ACCOUNT_KEY'),
    'KASHIER_IFRAME_KEY' => env('KASHIER_IFRAME_KEY'),
    'KASHIER_TOKEN' => env('KASHIER_TOKEN'),
    'KASHIER_URL' => env('KASHIER_URL', "https://checkout.kashier.io"),
    'KASHIER_MODE' => env('KASHIER_MODE', "test"), //live or test
    'KASHIER_CURRENCY'=>env('KASHIER_CURRENCY',"EGP"),


    #FAWRY
    'FAWRY_URL' => env('FAWRY_URL', "https://atfawry.fawrystaging.com/"),//https://www.atfawry.com/ for production
    'FAWRY_SECRET' => env('FAWRY_SECRET'),
    'FAWRY_MERCHANT' => env('FAWRY_MERCHANT'),


    #PayPal
    'PAYPAL_CLIENT_ID' => env('PAYPAL_CLIENT_ID'),
    'PAYPAL_SECRET' => env('PAYPAL_SECRET'),
    'PAYPAL_CURRENCY' => env('PAYPAL_CURRENCY', "USD"),
    'PAYPAL_MODE' => env('PAYPAL_MODE',"sandbox"),//sandbox or live


    #THAWANI
    'THAWANI_API_KEY' => env('THAWANI_API_KEY', ''),
    'THAWANI_URL' => env('THAWANI_URL', "https://uatcheckout.thawani.om/"),
    'THAWANI_PUBLISHABLE_KEY' => env('THAWANI_PUBLISHABLE_KEY', ''),

    #TAP
    'TAP_CURRENCY' => env('TAP_CURRENCY',"USD"),
    'TAP_SECRET_KEY'=>env('TAP_SECRET_KEY','sk_test_XKokBfNWv6FIYuTMg5sLPjhJ'),
    'TAP_PUBLIC_KEY'=>env('TAP_PUBLIC_KEY','pk_test_EtHFV4BuPQokJT6jiROls87Y'),
    'TAP_LANG_KEY'=>env('TAP_LANG_KEY','ar'),


    #OPAY
    'OPAY_CURRENCY'=>env('OPAY_CURRENCY',"EGP"),
    'OPAY_SECRET_KEY'=>env('OPAY_SECRET_KEY'),
    'OPAY_PUBLIC_KEY'=>env('OPAY_PUBLIC_KEY'),
    'OPAY_MERCHANT_ID'=>env('OPAY_MERCHANT_ID'),
    'OPAY_COUNTRY_CODE'=>env('OPAY_COUNTRY_CODE',"EG"),
    'OPAY_BASE_URL'=>env('OPAY_BASE_URL',"https://sandboxapi.opaycheckout.com"),//https://api.opaycheckout.com for production


    #PAYMOB_WALLET (Vodafone-cash,orange-money,etisalat-cash,we-cash,meza-wallet) - test phone 01010101010 ,PIN & OTP IS 123456
    'PAYMOB_WALLET_INTEGRATION_ID'=>env('PAYMOB_WALLET_INTEGRATION_ID'),

    #Paytabs
    'PAYTABS_PROFILE_ID'  => env('PAYTABS_PROFILE_ID'),
    'PAYTABS_SERVER_KEY' =>  env('PAYTABS_SERVER_KEY'),
    'PAYTABS_BASE_URL' =>   env('PAYTABS_BASE_URL',"https://secure-egypt.paytabs.com"),
    'PAYTABS_CHECKOUT_LANG' => env('PAYTABS_CHECKOUT_LANG',"AR"),
    'PAYTABS_CURRENCY'=>env('PAYTABS_CURRENCY',"EGP"),

    'VERIFY_ROUTE_NAME' => "payment-verify",
    'APP_NAME'=>env('APP_NAME'),
];

Web.php必须有一个名为“payment-verify”的路由

Route::get('/payments/verify/{payment?}',[FrontController::class,'payment_verify'])->name('payment-verify');

支付方式

现在您可以将所有这些支付方式作为CRUD来使用!该表包含(方法、名称、颜色、描述、图标、是否激活)因此您可以创建自己的仪表板CRUD来管理哪些是激活的,以及如果存在API功能,您可以将其发送到激活的位置,并返回所选的方法,以便您可以直接使用工厂方式:将方法传递给工厂 -> 支付完成,您将获得响应数据:

如何使用

您可以通过仅传递方法名称而不包含支付关键字(例如,Fawry、Paymob、Opay等)或使用用户选择的API来传递它。

 $payment = new \Nafezly\Payments\Factories\PaymentFactory();
$payment=$payment->get(string $paymentName)
// the required data
->setRequest(array $request)
// user model (user , account , vendore etc...)
->setBuyerModel(Model $buyer)
->pay()


//verify

$payment = new \Nafezly\Payments\Factories\PaymentFactory();
$payment=$payment->get(string $paymentName)
// the required data
->setRequest(array $request)
// user model (user , account , vendore etc...)
->setBuyerModel(Model $buyer)
->verify()

响应

现在您有了响应DTO

    public bool $status = true;
    public string $message = '';
    public array $data=[];
    public array $request=[];
    public NafezlyPayment $payment;
    public string $payment_id = '';
    public View|null $html = null;
    public string $redirect_url = '';
    public array $errors = [];

您可以检查状态布尔值以进行后续操作;如果状态为false,您将找到包含错误的错误消息,而errors数组将包含例如验证错误

支付表

现在您有一个支付表和一个支付日志表;当您使用pay函数时,记录将存储在支付表中,状态为未付款;此表是形态的

并且当您使用verify时,状态将更改为已付款

当有任何错误发生时,请求和响应将保存到支付日志表中

测试卡

信用