Sina-Soltani / Parbad

A free, open-source, integrated and extensible library which connects your web applications to online payment gateways. Gateways can be added or developed by you.
GNU Lesser General Public License v3.0
364 stars 81 forks source link

CORS policy در وصل شدن به درگاه زرین پال #301

Closed alisattarzadeh7 closed 2 years ago

alisattarzadeh7 commented 2 years ago

سلام وقتتون بخیر, ما در تلاشیم به درگاه زرین پال وصل بشیم که سمت فرانت رو به صورت فرم دیتا ارسال میکنم که اینم کدمه const redirectToBank = (e) => { e.preventDefault();

    const formData = new FormData();
    formData.append('price', 100000);
    formData.append('gateway', 'ZarinPal');
    formData.append('bankAccountId', 2);
        axios.post('/InternalPayment/PayByFormData', formData.toString(), {
            headers: formData.getHeaders(),
        })

        بعد بک اند درخواست منو دریافت و ریدایرکت میکنه, که اینم کدیه که سمت بک اند درخواست منو هندل میکنه :‌
        [HttpPost("[action]")]
    public virtual async Task<IActionResult> Pay(SomeDto dto,
        CancellationToken cancellationToken)

{ var request = await _onlinePayment.RequestAsync( invoice => (SomeParams...)); if (request.IsSucceed) return (request.GatewayTransporter.TransportToGateway()); } که کدهای لاجیک و کنترل و ... رو حرف کردیم. و ما خروجی TransportToGateway رو توی پستمن می بینیم ولی جای دیگه نه بعد از هدایت شدن به صفحه زرین پال بهم اررور cors میده که اینم اررورشه: Access to XMLHttpRequest at 'https://sandbox.zarinpal.com/pg/StartPay/####' (redirected from 'https://mydomain/api/v1/InternalPayment/Pay) from origin 'http://localhost:8000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource

ما قبلا به درگاه pay.ir با همین روال وصل میشدیم و مشکلی نبود ممنون میشم راهنماییم کنید

Package Name: Parbad.Gateway.ZarinPal Version: 1.2.0

ASP.NET CORE

Sina-Soltani commented 2 years ago

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

alisattarzadeh7 commented 2 years ago

سلام مجدد هدایت سمت بک اند انجام میشه که خروجی رو به فرانت میفرسته به این صورت که درخواستی که از فرانت میزنم رو ریایرکت میکنه به درگاه زرین پال و من درواقع کد html زرین پال رو دریافت میکنم که البته این کار روی pay.ir جواب میداد ولی روی زرین پال نه

Sina-Soltani commented 2 years ago

من متوجه منظور شما نمیشم. اگر هدایت به درگاه زرین پال سمت سرور انجام میشه، پس دیگه چیزی وجود نداره که بخواد دوباره به سمت کلاینت ارسال بشه !!! چون وقتی سمت سرور ریدایرکت انجام میشه، کاربر مستقیما به درگاه زرین پال هدایت میشه. اما شما میگید خروجی رو به فرانت میفرسته.

alisattarzadeh7 commented 2 years ago

پروژه ما به صورت rest api هست و درخواست ها همه به صورت ajax فرستاده و دریافت میشه و بک اند وقتی درخواست منو دریافت میکنه منو به یه درخواست دیگه هدایت میکنه

Sina-Soltani commented 2 years ago

لطفا در قسمت نمونه پروژه‌ها،‌ پروژه Angular رو نگاهی بندازید.

Sina-Soltani commented 2 years ago

https://github.com/Sina-Soltani/Parbad/issues/298