parsisolution / gateway

Iranian Payment Gateways
MIT License
19 stars 7 forks source link

مشکل درگاه پرداخت آسان پرداخت #50

Closed mmiladkdr closed 1 year ago

mmiladkdr commented 4 years ago

با توجه به تغییرات در ای پی جی اسان پرداخت با متد های قبلی امکان پرداخت وجود ندارد. امان تغییرات با توحه به داکیومنت REST آسان پرداخت امکان پذیر است؟

Younesi commented 4 years ago

مشکل چیه الان ؟ اینجا از SOAP استفاده شده آیا میخواهید با REST جایگزین بشه ؟

hamed-ehtesham commented 4 years ago

بله

mmiladkdr commented 4 years ago

آیا امکان این رو دارید با REST پیاده سازی کنید؟ من مجبور شدم یه کلاس جدا بنویسم براش دیگه از پکیج استفاده نکنم

hamed-ehtesham commented 4 years ago

خب شما اگه کدش رو نوشتید بفرستید به package اضافه میکنیم

@miladkardgar

mmiladkdr commented 4 years ago

یه کلاس ساده واسه گرفتن توکن و ارسال و ولیدیت پرداخت هست. اگه با اون میتونید بنویسید که بزارم اینجا

hamed-ehtesham commented 4 years ago

اره بزارید

mmiladkdr commented 4 years ago
    public function __construct($localInvoiceId, $amountInRials, $additionalData = '')
    {
        $this->baseUrl = config('sabin.asanPardakht.baseUrl');
        $this->username = config('sabin.asanPardakht.username');
        $this->password = config('sabin.asanPardakht.password');
        $this->data = [
            'merchantConfigurationId' => config('sabin.asanPardakht.merchantConfigurationId'),
            'serviceTypeId' => 1,
            'localInvoiceId' => $localInvoiceId,
            'amountInRials' => $amountInRials,
            'localDate' => date("Ymd hms", time()),
            'additionalData' => $additionalData,
            'callbackURL' => config('sabin.asanPardakht.callbackURL'),
            'paymentId' => 0,
            'settlementPortions' => [
                'settlementPortions' => config('sabin.asanPardakht.settlementPortions'),
                'amountInRials' => $amountInRials
            ],
        ];
    }

    public function getToken()
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => $this->baseUrl,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => json_encode($this->data, JSON_FORCE_OBJECT),
            CURLOPT_HTTPHEADER => array(
                "Accept: application/json",
                "Content-Type: application/json-patch+json",
                "usr: $this->username",
                "pwd: $this->password"
            ),
        ));

        $response = curl_exec($curl);

        curl_close($curl);
        return $response;
    }

    public function SendToGatewaye()
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => $this->baseUrl,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => json_encode($this->data, JSON_FORCE_OBJECT),
            CURLOPT_HTTPHEADER => array('RefId' => $this->getToken()),
        ));
        $response = curl_exec($curl);

        curl_close($curl);
        return $response;
    }

    public function TranResult($merchantConfigurationId, $LocalInvoiceId)
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://rest.asanpardakht.net/v1/TranResult?" . $merchantConfigurationId . "&" . $LocalInvoiceId,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "GET",
            CURLOPT_HTTPHEADER => array('RefId' => $this->getToken()),
        ));
        $response = curl_exec($curl);

        curl_close($curl);
        return $response;
    }

    public function Verify($merchantConfigurationId, $payGateTranId)
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://rest.asanpardakht.net/v1/Verify",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => json_encode(['merchantConfigurationId' => $merchantConfigurationId, 'payGateTranId' => $payGateTranId], JSON_FORCE_OBJECT),
            CURLOPT_HTTPHEADER => array(
                "Accept: application/json",
                "Content-Type: application/json-patch+json",
                "usr: $this->username",
                "pwd: $this->password"
            ),
        ));
        $response = curl_exec($curl);

        curl_close($curl);
        return $response;
    }

    public function Settlement($merchantConfigurationId, $payGateTranId)
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://rest.asanpardakht.net/v1/Settlement",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => json_encode(['merchantConfigurationId' => $merchantConfigurationId, 'payGateTranId' => $payGateTranId], JSON_FORCE_OBJECT),
            CURLOPT_HTTPHEADER => array(
                "Accept: application/json",
                "Content-Type: application/json-patch+json",
                "usr: $this->username",
                "pwd: $this->password"
            ),
        ));
        $response = curl_exec($curl);

        curl_close($curl);
        return $response;
    }