PayPal 통합 Laravel
5460 단어 tutoriallaravelprogrammingwebdev
단계 # 01 :
PayPal 계정 만들기:
https://developer.paypal.com/
계정을 만들면 비디오에 표시된 것처럼 두 가지 옵션이 있습니다. 하나는 샌드박스 계정 옵션이고 다른 하나는 라이브 계정 옵션입니다. 테스트 또는 개발 작업을 하려면 샌드박스 계정을 만들어야 하며 라이브 서버에서 작업하는 경우 라이브 옵션을 사용합니다.
이제 새 앱을 만든 후 클라이언트 ID와 비밀 ID를 볼 수 있습니다.
02단계:
이제 위의 클라이언트 ID와 비밀 ID를 .env 파일에 추가하십시오.
03단계:
이제 모델과 마이그레이션을 추가하고 데이터베이스에 연결해 보겠습니다.
php artisan make:model Payment -m
Schema::create('payments', function (Blueprint $table) {
$table->id();
$table->string('payment_id');
$table->string('payer_id');
$table->string('payer_email');
$table->float('amount', 10, 2);
$table->string('currency');
$table->string('payment_status');
$table->timestamps();
});
php artisan migrate
04단계:
이제 PayPal API를 애플리케이션에 통합하는 데 사용할 패키지를 설치해 보겠습니다.
composer require league/omnipay omnipay/paypal
단계 # 05:
이제 컨트롤러를 만들어 봅시다.
php artisan make:controller PaymentController
이것은 우리의 컨트롤러 코드가 될 것입니다:
<?php
namespace App\Http\Controllers;
use App\Models\Payment;
use Illuminate\Http\Request;
use Omnipay\Omnipay;
class PaymentController extends Controller
{
private $gateway;
public function __construct() {
$this->gateway = Omnipay::create('PayPal_Rest');
$this->gateway->setClientId(env('PAYPAL_CLIENT_ID'));
$this->gateway->setSecret(env('PAYPAL_CLIENT_SECRET'));
$this->gateway->setTestMode(true);
}
public function pay(Request $request)
{
try {
$response = $this->gateway->purchase(array(
'amount' => $request->amount,
'currency' => env('PAYPAL_CURRENCY'),
'returnUrl' => url('success'),
'cancelUrl' => url('error')
))->send();
if ($response->isRedirect()) {
$response->redirect();
}
else{
return $response->getMessage();
}
} catch (\Throwable $th) {
return $th->getMessage();
}
}
public function success(Request $request)
{
if ($request->input('paymentId') && $request->input('PayerID')) {
$transaction = $this->gateway->completePurchase(array(
'payer_id' => $request->input('PayerID'),
'transactionReference' => $request->input('paymentId')
));
$response = $transaction->send();
if ($response->isSuccessful()) {
$arr = $response->getData();
$payment = new Payment();
$payment->payment_id = $arr['id'];
$payment->payer_id = $arr['payer']['payer_info']['payer_id'];
$payment->payer_email = $arr['payer']['payer_info']['email'];
$payment->amount = $arr['transactions'][0]['amount']['total'];
$payment->currency = env('PAYPAL_CURRENCY');
$payment->payment_status = $arr['state'];
$payment->save();
return "Payment is Successfull. Your Transaction Id is : " . $arr['id'];
}
else{
return $response->getMessage();
}
}
else{
return 'Payment declined!!';
}
}
public function error()
{
return 'User declined the payment!';
}
}
06단계:
이제 경로를 만들어 봅시다.
Route::get('/', [HomeController::class, 'index']);
Route::post('pay', [PaymentController::class, 'pay'])->name('payment');
Route::get('success', [PaymentController::class, 'success']);
Route::get('error', [PaymentController::class, 'error']);
갈 수 있습니다. 이제 결제 양식에서 경로를 쉽게 사용할 수 있습니다.
도움이 되길 바랍니다!
문제가 발생하면 아래에 의견을 말하십시오.
감사!
Reference
이 문제에 관하여(PayPal 통합 Laravel), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/suleman/paypal-integration-laravel-2ahl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)