В PayPal Docs нет упоминания о возврате за подписку.
Но, согласно этому разговору, это возможно. Они предлагают выполнить возврат для продажи с транзакцией ID Соглашения. Для этого я сделал что-то вроде этого:
var agreementId = "I-FNWSVWCMNWLD"; //this is agreementId of my active subscription.
var transactionId = Agreement.ListTransactions(APIContext, agreementId, "2018-10-10", "2019-01-16")//I tried to different data.
.agreement_transaction_list
.LastOrDefault()
.transaction_id;
//here in agreement_transaction_list I get only one transaction
//with id that is exactly the same as AgreementId which I passed.
//I think it's wrong.
var amount = new Amount()
{
currency = "USD",
total = "4"
};
var refundRequest = new RefundRequest() {amount = amount };
var refResult = Sale.Refund(APIContext, transactionId, refundRequest);
//I catch 404 exception here.
Эта проблема была причиной здесь . Но это было три года назад, и, похоже, с тех пор ничего не изменилось.
Я связываюсь с технической поддержкой PayPal по этому вопросу.
BA (Соглашение о выставлении счета) не подлежит возврату, так как это не платеж, это соглашение между сторонами о разрешении платежей в будущем.
После создания БА (SetExpressCheckout и DoExpressCheckout) деньги берутся у стороны в согласованный момент, который вызывает идентификатор транзакции.
Этот идентификатор может быть возвращен, но, вероятно, целесообразно отменить BA, прежде чем сделать это.
Имейте в виду, i- или B- это идентификаторы BA / Token, идентификаторы транзакций без префиксов.
Я предлагаю протестировать все это в песочнице, прежде чем вы приведете ее в действие.
Итак, вопрос в том, как получить соответствующий идентификатор транзакции для Соглашения. И как обработать возврат с использованием транзакции с помощью PayPal .NET SDK?
Есть ли альтернативы для этой функциональности?
Спасибо.