| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use App\Classes\Polarity;
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Model;
use IPay88\Requests\RequeryBuilder as IPay88RequeryBuilder;
use IPay88\Requests\RequestBuilder as IPay88RequestBuilder;
use Pylon\Traits\Models\HasSearchScope;
class PaymentRecord extends Model
{
use HasSearchScope;
protected $fillable = [
'unique_id',
'user_id',
'type_id',
'amount',
'status_id',
'remark',
'request_meta',
'response_meta'
];
protected $casts = [
"request_meta" => AsArrayObject::class,
"response_meta" => AsArrayObject::class,
];
const TYPE_CREDIT_TOP_UP = 1;
public const TYPES = [
self::TYPE_CREDIT_TOP_UP => "Credit Top Up",
];
protected $appends = ['type','status','err_desc'];
// accessor
public function getTypeAttribute()
{
return self::TYPES[$this->attributes['type_id']];
}
public function getStatusAttribute()
{
switch ($this->attributes['status_id']) {
case Polarity::POSITIVE:
return "Payment Success";
break;
case Polarity::NEGATIVE:
return "Payment Failed";
break;
case Polarity::NEUTRAL:
return "-";
break;
default:
return "Unknown";
break;
}
}
public function getErrDescAttribute()
{
return $this->response_meta['errDesc'] ?? '~Record Not Available~';
}
// relationship
public function user()
{
return $this->belongsTo('App\Models\User', 'user_id')->withTrashed();
}
// others
public function toIPay88Request() : IPay88RequestBuilder
{
$builder = new IPay88RequestBuilder();
$builder->setRefNo($this->unique_id);
// $builder->setAmount(1);
$builder->setAmount($this->amount);
$builder->setCurrency($this->request_meta['currency']);
$builder->setProdDesc($this->request_meta['prodDesc']);
$builder->setUserName($this->request_meta['userName']);
$builder->setUserEmail($this->request_meta['userEmail']);
$builder->setUserContact($this->request_meta['userContact']);
$builder->setResponseURL("https://app.zlock.com.my/api/payment/p88_callback");
$builder->setBackendURL("https://app.zlock.com.my/api/payment/p88_be_callback");
return $builder;
}
public function toIPay88Requery() : IPay88RequeryBuilder
{
$builder = new IPay88RequeryBuilder();
$builder->setRefNo($this->unique_id);
// $builder->setAmount(1);
$builder->setAmount($this->amount);
return $builder;
}
}