Skip to content

Commit

Permalink
update readme and some bugfix
Browse files Browse the repository at this point in the history
  • Loading branch information
iMohammadd committed Jun 1, 2020
1 parent e1e60aa commit 80f4016
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 3 deletions.
103 changes: 103 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,33 @@
> روت دوم اختیاریه، در صورتی که نخواید کاربر رو برای پرداخت به درگاه جیب بفرستید می‌تونید کیف پول ایجاد شده توسط جیب رو توی سایت خودتون نشون بدین و کاربر رو به درگاه هدایت نکنید.
</div>
### رفع مشکل توکن روت‌ها
<div dir="rtl">
پاسخ‌های ارسالی از طرف سرور جیب به صورت post هستن و این با csrf_token لاراول به مشکل می‌خوره.<br />
برای حل این مشکل باید روت‌های <code>callback</code> و <code>webhook</code> رو در مسیر <code>app\http\Middleware\VerifyCrsfToken.php</code> استثنا کرد:
</div>

```php
<?php

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 = [
'/jeeb/callback',
'/jeeb/webhook'
];
}
```

### ایجاد تراکنش
<div dir="rtl">
شما می‌تونید با استفاده از فساد <code>Aries\Jeeb\Facades\Jeeb</code> و متود <code>pay</code> یک ترانش جدید ایجاد کنید:
Expand All @@ -52,3 +79,79 @@ Route::get('/jeeb/pay', function() {
->redirect(); # انتقال کاربر به درگاه جیب
});
```

### بازگشت از درگاه (callback)
<div dir="rtl">
با استفاده از فساد <code>Aries\Jeeb\Facades\Jeeb</code> و متود <code>callback</code> پاسخ سرور جیب رو هندل کنید.<br />
همچنین با استفاده از فساد <code>Aries\Jeeb\Facades\State</code> و متود <code>message</code> مقدار stateId برگشت داده شده رو برای کاربر ترجمه کنید.
</div>

```php
<?php
use Aries\Jeeb\Facades\Jeeb;
use Aries\Jeeb\Facades\State;
use Illuminate\Support\Facades\Route;

Route::get('/jeeb/callback', function() {
$response = Jeeb::callback()->process();
$message = State::message($response->stateId);

return view('path.to.your.callback.view', compact('response', 'message'));
});
```

### وب‌هوک
<div dir="rtl">
شما می‌تونید با استفاده از فساد <code>Aries\Jeeb\Facades\Jeeb</code> و متود <code>webhook</code> پاسخ‌های ارسال شده از طرف سرور جیب رو هندل کنید.<br />
لازم به ذکره که به دلیل زمانبر بودن تایید تراکنش در بلاکچین باید منتظر ارسال پاسخ تایید از طرف سرور جیب به صورت وب‌هوک باشید و در صورت تایید شدن تراکنش با ststeId برابر ۴ می‌تونید محصول رو به کاربر پرداخت کنید.<br />
مبالغ پرداختی بیشتر یا کمتر از مقدار مشخص شده توسط شما بصورت خودکار به کاربر برگشت داده می‌شه.
</div>

```php
<?php
use Aries\Jeeb\Facades\Jeeb;
use Illuminate\Support\Facades\Route;

Route::get('/jeeb/webhook', function() {
return Jeeb::webhook();
});
```

## مشاهده‌ی لیست تراکنش‌ها
<div dir="rtl">
برای مشاهده‌ی لیست تراکنش‌ها به تفکیک وضعیت پرداخت می‌تونید از فساد <code>Aries\Jeeb\Facades\Jeeb</code> و متود <code>transaction</code> استفاده کنید:
</div>

```php
use Aries\Jeeb\Facades\Jeeb;

public function transactions(Request $request) {
switch($request->input('type')) {
case 'confirmed':
# تراکنش‌هایی که در بلاکچین تایید شدند.
return Jeeb::transaction()->confirmed()->get();
case 'unConfirmed':
# تراکنش‌هایی که در بلاکچین تایید شدند ولی شما هنوز آن‌ها را تایید نکرده اید.
return Jeeb::transaction()->unConfirmed()->get();
case 'pending':
# تراکنش‌هایی که هنوز در بلاکچین تایید نشده اند.
return Jeeb::transaction()->pending()->get();
case 'rejected':
# تراکنش‌هایی که توسط کاربر لغو شده یا در زمان مقرر پرداخت نشده‌اند
return Jeeb::transaction()->rejected()->get();
case 'less':
# تراکنش‌هایی که مقدار پرداخت شده آن توسط کاربر کمتر از مقدار مشخص شده توسط شماست
return Jeeb::transaction()->lessPaid()->get();
case 'over':
# تراکنش‌هایی که مقدار پرداخت شده آن توسط کاربر بیشتر از مقدار مشخص شده توسط شماست
return Jeeb::transaction()->overPaid()->get();
case 'all':
# لیست تمام تراکنش‌ها
return Jeeb::transaction()->get()->load('wallets');
}
}
```

<div dir="rtl">
مقدار بازگشتی توسط این متود یک مدل استاندارد لاراولی بوده و می‌تونید مثل یک مدل استاندارد باهاش برخورد کنید، مثلا می‌تونید با متود <code>paginate</code> اون رو صفحه بندی کنید.
</div>
3 changes: 1 addition & 2 deletions src/utils/methods/issue.php
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,6 @@ public function init() {
$params['orderNo'] = $this->orderNo;
$params['value'] = $this->value;
$params['coins'] = $this->coins;
/*$this->callbackUrl != null ??*/
if($this->callbackUrl != null) {
$params['callbackUrl'] = $this->callbackUrl;
}
Expand All @@ -128,10 +127,10 @@ public function init() {
$params['allowTestNet'] = $this->allowTestNet;
$params['language'] = $this->language;

// return $params;

$result = Http::post($url, $params);


if($result['status'] != 200) {
throw new Exception($result['errorMessage']);
}
Expand Down
2 changes: 1 addition & 1 deletion src/utils/pay.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public function process() {
->callbackUrl($this->callback)
->language($this->language)
->init();

$transaction = JeebTransaction::create([
'orderNo' => $this->order,
'stateId' => 2,
Expand Down

0 comments on commit 80f4016

Please sign in to comment.