xgenious-fundorex / paymentgateway
一个用于管理多个支付网关的laravel包
Requires
- php: ^7.4|^8.0
- anandsiddharth/laravel-paytm-wallet: ^2.0.0
- billowapp/payfast: ^0.4.0
- cinetpay/cinetpay-php: ^1.9
- jomweb/billplz-laravel: ^2.2.2
- kingflamez/laravelrave: ^v4.2.0
- laravel/framework: ^8.0
- mercadopago/dx-php: ^2.4.4
- midtrans/midtrans-php: ^2.5
- mollie/laravel-mollie: ^2.0
- paytabscom/laravel_paytabs: dev-master
- razorpay/razorpay: 2.*
- square/square: 18.0.0.20220420
- srmklive/paypal: ~3.0
- stripe/stripe-php: ^7.103
- tzsk/payu: ^5.2
- unicodeveloper/laravel-paystack: 1.0.*
Requires (Dev)
- orchestra/testbench: ^6.0
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.0
This package is not auto-updated.
Last update: 2024-09-22 18:02:14 UTC
README
关于此包的一般信息。
laravel 8x安装
配置您的composer.json文件以安装此包
将以下代码添加到您的composer.json
文件中
"repositories": [ { "type": "vcs", "url": "https://github.com/Sharifur/paymentgateway.git" } ],
在命令提示符或终端中运行以下命令以安装此包
composer require xgenious/paymentgateway
如果此支付包要求您输入用户名和密码,请在这里输入或生成您自己的令牌。
关于此包安装程序的信息。
支持的支付网关列表
- Paytm [^v2.0支持]
- PayPal [^v2.0支持]
- Stripe [^v2.0支持]
- Midtrans [^v2.0支持]
- Razorpay[^v2.0支持]
- Mollie[^v2.0支持]
- FlutterwaveRave[^v2.0支持]
- Paystack[^v2.0支持]
- Payfast[^2.0支持]
- Cashfree [^v2.0支持]
- Instamojo [^v2.0支持]
- Mercado pago [^v2.0支持]
- Squareup [^v2.0]
- Cinetpay [^v2.0]
- PayTabs [^v2.0]
- BillPlz [^v2.0]
- Zitopay [^v2.0]
- PayU (即将推出)
- PerfectMoney (即将推出)
- payumoney (即将推出)
- Paytr (即将推出)
- Authorized.net (即将推出)
- Pagseguro (即将推出)
带有params v1的支付请求功能
以下是一个示例Controller
方法来向客户收费,这是在此包中所有可用支付网关中相同的
public function payment(Request $request) { return XgPaymentGateway::payfast()->charge_customer([ //payfast is an example you can added all of payment gateawy name in lowercase 'amount' => 10, // amount you want to charge from customer 'title' => 'this is test title', // payment title 'description' => 'this is test description', // payment description 'ipn_url' => route('stripe.ipn'), //you will get payment response in this route 'order_id' => 5, // your order number 'track' => 'asdfasdfsdf', // a random number to keep track of your payment 'cancel_url' => route('payment.failed'), //payment gateway will redirect here if the payment is failed 'success_url' => route('payment.success'), // payment gateway will redirect here after success 'email' => 'dvrobin4@gmail.com', // user email 'name' => 'sharifur rhamna', // user name 'payment_type' => 'order', // which kind of payment your are receving from customer ]); }
支付Ipn功能v1
以下是一个示例Controller
方法来处理ipn响应,这是在此包中所有可用支付网关中相同的
public function payfast_ipn() { dd(XgPaymentGateway::payfast()->ipn_response()); }
Paytm
以下是Paytm的测试凭据
PAYTM_ENVIRONMENT=local // local|production PAYTM_MERCHANT_ID=Digita57697814558795 PAYTM_MERCHANT_KEY="dv0XtmsPYpewNag&" PAYTM_MERCHANT_WEBSITE="WEBSTAGING" PAYTM_CHANNEL="" PAYTM_INDUSTRY_TYPE="" PAYTM_ENVIRONMENT="local" // values : (local | production)
Paytm ipn路由示例
Route::post('/paytm-ipn', [\App\Http\Controllers\PaymentLogController::class,'paytm_ipn'] )->name('payment.paytm.ipn');
您必须从csrf令牌验证中排除paytm ipn路由,转到app/Http/Middleware
中的VerifyCsrfToken
中间件,将您的路由路径添加到$except
数组中
namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'paytm-ipn' ]; }
2.0版本Paytm设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$paytm = XgPaymentGateway::paytm(); $paytm->setMerchantId('Digita57697814558795'); $paytm->setMerchantKey('dv0XtmsPYpewNag&'); $paytm->setMerchantWebsite('WEBSTAGING'); $paytm->setChannel('WEB'); $paytm->setIndustryType('Retail'); $paytm->setCurrency("EUR"); $paytm->setEnv(true); // this must be type of boolean , string will not work $paytm->setExchangeRate(74); // if INR not set as currency $response = $paytm->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.paytm.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$paytm = XgPaymentGateway::paytm(); $paytm->setMerchantId('Digita57697814558795'); $paytm->setMerchantKey('dv0XtmsPYpewNag&'); $paytm->setMerchantWebsite('WEBSTAGING'); $paytm->setChannel('WEB'); $paytm->setIndustryType('Retail'); $paytm->setEnv(true); //env must set as boolean, string will not work dd($paytm->ipn_response());
CinetPay
Paytm ipn路由示例
Route::post('/cinetpay-ipn', [\App\Http\Controllers\PaymentLogController::class,'cinetpay_ipn'] )->name('payment.cinetpay.ipn');
您必须从csrf令牌验证中排除cinetpay ipn路由,转到app/Http/Middleware
中的VerifyCsrfToken
中间件,将您的路由路径添加到$except
数组中
namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'cinetpay-ipn' ]; }
2.0版本Cinetpay设置
Cinetpay支付网关仅在版本> v2.x中受支持
charge_customer方法示例
$cinetpay = XgPaymentGateway::cinetpay(); $cinetpay->setAppKey('LE9C12TNM5HAS'); $cinetpay->setSiteId('EAAAEOuLQObrVwJvCvoio3H13b8Ssqz1ighmTBKZvIENW9qxirHGHkqsGcPBC1uN'); $cinetpay->setCurrency("USD"); $cinetpay->setEnv(true); $cinetpay->setExchangeRate(74); // if ['XOF', 'XAF', 'CDF', 'GNF', 'USD'] not set as currency $response = $paytm->charge_customer([ 'amount' => 10, // minimum 100 amount is required to process payment if usd not set as currency 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.cinetpay.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$cinetpay = XgPaymentGateway::cinetpay(); $cinetpay->setAppKey('LE9C12TNM5HAS'); $cinetpay->setSiteId('EAAAEOuLQObrVwJvCvoio3H13b8Ssqz1ighmTBKZvIENW9qxirHGHkqsGcPBC1uN'); $cinetpay->setEnv(true); //env must set as boolean, string will not work dd($cinetpay->ipn_response());
CinetPay测试凭据
apiKey = "12912847765bc0db748fdd44.40081707"; site_id = "445160";
PayPal
以下是Paypal的测试凭据
PAYPAL_MODE=sandbox PAYPAL_SANDBOX_CLIENT_ID='AUP7AuZMwJbkee-2OmsSZrU-ID1XUJYE-YB-2JOrxeKV-q9ZJZYmsr-UoKuJn4kwyCv5ak26lrZyb-gb' PAYPAL_SANDBOX_CLIENT_SECRET='EEIxCuVnbgING9EyzcF2q-gpacLneVbngQtJ1mbx-42Lbq-6Uf6PEjgzF7HEayNsI4IFmB9_CZkECc3y' PAYPAL_SANDBOX_APP_ID="641651651958" PAYPAL_LIVE_CLIENT_ID="" PAYPAL_LIVE_CLIENT_SECRET="" PAYPAL_LIVE_APP_ID="" PAYPAL_PAYMENT_ACTION="" PAYPAL_CURRENCY="USD" PAYPAL_NOTIFY_URL="http://gateway.test/paypal/ipn" PAYPAL_LOCALE="en_GB" PAYPAL_VALIDATE_SSL="false"
Paypal ipn路由示例
Route::get('/paypal-ipn', [\App\Http\Controllers\PaymentLogController::class,'paypal_ipn'] )->name('payment.paypal.ipn');
2.0版本Paypal设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$paypal = XgPaymentGateway::paypal(); $paypal->setClientId('client_id'); // provide sandbox id if payment env set to true, otherwise provide live credentials $paypal->setClientSecret('client_secret'); // provide sandbox id if payment env set to true, otherwise provide live credentials $paypal->setAppId('app_id'); // provide sandbox id if payment env set to true, otherwise provide live credentials $paypal->setCurrency("EUR"); $paypal->setEnv(true); //env must set as boolean, string will not work $paypal->setExchangeRate(74); // if INR not set as currency $response = $paypal->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$paypal = XgPaymentGateway::paypal(); $paypal->setClientId('AUP7AuZMwJbkee-2OmsSZrU-ID1XUJYE-YB-2JOrxeKV-q9ZJZYmsr-UoKuJn4kwyCv5ak26lrZyb-gb'); $paypal->setClientSecret('EEIxCuVnbgING9EyzcF2q-gpacLneVbngQtJ1mbx-42Lbq-6Uf6PEjgzF7HEayNsI4IFmB9_CZkECc3y'); $paypal->setEnv(true); //env must set as boolean, string will not work $paypal->setAppId('641651651958'); dd($paypal->ipn_response());
Stripe
以下是Stripe的测试凭据
STRIPE_PUBLIC_KEY=pk_test_51GwS1SEmGOuJLTMsIeYKFtfAT3o3Fc6IOC7wyFmmxA2FIFQ3ZigJ2z1s4ZOweKQKlhaQr1blTH9y6HR2PMjtq1Rx00vqE8LO0x STRIPE_SECRET_KEY=sk_test_51GwS1SEmGOuJLTMs2vhSliTwAGkOt4fKJMBrxzTXeCJoLrRu8HFf4I0C5QuyE3l3bQHBJm3c0qFmeVjd0V9nFb6Z00VrWDJ9Uw
Stripe ipn路由示例
Route::get('/stripe-ipn', [\App\Http\Controllers\PaymentLogController::class,'stripe_ipn'] )->name('payment.stripe.ipn');
2.0版本Stripe设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$stripe = XgPaymentGateway::stripe(); $stripe->setSecretKey('sk_test_51GwS1SEmGOuJLTMs2vhSliTwAGkOt4fKJMBrxzTXeCJoLrRu8HFf4I0C5QuyE3l3bQHBJm3c0qFmeVjd0V9nFb6Z00VrWDJ9Uw'); $stripe->setPublicKey('pk_test_51GwS1SEmGOuJLTMsIeYKFtfAT3o3Fc6IOC7wyFmmxA2FIFQ3ZigJ2z1s4ZOweKQKlhaQr1blTH9y6HR2PMjtq1Rx00vqE8LO0x'); $stripe->setCurrency("EUR"); $stripe->setEnv(true); //env must set as boolean, string will not work $stripe->setExchangeRate(74); // if INR not set as currency $response = $stripe->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$stripe = XgPaymentGateway::stripe(); $stripe->setSecretKey('sk_test_51GwS1SEmGOuJLTMs2vhSliTwAGkOt4fKJMBrxzTXeCJoLrRu8HFf4I0C5QuyE3l3bQHBJm3c0qFmeVjd0V9nFb6Z00VrWDJ9Uw'); $stripe->setPublicKey('pk_test_51GwS1SEmGOuJLTMsIeYKFtfAT3o3Fc6IOC7wyFmmxA2FIFQ3ZigJ2z1s4ZOweKQKlhaQr1blTH9y6HR2PMjtq1Rx00vqE8LO0x'); $stripe->setEnv(true); //env must set as boolean, string will not work dd($stripe->ipn_response());
Midtrans
以下是Midtrans的测试凭据
MIDTRANS_MERCHANT_ID="G770543580" MIDTRANS_SERVER_KEY="SB-Mid-server-9z5jztsHyYxEdSs7DgkNg2on" MIDTRANS_CLIENT_KEY="SB-Mid-client-iDuy-jKdZHkLjL_I" MIDTRANS_ENVAIRONTMENT="false"
2.0版本Midtrans设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$midtrans = XgPaymentGateway::midtrans(); $midtrans->setClientKey('SB-Mid-client-iDuy-jKdZHkLjL_I'); $midtrans->setServerKey('SB-Mid-server-9z5jztsHyYxEdSs7DgkNg2on'); $midtrans->setCurrency("IDR"); $midtrans->setEnv(true); //true mean sandbox mode , false means live mode $midtrans->setExchangeRate(74); // if IDR not set as currency $response = $midtrans->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$midtrans->setClientKey('client_key'); $midtrans->setServerKey('server_key'); $midtrans->setEnv(true); //true mean sandbox mode , false means live mode dd($midtrans->ipn_response());
Midtrans ipn路由示例
Route::get('/midtrans-ipn', [\App\Http\Controllers\PaymentLogController::class,'midtrans_ipn'] )->name('payment.midtrans.ipn');
Midtrans测试卡
VISA Description
4811 1111 1111 1114 3DS Enabled
4911 1111 1111 1113 3DS Enabled. Transaction Denied by Bank
4411 1111 1111 1118 3DS Disabled
4511 1111 1111 1117 3DS Disabled. Challenged by Fraud Detection
4611 1111 1111 1116 3DS Disabled. Denied by Fraud Detection
4711 1111 1111 1115 3DS Disabled. Transaction Denied by Bank
MASTERCARD Description
5211 1111 1111 1117 3DS Enabled
5111 1111 1111 1118 3DS Enabled. Transaction Denied by Bank
5410 1111 1111 1116 3DS Disabled
5510 1111 1111 1115 3DS Disabled. Challenged by Fraud Detection
5411 1111 1111 1115 3DS Disabled. Denied by Fraud Detection
5511 1111 1111 1114 3DS Disabled. Transaction Denied by Bank
Razorpay
以下是Razorpay的测试凭据
RAZORPAY_API_KEY="rzp_test_SXk7LZqsBPpAkj" RAZORPAY_API_SECRET="Nenvq0aYArtYBDOGgmMH7JNv"
Razorpay ipn路由示例
Route::post('/razorpay-ipn', [\App\Http\Controllers\PaymentLogController::class,'razorpay_ipn'] )->name('payment.razorpay.ipn');
Razorpay测试卡
TEST MODE card - Visa number - 4111 1111 1111 1111 CVV - Random CVV Expiry - Any future date
2.0版本Razorpay设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$razorpay = XgPaymentGateway::razorpay(); $razorpay->setApiKey('rzp_test_SXk7LZqsBPpAkj'); $razorpay->setApiSecret('Nenvq0aYArtYBDOGgmMH7JNv'); $razorpay->setCurrency("EUR"); $razorpay->setEnv(true); //env must set as boolean, string will not work $razorpay->setExchangeRate(74); // if INR not set as currency $response = $razorpay->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$razorpay = XgPaymentGateway::razorpay(); $razorpay->setApiKey('rzp_test_SXk7LZqsBPpAkj'); $razorpay->setApiSecret('Nenvq0aYArtYBDOGgmMH7JNv'); $razorpay->setEnv(true); //env must set as boolean, string will not work dd($razorpay->ipn_response());
Mollie
以下是Mollie的测试凭据
MOLLIE_KEY=test_fVk76gNbAp6ryrtRjfAVvzjxSHxC2v
Mollie ipn路由示例
Route::get('/mollie-ipn', [\App\Http\Controllers\PaymentLogController::class,'mollie_ipn'] )->name('payment.razorpay.ipn');
2.0版本Mollie设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$mollie = XgPaymentGateway::mollie(); $mollie->setApiKey('api_key'); $mollie->setCurrency("EUR"); $mollie->setEnv(true); //env must set as boolean, string will not work $mollie->setExchangeRate(74); // if INR not set as currency $response = $mollie->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.mollie.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$mollie = XgPaymentGateway::mollie(); $mollie->setApiKey('api_key'); $mollie->setCurrency("EUR"); $mollie->setEnv(true); //env must set as boolean, string will not work $mollie->setExchangeRate(74); // if INR not set as currency dd($mollie->ipn_response());
FlutterwaveRave
以下是Flutterwave测试凭证
FLW_PUBLIC_KEY=FLWPUBK_TEST-86cce2ec43c63e09a517290a8347fcab-X FLW_SECRET_KEY=FLWSECK_TEST-d37a42d8917db84f1b2f47c125252d0a-X FLW_SECRET_HASH="fundorex"
Flutterwave Rave ipn路由示例
Route::get('/flutterwave-ipn', [\App\Http\Controllers\PaymentLogController::class,'flutterwave_ipn'] )->name('payment.flutterwave.ipn');
测试卡
Test MasterCard PIN authentication Card number: 5531 8866 5214 2950 cvv: 564 Expiry: 09/32 Pin: 3310 OTP: 12345 Card number: 4556052704172643 cvv: 899 Expiry: 09/32 Pin: 3310 OTP: 12345
2.0版本Flutterwave设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$flutterwave = XgPaymentGateway::flutterwave(); $flutterwave->setPublicKey('FLWPUBK_TEST-86cce2ec43c63e09a517290a8347fcab-X'); $flutterwave->setSecretKey('FLWSECK_TEST-d37a42d8917db84f1b2f47c125252d0a-X'); $flutterwave->setCurrency("USD"); $flutterwave->setEnv(true); //env must set as boolean, string will not work $flutterwave->setExchangeRate(74); // if NGN not set as currency $response = $flutterwave->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$flutterwave = XgPaymentGateway::flutterwave(); $flutterwave->setPublicKey('FLWPUBK_TEST-86cce2ec43c63e09a517290a8347fcab-X'); $flutterwave->setSecretKey('FLWSECK_TEST-d37a42d8917db84f1b2f47c125252d0a-X'); $flutterwave->setCurrency("USD"); $flutterwave->setEnv(true); //env must set as boolean, string will not work dd($flutterwave->ipn_response());
Paystack
以下是Paystack测试凭证
PAYSTACK_PUBLIC_KEY=pk_test_a7e58f850adce9a73750e61668d4f492f67abcd9 PAYSTACK_SECRET_KEY=sk_test_2a458001d806c878aba51955b962b3c8ed78f04b PAYSTACK_PAYMENT_URL=https://api.paystack.co MERCHANT_EMAIL=sopnilsohan03@gmail.com
Paystack ipn路由示例
Route::get('/paystack-ipn', [\App\Http\Controllers\PaymentLogController::class,'paystack_ipn'] )->name('payment.paystack.ipn');
注意:paystack不支持多个ipn路由,它只支持在Paystack仪表板中添加的一个webhook。您可以使用$arg['payment_type']数据来检查处理了哪种类型的支付
2.0版本Paystack设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$paystack = XgPaymentGateway::paystack(); $paystack->setPublicKey('pk_test_a7e58f850adce9a73750e61668d4f492f67abcd9'); $paystack->setSecretKey('sk_test_2a458001d806c878aba51955b962b3c8ed78f04b'); $paystack->setMerchantEmail('sopnilsohan03@gmail.com'); $paystack->setCurrency("EUR"); $paystack->setEnv(true); //env must set as boolean, string will not work $paystack->setExchangeRate(74); // if NGN not set as currency $response = $paystack->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$paystack = XgPaymentGateway::paystack(); $paystack->setPublicKey('pk_test_a7e58f850adce9a73750e61668d4f492f67abcd9'); $paystack->setSecretKey('sk_test_2a458001d806c878aba51955b962b3c8ed78f04b'); $paystack->setMerchantEmail('sopnilsohan03@gmail.com'); $paystack->setEnv(true); //env must set as boolean, string will not work dd($paystack->ipn_response());
Payfast
以下是Payfast测试凭证
PF_MERCHANT_ID=10024000 PF_MERCHANT_KEY=77jcu5v4ufdod PAYFAST_PASSPHRASE=testpayfastsohan PF_MERCHANT_ENV=true PF_ITN_URL="https://fundorex.test/donation-payfast"
Payfast ipn路由示例
Route::post('/payfast-ipn', [\App\Http\Controllers\PaymentLogController::class,'payfast_ipn'] )->name('payment.payfast.ipn');
您必须排除Payfast ipn路由从csrf token验证中,前往app/Http/Middleware
VerifyCsrfToken
中间件,在此处将您的路由路径添加到$except
数组中
namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'payfast-ipn' ]; }
2.0版本Payfast设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$payfast = XgPaymentGateway::payfast(); $payfast->setMerchantId('10024000'); $payfast->setMerchantKey('77jcu5v4ufdod'); $payfast->setPassphrase('testpayfastsohan'); $payfast->setCurrency("ZAR"); $payfast->setEnv(true); //env must set as boolean, string will not work $payfast->setExchangeRate(74); // if INR not set as currency $response = $payfast->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$payfast = XgPaymentGateway::payfast(); $payfast->setMerchantId('10024000'); $payfast->setMerchantKey('77jcu5v4ufdod'); $payfast->setPassphrase('testpayfastsohan'); $payfast->setCurrency("ZAR"); $payfast->setEnv(true); //env must set as boolean, string will not work dd($payfast->ipn_response());
Cashfree
以下是Cashfree测试凭证
CASHFREE_TEST_MODE=true CASHFREE_APP_ID="94527832f47d6e74fa6ca5e3c72549" CASHFREE_SECRET_KEY="ec6a3222018c676e95436b2e26e89c1ec6be2830"
Cashfree ipn路由示例
Route::post('/cashfree-ipn', [\App\Http\Controllers\PaymentLogController::class,'cashfree_ipn'] )->name('payment.cashfree.ipn');
您必须排除Cashfree ipn路由从csrf token验证中,前往app/Http/Middleware
VerifyCsrfToken
中间件,在此处将您的路由路径添加到$except
数组中
namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'cashfree-ipn' ]; }
2.0版本Cashfree设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$cashfree = XgPaymentGateway::cashfree(); $cashfree->setAppId('app_id'); $cashfree->setSecretKey('secret_key'); $cashfree->setCurrency("USD"); $cashfree->setEnv(true); //true means sandbox, false means live , //env must set as boolean, string will not work $cashfree->setExchangeRate(74); // if INR not set as currency $response = $cashfree->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.cashfree.ipn'), 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$cashfree = XgPaymentGateway::cashfree(); $cashfree->setAppId('app_id'); $cashfree->setSecretKey('secret_key'); $cashfree->setEnv(true); //true means sandbox, false means live //env must set as boolean, string will not work dd($cashfree->ipn_response());
Instamojo
以下是Instamojo测试凭证
INSTAMOJO_CLIENT_ID=test_nhpJ3RvWObd3uryoIYF0gjKby5NB5xu6S9Z INSTAMOJO_CLIENT_SECRET=test_iZusG4P35maQVPTfqutbCc6UEbba3iesbCbrYM7zOtDaJUdbPz76QOnBcDgblC53YBEgsymqn2sx3NVEPbl3b5coA3uLqV1ikxKquOeXSWr8Ruy7eaKUMX1yBbm INSTAMOJO_USERNAME="" INSTAMOJO_PASSWORD="" INSTAMOJO_TEST_MODE="true"
Instamojo Pago仅支持INR货币
Instamojo ipn路由示例
Route::get('/instamojo-ipn', [\App\Http\Controllers\PaymentLogController::class,'instamojo_ipn'] )->name('payment.instamojo.ipn');
Instamojo测试凭证
mobile number 919090213229
For payments use the following card details:
Number: 4242 4242 4242 4242
Date: Any valid future date
CVV: 111
Name: abc
3D-secure password: 1221
2.0版本Instamojo设置
路由和中间件代码将与版本^1.0相同,版本^2.0将仅更改customer_charge和ipn_response方法
charge_customer方法示例
$instamojo = XgPaymentGateway::instamojo(); $instamojo->setClientId('client_id'); $instamojo->setSecretKey('secret_key'); $instamojo->setCurrency("INR"); $instamojo->setEnv(true); //true mean sandbox mode , false means live mode //env must set as boolean, string will not work $instamojo->setExchangeRate(74); // if INR not set as currency $response = $instamojo->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$instamojo = XgPaymentGateway::instamojo(); $instamojo->setClientId('client_id'); $instamojo->setSecretKey('secret_key'); $instamojo->setEnv(true); //env must set as boolean, string will not work dd($instamojo->ipn_response());
Mercadopago
以下是Mercadopago测试凭证
MERCADO_PAGO_CLIENT_ID=TEST-0a3cc78a-57bf-4556-9dbe-2afa06347769 MERCADO_PAGO_CLIENT_SECRET=TEST-4644184554273630-070813-7d817e2ca1576e75884001d0755f8a7a-786499991 MERCADO_PAGO_TEST_MODE=true
Mercado Pago仅支持BRL货币
Mercado ipn路由示例
Route::get('/mercadopago-ipn', [\App\Http\Controllers\PaymentLogController::class,'mercadopago_ipn'] )->name('payment.mercadopago.ipn');
Mercadopago测试凭证
For payments use the following card details:
Number: 5031 4332 1540 6351
Date: 11/25
CVV: 123
Name: abc
2.0版本Instamojo设置
路由和中间件代码将与版本^1.0相同,版本^2.0将只更改customer_charge和ipn_response方法
charge_customer方法示例
$marcadopago = XgPaymentGateway::marcadopago(); $marcadopago->setClientId('client_id'); $marcadopago->setClientSecret('client_secret'); $marcadopago->setCurrency("USD"); $marcadopago->setExchangeRate(82); // if BRL not set as currency, you must have to provide exchange rate for it $marcadopago->setEnv(true); ////true mean sandbox mode , false means live mode $response = $marcadopago->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.instamojo.ipn'), //get route 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$marcadopago = XgPaymentGateway::marcadopago(); $marcadopago->setClientId('client_id'); $marcadopago->setClientSecret('client_secret'); $marcadopago->setEnv(true); dd($marcadopago->ipn_response());
Squareup
以下是Squareup测试凭证
Squareup支持货币列表
Squareup ipn路由示例
Route::get('/Squareup-ipn', [\App\Http\Controllers\PaymentLogController::class,'Squareup_ipn'] )->name('payment.mercadopago.ipn');
Squareup API凭证
access_token = 'EAAAEOuLQObrVwJvCvoio3H13b8Ssqz1ighmTBKZvIENW9qxirHGHkqsGcPBC1uN' location_id = 'LE9C12TNM5HAS'
Squareup测试凭证
Mastercard 5105 1051 0510 5100
CVC: 111
Date: any future date
Discover
6011 0000 0000 0004
CVC: 111
Date: any future date
Diners Club 3000 000000 0004
CVC: 111
Date: any future date
JCB 3569 9900 1009 5841
CVC: 111
Date: any future date
Name: Test
Email: test@gmail.com
2.0版本Squareup设置
charge_customer方法示例
$squareup = XgPaymentGateway::squareup(); $squareup->setLocationId('location_id'); $squareup->setAccessToken('access_token'); $squareup->setApplicationId(''); $squareup->setCurrency("USD"); $squareup->setEnv(true); $squareup->setExchangeRate(74); // if INR not set as currency $response = $squareup->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.get.ipn'), 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
ipn_response方法示例
$squareup = XgPaymentGateway::squareup(); $squareup->setLocationId('location_id'); $squareup->setAccessToken('access_token'); $squareup->setApplicationId(''); $squareup->setCurrency("USD"); $squareup->setEnv(true); dd($squareup->ipn_response());
PayTabs
以下是PayTabs测试凭证
PayTabs支持货币列表
PayTabs ipn路由示例
Route::post('/paytabs-ipn', [\App\Http\Controllers\PaymentLogController::class,'paytabs_ipn'] )->name('payment.mercadopago.ipn');
PayTabs API凭证
[
'currency' => 'USD', //['AED','EGP','SAR','OMR','JOD','USD']
'profile_id' => '96698',
'region' => 'GLOBAL', // ['ARE','EGY','SAU','OMN','JOR','GLOBAL']
'server_key' => 'SKJNDNRHM2-JDKTZDDH2N-H9HLMJNJ2L'
]
PayTabs测试凭证
Number Scheme CVV 3D enrolled
4000000000000002 Visa 123 Yes
4111111111111111 Visa 123 No
4012001036983332 Visa 530 Yes
5498383801606532 MasterCard 977 Yes
5200000000000007 MasterCard 977 Yes
5200000000000114 MasterCard 977 No
2.0版本PayTabs设置
charge_customer方法示例
$paytabs = XgPaymentGateway::paytabs(); $paytabs->setProfileId('96698'); $paytabs->setRegion('GLOBAL'); $paytabs->setServerKey('SKJNDNRHM2-JDKTZDDH2N-H9HLMJNJ2L'); $paytabs->setCurrency("USD"); $paytabs->setEnv(true); $paytabs->setExchangeRate(74); // if ['AED','EGP','SAR','OMR','JOD','USD'] not set as currency $response = $paytabs->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.post.ipn'), 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
PayTabs ipn_response方法示例
$paytabs = XgPaymentGateway::paytabs(); $paytabs->setProfileId('96698'); $paytabs->setRegion('GLOBAL'); $paytabs->setServerKey('SKJNDNRHM2-JDKTZDDH2N-H9HLMJNJ2L'); $paytabs->setCurrency("USD"); dd($paytabs->ipn_response());
2.0版本BillPlz设置
Billplz支持货币列表 ['MYR']
Billplz ipn路由示例
Route::post('/billplz-ipn', [\App\Http\Controllers\PaymentLogController::class,'billplz_ipn'] )->name('payment.billplz.ipn');
charge_customer方法示例
$billplz = XgPaymentGateway::billplz(); $billplz->setKey('b2ead199-e6f3-4420-ae5c-c94f1b1e8ed6'); $billplz->setVersion('v4'); $billplz->setXsignature('S-HDXHxRJB-J7rNtoktZkKJg'); $billplz->setCollectionName('kjj5ya006'); $billplz->setCurrency("MYR"); $billplz->setEnv(true); $billplz->setExchangeRate(50); // if ['MYR'] not set as currency $response = $billplz->charge_customer([ 'amount' => 10, 'title' => 'this is test title', 'description' => 'this is test description', 'ipn_url' => route('payment.post.ipn'), 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'dvrobin4@gmail.com', 'name' => 'sharifur rhamna', 'payment_type' => 'order', ]); return $response;
Billplz ipn_response方法示例
$billplz = XgPaymentGateway::billplz(); $billplz->setKey('b2ead199-e6f3-4420-ae5c-c94f1b1e8ed6'); $billplz->setVersion('v4'); $billplz->setXsignature('S-HDXHxRJB-J7rNtoktZkKJg'); $billplz->setCollectionName('kjj5ya006'); $billplz->setCurrency("MYR"); $billplz->setEnv(true); dd($billplz->ipn_response());
2.0版本Zitopay设置
Zitopay支持货币列表 [ "USD", "EUR", "GBP", "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYN", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "FJD", "GEL", "GHS", "GMD", "GNF", "GTQ", "GYD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SCR", "SDG", "SEK", "SGD", "SLL", "SOS", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XCD", "XOF", "YER", "ZAR", "ZMW", "ZWD", "XAF", ]
Zitopay ipn路由示例
Route::post('/zitopay-ipn', [\App\Http\Controllers\PaymentLogController::class,'zitopay_ipn'] )->name('payment.zitopay.ipn'); //need to exclude from csrf token varification
您必须排除Zitopay ipn路由从csrf token验证中,前往app/Http/Middleware
VerifyCsrfToken
中间件,在此处将您的路由路径添加到$except
数组中
namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'zitopay-ipn' ]; }
charge_customer方法示例
$zitopay = XgPaymentGateway::zitopay(); $zitopay->setUsername('dvrobin4'); $zitopay->setCurrency("USD"); $zitopay->setEnv(true); $zitopay->setExchangeRate(50); // if INR not set as currency $args = [ 'amount' => 250, 'title' => 'this is test title', 'description' => 'description', 'ipn_url' => route('payment.post.ipn'), 'order_id' => 56, 'track' => 'asdfasdfsdf', 'cancel_url' => route('payment.failed'), 'success_url' => route('payment.success'), 'email' => 'email@mgil.com', 'name' => 'sharifur', 'payment_type' => 'order', ]; $response = $zitopay->charge_customer($args); return $response;
Zitopay ipn_response方法示例
$zitopay = XgPaymentGateway::zitopay(); $zitopay->setUsername('dvrobin4'); $zitopay->setCurrency("USD"); $zitopay->setEnv(true); $zitopay->setExchangeRate(50); // if INR not set as currency dd($zitopay->ipn_response());
本包的货币转换
您必须添加此货币值以确保所有支付网关正常运行,请确保您已从管理员面板更新此汇率,此操作仅适用于版本 ^1.0
IDR_EXCHANGE_RATE="14365.30" INR_EXCHANGE_RATE="74.85" NGN_EXCHANGE_RATE="409.91" ZAR_EXCHANGE_RATE="15.86" BRL_EXCHANGE_RATE="5.70" SITE_GLOBAL_CURRENCY=USD
使用此包
有关使用此包的信息
贡献
有关为此包贡献的信息。包所有者 @Sharifur 修复错误和少量贡献者