web-dev-qa-db-ja.com

ASP.NET CoreのPayPal

Paypal APIアプリでASP.NET Coreと統合するにはどうすればよいですか?さまざまなライブラリを試しましたが、ASP.NET Coreと互換性のあるライブラリはありません...どうすればよいですか?

18
Serj Sagan

誰かがこの質問を見つけた場合は、更新を投稿します。

現在のところ、Paypal向けの.netコアSDKの公式リリースはありませんが、githubを見ると、この質問が尋ねられてから多くの進歩がありました。

開発者は現在、forkまたはここからダウンロードできるSDKの公式ベータ版をリリースしています: https://github.com/Paypal/PayPal-NET-SDK/tree/2.0-beta

以前にSDKの最初のバージョンを使用していた場合は、移行ガイドも用意されています。

7

私はあなたと同じ問題を抱えていました。数週間探して、SDK APIを.Net Coreで動作させる方法がないことを発見しました

いくつかのオプションがあり、最初に4.6などを使用してプロジェクトを再作成します。次に、単一アイテムの販売を行う場合は、アプリからURL APIベースの呼び出しを使用します。 (私がやりたかったことです)

私がそれをした方法は、ボタンクリックにjavascriptを添付して、次のことをしました:

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'
    });


  }

これを行ったら、PaypalアカウントにIPN URLを設定する必要があります。アカウントはビジネスアカウントである必要があり、プロフィールにアクセスし、売り手ツールをクリックして、IPN設定が表示されます。そこにポートなしでウェブに面したURLを追加します(ngrokのようなものを使用しない限りLocalhostは動作しません)

ここでItem_codeの権利を構造化することが重要になります。 IPNは変数のリストを公開されたAPIに送り返します。その後、マッチングなどを行うことができます。これはあなたには合わないでしょうが、これは私がそのメッセージをキャッチして対処する方法です。私のシナリオは、イベントにサインアップするユーザーがいることです。

[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");

        }

これが少し役立つことを願って

カズ

6
Caz1224

私は同じ問題に直面しています。 REST SDKなしのAPI実装: https://developer.Paypal.com/docs/api/

または私はちょうどそのリポジトリを見つけました、それは面白いかもしれません:)

https://github.com/geoperez/PayPalCore

現在の.Net SDKの.NETCoreへの移植版です。私はまだコードをチェックしていませんが、それが機能する場合、それは多くの時間を節約するでしょう!

古いAPIオプションを使用することもできます。

http://www.codeproject.com/Articles/42894/Introduction-to-Paypal-for-C-ASP-NET-developers

しかし、古くなっているため、Paypalがいつか中止する可能性があるため、お勧めしません。ただし、追加情報を見つけることができます:

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

3
Jean

だから多分、これを投稿しているときに手遅れであり、あなたがその問題から抜け出しましたが、これは将来これを必要とするかもしれないすべての人の容易さのためです。

したがって、Paypalは、.Net CoreでPaypalの支払いをサポートするためのナゲットパッケージを以前は提供していなかったことを知っていました。しかし、この痛みに終止符を打つと、より良い開発サポートを提供するために BrainTreepayments.com を購入することで、最終的に解決策が出てきました。

参照用に link を示します。

3
Invoker

SDKの新しいバージョン (2.0)をリリースした後、しばらくの間リリース候補の状態になり、Paypal SDKはASP.NET Coreをサポートします。

1
Alexej Sommer

ASP.NET CoreのPaypalで利用可能なNugetパッケージがこのリンクにあります。

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

このパッケージは、従来の.NETと同じAPIを公開します。

ただし、これはPaypalの公式Nugetパッケージではありません。

0
sboisse