it-swarm.com.de

PayPal in ASP.NET Core

Wie kann ich den Paypal API in einer ASP.NET Core-App integrieren? Ich habe verschiedene Bibliotheken ausprobiert, aber keine davon ist mit ASP.NET Core... kompatibel. Wie mache ich das?

14
Serj Sagan

Falls jemand diese Frage findet, poste ich ein Update.

Derzeit gibt es keine offizielle Veröffentlichung eines .net-Kern-SDK für Paypal, aber auf github hat sich seit der Frage dieser Frage viel getan.

Die Entwickler haben derzeit eine offizielle Beta-Version der SDK veröffentlicht, die hier als Fork oder Download erhältlich ist: https://github.com/Paypal/PayPal-NET-SDK/tree/2.0-beta

Sie haben sogar einen Migrationsleitfaden, wenn Sie zuvor die erste Version ihrer SDK verwendet haben.

5

Ich hatte das gleiche Problem mit dir. Nach Wochen gesucht und festgestellt, dass es keine Möglichkeit gibt, die SDK-API mit .Net Core zum Laufen zu bringen

Sie haben ein paar Optionen, erstellen Sie zunächst Ihr Projekt mit 4.6 oder etwas Zweitens verwenden Sie den auf der URL-API basierenden Aufruf Ihrer App, wenn Sie Einzelartikelverkäufe tätigen möchten. (Was wollte ich tun)

Wie ich es gemacht habe, war es ein Javascript an den Button klicken, der folgendes tat:

function PayPalPaymentEvent(eventid) {

    var URL = 'https://www.Paypal.com/cgi-bin/webscr?';
    var cmd = '_xclick';
    var business = Your Business Email;
    var currency_code = 'AUD';
    var amount = 100;
    var item_name = Name Of Your Item;
    var item_number = Some Identifier;
    var returnurl = 'http://somepage?info=success';
    var cancel_return = 'http://somepage?info=failed';
    var notify_url = 'http://WebFacingSite/API/PayPalReg';
    var tax = (amount * 0.10);

    var fullURL = URL + 'cmd=' + cmd + '&business=' + business + '&currency_code=' + currency_code + '&amount=' + amount + '&tax=' + tax + '&item_name=' + item_name + '&item_number=' + item_number + '&return=' + returnurl + '&cancel_return=' + cancel_return + '&notify_url=' + notify_url;

    ///// this ajax bit I use to record the transaction has started
    $.ajax({
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        url: '/API/PaymentStarted?eventid=' + eventid + '&UserID=' + UserID + '&paymentID' + paymentID,
        error: function () {
            SetMessage('error', 'Something has gone horribly, horribly wrong')
        },
        success: function (data) {

            window.location.href = fullURL;

        },
        type: 'POST'
    });


  }

Sobald Sie dies getan haben, müssen Sie eine IPN-URL in Ihrem Paypal-Konto einrichten. Ihr Konto muss ein Geschäftskonto sein, gehen Sie zu Ihrem Profil, klicken Sie auf Verkäufer-Tools, und Sie sehen die IPN-Einstellungen Ihre URL für das Web-Targeting ohne Port (Localhost funktioniert nur, wenn Sie etwas wie ngrok verwenden)

Die Strukturierung Ihres Item-Codes wird hier wichtig. Das IPN sendet eine Liste der Variablen an Ihre offengelegte API und dann können Sie einige Übereinstimmungen und ähnliches machen ... Das passt nicht zu Ihnen, aber so fange ich diese Nachricht ein und gehe damit um. Mein Szenario ist, dass ich einen Benutzer habe, der sich für eine Veranstaltung anmeldet:

[HttpPost]
    [Route("API/PayPalReg")]
    public JsonResult ReceiveInput(string txn_id, string payment_date,
                                string payer_email, string payment_status, 
                                string first_name, string last_name, 
                                string item_number, string item_name, 
                                string payer_id, string verify_sign)
    {

        var paypaltypes = item_name.Split('-');


        var result = item_number.Split('-');
        var userid = int.Parse(result[1]);
        var TransPaymentString = result[1].ToString() + result[0].ToString();
        var TransPayment = int.Parse(TransPaymentString);
        var user = _context.Person.Include(p => p.Payments).Where(p => p.UserID == userid).Single();
        var payment = user.Payments.Where(p => p.TransPaymentID == TransPayment).Single();

        if (paypaltypes[0] == "Event")
        {
            var eventid = int.Parse(result[0]);

            payment.PaymentReceipt = txn_id;
            payment.PaymentReceived = true;
            payment.PaymentReceivedDate = DateTime.Now;
            payment.PaymentNotes = payer_email + " " + first_name + " " + last_name + " " + item_number + " " + payer_id + " " + verify_sign + " " + item_name;

            _context.Payments.Update(payment);
            _context.SaveChanges();

            var userevent = _context.Person.Include(p => p.EventRegistry).Where(p => p.UserID == userid).Single();
            var eventreg = userevent.EventRegistry.Where(er => er.EventID == eventid).Single();
            eventreg.EventPaid = true;

            _context.EventRegistry.Update(eventreg);
            _context.SaveChanges();
            Response.StatusCode = (int)HttpStatusCode.OK;
            return Json("Json Result");

        }

Hoffe das hilft ein bisschen

Caz

6
Caz1224

Ich stehe vor demselben Problem. Ich kann mich für die REST - API-Implementierung ohne SDK entscheiden: https://developer.Paypal.com/docs/api/

Oder ich habe gerade dieses Repository gefunden, es könnte interessant sein :)

https://github.com/geoperez/PayPalCore

Es ist ein Port des aktuellen .Net SDK zu .NETCore. Ich habe den Code noch nicht geprüft, aber wenn er funktioniert, würde ich viel Zeit sparen!

Sie können auch eine alte API-Option wählen:

http://www.codeproject.com/Articles/42894/Einführung-nach-Paypal-für-C-ASP-NET-Entwickler

Aber da es alt ist, würde ich es nicht empfehlen, da Paypal es vielleicht irgendwann einstellen wird .. Allerdings können Sie dort weitere Informationen finden:

https://developer.Paypal.com/webapps/developer/docs/classic/Paypal-payments-standard/integration-guide/formbasics/

3
Jean

Vielleicht ist es zu spät, wenn ich dies veröffentliche und Sie aus diesem Problem heraus sind, aber es ist für die Leichtigkeit jeder Person, die dies in Zukunft benötigen könnte.

Da wir wussten, dass Paypal zuvor kein Nuget-Paket für die Unterstützung von Paypal-Zahlungen in .Net Core bereitgestellt hatte. Aber um diesem Schmerz ein Ende zu setzen, hat es endlich eine Lösung gefunden - durch den Kauf von BrainTreepayments.com , um bessere Entwicklerunterstützung zu bieten.

Hier ist ein Link als Referenz.

3
Invoker

Nach der Veröffentlichung der neuen Version von SDK (2.0), die sich für einen Moment im Status des Veröffentlichungskandidaten befindet, unterstützt das Paypal SDK ASP.NET Core. 

1
Alexej Sommer

Es gibt ein Nuget-Paket für Paypal unter ASP.NET Core unter diesem Link:

https://www.nuget.org/packages/Paypal.SDK.NETCore/

Das Paket bietet dieselbe API wie für klassisches .NET.

Bitte beachten Sie, dass dies kein offizielles Nuget-Paket von Paypal ist.

0
sboisse