Оплата Stripe Destination, как установить описание для подключенной учетной записи - PullRequest
0 голосов
/ 24 октября 2018

Строим платформу для продавцов и покупателей.

  • Покупатели должны иметь возможность использовать разные способы оплаты.
  • Продавцы должны получать деньги за свои счета, но не должны , а видеть данные клиентов.

С Stripe, который называется адрес назначения , когда платформа платит клиенту, но фактические деньги направляются продавцу.Затем продавец видит, что ему заплатили сумму, но не кем (кроме «через нашу платформу»).

Я использую Stripe.NET в нашей C # ASP.NET, но мой вопрос не связан с технологиями.

Я могу создать заряд , чтобы сделать точно так же, какописано выше.

Пример кода:

var stripeCharge = stripeChargeService.Create(
                new Stripe.ChargeCreateOptions
                    {
                        Amount = (int)(price * multiplier),
                        Currency = currency,
                        CustomerId = stripeCustomer.Id,
                        SourceId = source,
                        Destination = new Stripe.ChargeDestinationCreateOptions 
                                      {
                                          Account = stripeSellerId 
                                      },
                        StatementDescriptor = "PLATFORM: " + invoiceNumber,
                        Description = "PLATFORM Payment for invoice number " + invoiceNumber,
                        Metadata = new Dictionary<string, string> 
                                   {
                                        { "InvoiceNumber", invoiceNumber } 
                                   }
                    });

Когда я это делаю, это работает.Я вижу заряд в моей учетной записи на платформе.Я вижу платеж в аккаунте моего продавца.Но продавец не получает никакой информации, которую я предоставил.«Описание» и «Метаданные» отображаются только в моей учетной записи на платформе.Оплата продавцу только говорит "123,45 €".Э-э ... отлично ... кто оплатил их счет?На самом деле мне все равно кто .Но какой счет был оплачен , кажется, основное требование для всех, кто строит платформу или продает ее.

Я проверил документацию Stripe.NET и проверил, возможно, он старше, чем сам Stripe API.Но нет никакого параметра, который я мог бы установить.Ничего в ChargeDestinationCreateOptions я не смог бы установить (например, что-то вроде DestinationDescription).

Поле описания для продавца существует, я вижу его на приборной панели, но оно пустое.Так чего мне не хватает?

Как настроить описание или метаданные платежа, которые продавец может видеть в своей учетной записи при выполнении "комиссии за назначение"?

1 Ответ

0 голосов
/ 24 октября 2018

При создании целевого платежа с помощью Stripe создаются три объекта:

  • объект платежа (ch_xxx) на счете платформы
  • объект переноса (tr_xxx) на счете платформы, представляющем перевод на связанный счет назначения.
  • объект платежа (py_xxx, который на уровне API эквивалентен объекту сбора) на подключенном счете, представляющий средстваиз перевода, выплачиваемого на этот счет.

Из вашего описания звучит так, как будто это третий объект, на который вы хотели бы установить метаданные или описание?Вы правы, вы не можете сделать это напрямую в параметрах создания целевого сбора.Однако после создания платежа вы можете легко получить ссылку на созданный платеж и обновить ее с помощью необходимых полей:

var chargeService = new StripeChargeService();
chargeService.ExpandTransfer = true;

var chargeOptions = new StripeChargeCreateOptions
{
    Amount = 1000,
    Currency = "usd",
    SourceTokenOrExistingSourceId = "tok_visa",
    Description = "Payment for Invoice #42",
    Destination = "acct_1DHFyLAXrgjEhAUx",
    DestinationAmount = 800
};
var charge = chargeService.Create(chargeOptions);
var paymentId = charge.Transfer.DestinationPaymentId;
var paymentUpdateOptions = new StripeChargeUpdateOptions
{
    Description = "Payment for Invoice #42"
};
chargeService.Update(paymentId, paymentUpdateOptions, new StripeRequestOptions
{
    StripeConnectAccountId = "acct_1DHFyLAXrgjEhAUx"
});

Ключевым моментом здесь является то, что объект сбора ссылается на перевод , а также перевод ссылки на платеж .Таким образом, комбинируя это с функцией расширяющегося объекта *1022* API, вы можете получить доступ к платежу и обновить его!

...