Как мне интегрироваться с PayPal API
в приложении ASP.NET Core
? Я пробовал различные библиотеки, но ни один из них не совместим с ASP.NET Core
... как это сделать?
PayPal в ядре ASP.NET
Ответ 1
Если кто-нибудь найдет этот вопрос, я опубликую обновление.
В настоящее время официальной версии sdk.net для ssd для Paypal нет, но, глядя на github, прогресс был достигнут с тех пор, как был задан этот вопрос.
Разработчик в настоящее время выпустил официальную бета-версию sdk, которая доступна для fork или скачать здесь: https://github.com/paypal/PayPal-NET-SDK/tree/2.0-beta
У них даже есть руководство по миграции, если вы ранее использовали первую версию своего sdk.
Ответ 2
Я столкнулся с той же проблемой. Я могу пойти на реализацию REST API без SDK: 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 может прекратить его когда-нибудь. Однако вы можете найти дополнительную информацию:
Ответ 3
У меня была такая же проблема с тобой. Потребовались недели и обнаружили, что нет никакого способа получить API SDK, работающий с .Net Core
У вас есть несколько вариантов, сначала заново создайте проект, используя 4.6 или что-то еще. Во-вторых, используя URL-адрес, основанный на API-интерфейсе 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 + '¤cy_code=' + currency_code + '&amount=' + amount + '&tax=' + tax + '&item_name=' + item_name + '&item_number=' + item_number + '&return=' + returnurl + '&cancel_return=' + cancel_return + '¬ify_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'
});
}
Как только вы это сделаете, вам нужно будет настроить URL-адрес IPN в своей учетной записи PayPal Ваша учетная запись должна быть учетной записью предприятия, перейти в ваш профиль, щелкнуть инструменты продавца, и вы увидите настройки IPN. Там добавьте URL-адрес вашей веб-страницы без порта (Localhost не будет работать, если вы не используете что-то вроде ngrok)
Структурирование вашего права 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");
}
Надеюсь, что это поможет немного
Caz
Ответ 4
Так что, может быть, слишком поздно, когда я публикую это, и вы ушли от этой проблемы, но это для удобства любого человека, который может понадобиться в будущем.
Так как мы знали, что PayPal ранее не предоставлял пакет nuget для поддержки платежей PayPal в .Net Core. Но, положив конец этой боли, она наконец вышла с решением - купив BrainTreepayments.com, чтобы обеспечить лучшую поддержку для разработчиков.
Здесь ссылка для справки.