external account

External accounts

external account

Adobe Campaign comes with a set of pre-defined external accounts. In order to set up connections with external systems, you can create new external accounts.

External accounts are used by technical processes such as technical workflows or campaign workflows. When setting up a file transfer in a workflow or a data exchange with any other application (Adobe Target, Experience Manager, etc.), you need to select an external account.

You can set up the following types of external accounts:

Creating an external account

To create a new external account, follow the steps below. Detailed settings depend on the type of external account.

  1. From Campaign Explorer, select Administration ‘>’ Platform ‘>’ External accounts.

  2. Click the New button.

  3. Enter a Label and an Internal Name.

  4. Select your external account Type which one you want to create.

  5. Configure the access to the account by specifying credentials depending on the chosen external account type.

    The necessary information is usually provided by the provider of the server you are connecting to.

  6. Check the Enabled option to activate the connection.

  7. Click Save.

The external account is created and added to the external accounts list.

Bounce mails external account

The Bounce mails external account specifies the external POP3 account to be used to connect to the email service. For more on this external account, refer to this page.

All servers configured for POP3 access can be used to receive return mail.

To configure the Bounce mails (defaultPopAccount) external account:

  • ServerURL of the POP3 server.
  • PortPOP3 connection port number. The default port is 110.
  • AccountName of the user.
  • PasswordUser account password.
  • EncryptionType of chosen encryption between By default, POP3 + STARTTLS, POP3 or POP3S.

Routing external account

The Routing external account allows you to configure each channel available in Adobe Campaign depending on the packages installed.

The following channels can be configured:

FTP external account

The FTP external account lets you configure and test access to a server outside of Adobe Campaign. To set up connections with external systems such as FTP servers 898 used for file transfers, you can create your own external accounts. For more on this, refer to this page.

To do so, specify in this external account the address and credentials used to establish the connection to the FTP server

  • ServerName of the FTP server.
  • PortFTP connection port number. The default port is 21.
  • AccountName of the user.
  • PasswordUser account password.
  • EncryptionType of chosen encryption between None or SSL.

To know where to locate these credentials, refer to this page.

External database external account

Use the External database type external account to connect to external an database. Learn more about Federated Data Access (FDA) option in this section.

External databases compatible with Campaign are listed in the Compatibility matrix

External account configuration settings depend on the database engine. Learn more in the following sections:

Web Analytics external account

The Web Analytics (Adobe Analytics — Data connector) external account allows you to forward data from Adobe Analytics to Adobe Campaign in the form of segments. Conversely, it sends indicators and attributes of email campaigns delivered by Adobe Campaign to Adobe Analytics — Data connector.

For this external account, the calculation formula for tracked URLs must be enriched and connection between the two solutions must be approved. For more on this, refer to this page.

connect external account

The Connect external account lets you display personalized content in your applications, making it easier to acquire prospects via this social network.

For each application, you need to create a Connect type external account. For more on this, refer to page.

  • Hosting modeHosting mode of the application between hosted by a partner or hosted by this instance.
  • Application IDApp ID of your application.
  • Application secretApp secret of your application.

If you chose the hosted by this instance mode, the Secure Canvas URL needs to be paste into the Web games (https) field on

To know where to locate these credentials, refer to this page.

Execution instance external account

If you have a broken-down architecture, you need to specify the execution instances linked to the control instance and connect them. Transactional message templates are deployed to the execution instance

  • URLURL of the server on which the execution instance is installed.
  • AccountName of the account, it must match the Message Center Agent as defined in the operator folder.
  • PasswordPassword of the account as defined in the operator folder.

For more information on this configuration, refer to this page.

Adobe Experience Cloud external account

To connect to the Adobe Campaign console using an Adobe ID, you must configure the Adobe Experience Cloud (MAC) external account.

  • IMS serverURL of your IMS server. Make sure both stage and production instances point to the same IMS production end point.
  • IMS scopeScopes defined here must be a subset of those provisioned by IMS.
  • IMS client identifierID of your IMS client.
  • IMS client secretCredential of your IMS client secret.
  • Callback serverAccess URL of your Adobe Campaign instance.
  • IMS organization IDID of your IMS organization. To find your organization ID, refer to this page (Where can I find my IMS organization ID?).
  • Association maskSyntax which will allow configuration names in Enterprise Dashboard to be synced with the groups in Adobe Campaign.
  • ServerURL of your Adobe Experience Cloud instance.
  • TenantName of your Adobe Experience Cloud Tenant.

For more information on this configuration, refer to this page.

SFTP external account

The SFTP external account lets you configure and test access to a server outside of Adobe Campaign. To set up connections with external systems such as SFTP used for file transfers, you can create your own external accounts. For more on this, refer to this page.

  • ServerURL of the SFTP server.
  • PortFTP connection port number. The default port is 22.
  • AccountAccount name used to connect to the SFTP server.
  • PasswordPassword used to connect to the SFTP server.

Adobe Experience Manager external account

The AEM (AEM instance) external account allows you to manage the content of your email deliveries as well as your forms directly in Adobe Experience Manager.

  • ServerURL of the Adobe Experience Manager server.
  • PortAccount name used to connect to the Adobe Experience Manager authoring instance.
  • PasswordPassword used to connect to the Adobe Experience Manager authoring instance.

For more on this, refer to this section.

Amazon Simple Storage Service (S3) external account

The Amazon Simple Storage Service (S3) connector can be used to import or export data to Adobe Campaign. It can be set up in a workflow activity. For more on this, refer to this page.

As you are setting up this new external account, you need to provide the following details:

  • AWS S3 Account ServerURL of your server, it should be filled as follows:.s3.amazonaws.com/
  • AWS access key IDTo know where to find your AWS access key ID, refer to this page .
  • Secret access key to AWSTo know where to find your secret access key to AWS, refer to this page.
  • AWS RegionTo learn more on AWS region, refer to this page.
  • The Use server side encryption checkbox allows you to store your file in S3 encrypted mode.

To learn where to find the access key ID and secret access key, refer to Amazon Web services documentation .

Microsoft Dynamics CRM external account

The Microsoft Dynamics CRM external account allows you to import and export Microsoft Dynamics data into Adobe Campaign.

Configuration for Microsoft Dynamics connector to work with Adobe Campaign depends on your deployment type.
With On-premise and Office 365 deployment types, you need to provide the following details:

  • AccountAccount used to sign in to Microsoft CRM.
  • ServerURL of your Microsoft CRM server.
  • PasswordPassword used to sign in to Microsoft CRM.
  • Company name for On-premise and Office 365 deploymentName of your Company.
  • Organization name for On-premise deploymentName of your organization.Organization name which can be found in the Developers resources dashboard in Microsoft Dynamics, Unique Name field.
  • CRM version for On-premiseVersion of the CRM between Dynamics CRM 2007, Dynamics CRM 2015 or Dynamics CRM 2016.

With Web API deployment type and Password credentials authentication, you need to provide the following details:

  • AccountAccount used to sign in to Microsoft CRM.
  • ServerURL of your Microsoft CRM server.
  • Client identifierClient ID which can be found from Microsoft Azure management portal in the Update your code category, Client ID field.
  • CRM versionVersion of the CRM between Dynamics CRM 2007, Dynamics CRM 2015 or Dynamics CRM 2016.

With Web API deployment type and Certificate authentication, you need to provide the following details:

  • ServerURL of your Microsoft CRM server.
  • Private Key (Base64 encoded)Private key encoded to Base64
  • Custom Key identifier
  • Key ID
  • Client identifierClient ID which can be found from Microsoft Azure management portal in the Update your code category, Client ID field.
  • CRM versionVersion of the CRM between Dynamics CRM 2007, Dynamics CRM 2015 or Dynamics CRM 2016.

For more information on this configuration, refer to this page.

Oracle on demand external account

The Oracle on demand external account allows you to import and export Oracle data into Adobe Campaign.

To configure the Oracle on demand external account to work with Adobe Campaign, you need to provide the following details:

  • AccountAccount used to sign in to Oracle CRM on demand.
  • ServerURL of your Oracle CRM on demand server.
  • PasswordPassword used to sign in to Oracle CRM on demand.

For more information on this configuration, refer to this page.

Salesforce CRM external account

The Salesforce CRM external account allows you to import and export Salesforce data into Adobe Campaign.

To configure the Salesforce CRM external account to work with Adobe Campaign, you need to provide the following details:

  • AccountAccount used to sign in to Salesforce CRM.
  • PasswordPassword used to sign in to Salesforce CRM.
  • Client identifierTo know where to find your client identifier, refer to this page.
  • Security tokenTo know where to find your security token, refer to this page.
  • API versionVersion of the API between Version 37, Version 21 or Version 15.

For this external account, you need to configure you Salesforce CRM with the configuration wizard.

For more information on this configuration, refer to this page.

Источник: https://docs.adobe.com/content/help/en/campaign-classic/using/getting-started/administration-basics/external-accounts.html

Linking an External Account

external account

You can use External Accounts to link another bank account to your Simple account and transfer funds back and forth. It's a convenient way to fund your Simple account, and we don't charge any fees for these transfers.

Before you get started, there are a few things to keep in mind:

  • You can link up to 5 external accounts with this feature.
  • The account you link has to be a personal account you own, and it has to support incoming and outgoing transfers (most bank accounts do, but some prepaid cards, investment accounts, and the do not).
  • You can link your external account to Simple using Simple or using your external account if your bank offers that feature.
  • There are lots of fun extra banking details in the Electronic Fund Transfer Disclosure Statement, located within our Account Agreement.
  1. After signing in on the web, hover the mouse over your name (it's in the upper right corner) and select Manage External Accounts.
  2. Click Link new account.
  3. You'll see some information on how the account linking process works. Click «Continue» to continue linking.

Establishing a link

You'll be prompted to search for your other bank. If you can find it, go ahead and select your bank from the list. If you can't find it, you can attempt a link using your other bank's transfer services, or attempt a link using trial deposits.

(When you link an account via trial deposits we send a couple of small transactions, which are deposited and reversed in your account within 1-2 business days. We then ask you to confirm the transaction amounts.

) If you'd to proceed with linking via trial deposit you should see Don't see your bank? and a Next button.

If your other bank isn't on the list, click here for instructions on linking with trial deposits.

  1. Enter the account and routing number for your other account, and then hit Save.

  2. We'll send a couple of small trial deposits, which will be deposited within 1-2 business days and automatically reversed. They'll appear on your other bank's transaction list, and they'll look this:

  3. When the trial deposits appear, log onto your Simple account and confirm the external account by entering the amount of the two small deposits (in this case, $0.87 and $0.38). The order in which you enter them doesn't matter, but be careful to enter them correctly; entering trial deposits incorrectly may disable the feature for security reasons.

  4. That's it—you should be all set and ready to transfer funds!

  1. Assuming you're able to select your bank from the list, you’ll see an explanation of the linking process: you’ll be logging into your other bank account through the Simple app.

  2. Enter your username and password for the other bank account. Depending on your bank, they might also ask for a security code or additional verification.

  3. Once you’ve logged in, we’ll confirm that this account can be linked to Simple. There’s a chance we’ll need extra verification from you; if so, we’ll send you a support message with details.

  4. That’s it! The accounts are linked, and you can start transferring funds.

Now that I've linked an account, how do I send a transfer?

If you'd a step-by-step guide on how to send a transfer check it out here:

Sending an External Accounts Transfer

Deleting an External Account

  1. After signing in on the web, hover the mouse over your name (it's in the upper right corner) and select Manage External Accounts.
  2. Click the account you want to delete.
  3. Click Edit, and Delete External Account.

Note: External accounts can't be deleted until 60 business days after the latest transfer.

You can use External Accounts to link another bank account to your Simple account and transfer funds back and forth. It's a convenient way to fund your Simple account, and we don't charge any fees for these transfers.

Before you get started, there are a few things to keep in mind:

  • You can link up to 5 external accounts with this feature.
  • The account you link has to be a personal account you own, and it has to support incoming and outgoing transfers (most bank accounts do, but some prepaid cards, investment accounts, and the do not).
  • You can link your external account to Simple using Simple or using your external account if your bank offers that feature.
  • There are lots of fun extra banking details in the Electronic Fund Transfer Disclosure Statement, located within our Account Agreement.

Linking the accounts

Starting the linking process

  1. Swipe right to pull up the navigation menu.
  2. Tap Move Money, and then Transfer to or from a bank.

  3. Tap the Link an account plus sign (if you already have an account linked, it will be listed in the From field.

    Tapping the From field will enable you to add another account.)

  4. You'll see some information on how the account linking process works. Tap Continue to continue linking.

Establishing a link

You'll be prompted to search for your other bank. If you can find it, go ahead and select your bank from the list. If you can't find it, you can attempt a link using your other bank's transfer services, or attempt a link using trial deposits.

(When you link an account via trial deposits we send a couple of small transactions, which are deposited and reversed in your account within 1-2 business days. We then ask you to confirm the transaction amounts.

) If you'd to proceed with linking via trial deposit you should see Don't see your bank? and a Next button.

If your other bank isn't on the list, click here for instructions on linking with trial deposits.

  1. Enter the account and routing number for your other account, and then hit Save.
  2. We'll send a couple of small trial deposits, which will be deposited within 1-2 business days and automatically reversed.

    They'll appear on your other bank's transaction list, and they'll look this:

  3. When the trial deposits appear, log onto your Simple account and confirm the external account by entering the amount of the two small deposits (in this case, $0.87 and $0.38).

    The order in which you enter them doesn't matter, but be careful to enter them correctly; entering trial deposits incorrectly may disable the feature for security reasons.

  4. That's it—you should be all set and ready to transfer funds!
  1. Assuming your other bank is on the list, you’ll see an explanation of the linking process. You’ll be logging into your other bank account through the Simple app.

  2. Enter your username and password for the other bank account. Depending on your bank, they might also ask for a security code or additional verification.

  3. Once you’ve logged in, we’ll confirm that this account can be linked to Simple. There’s a chance we’ll need extra verification from you; if so, we’ll send you a support message with details.

  4. That’s it! The accounts are linked, and you can start transferring funds.

Now that I've linked an account, how do I send a transfer?

p>If you'd a step-by-step guide on how to send a transfer check it out here:

Sending an External Accounts Transfer

Stripe: сервис вашей мечты для автоматизации денежных переводов

external account

Имевшие дело с сервисом электронных платежей Stripe знают, что он отлично заточен под разработчиков.

Его документация написана людьми для людей; есть хороший тестовый режим — полная копия реального, и для перехода на live-режим нужно только заменить ключи, не трогая API и не получая никаких сюрпризов; админка тестового режима — тоже полная копия боевого.

В общем, Stripe — это хорошо, и я хочу посвятить эту статью базовым вопросам интеграции сервиса в e-Commerce-проект, объяснив процессы на конкретных и абстрактных примерах. Надеюсь, что мой опыт поможет всем, кто хочет попробовать Stripe на своём проекте.

Однако перед тем, как использовать Stripe, задайте вопрос: «А где находится бизнес, который мы будем обслуживать?». Например, если бизнес российский, Stripe для нас бесполезен: принимать платежи можно из любой страны, но бизнес владельца аккаунта на Stripe должен быть юридически зарегистрирован в одной из доступных стран.

Иначе создать и авторизовать аккаунт невозможно. Список стран можно посмотреть здесь. Если вы хотите выводить деньги на другие счета, например, поставщикам (как это делать, я расскажу ниже), то юридически поставщики тоже должны находиться в странах, с которыми работает Stripe.

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

Также нужно быть готовым, что Stripe не поддерживает xml-протокол 3-D-secure, который требует от клиента вводить код подтверждения, полученный в SMS-сообщении. Stripe просто пытается провести платеж без этой опции, и если банк принимает платежи без 3-D Secure — хорошо, если нет — всё закончится отказом, и с этой карты платить не получится.

Проведение платежа

Чтобы перевести деньги с карточки клиента на наш Stripe-аккаунт, нам нужно сделать следующее. С помощью скрипта Stripe.js получим на фронтенде Stripe token. Дальше мы будем использовать token с серверной стороны, чтобы провести сам платёж.

Подключаем Stripe.js и указываем публичный ключ:

Делаем обычную HTML-форму, на input указываем атрибуты data-stripe для работы скрипта. Нам будет нужен номер карты клиента, год и месяц валидности карты и CVC. Имя и фамилию владельца Stripe не требует.

Card Number Expiration (MM/YY) CVC

Теперь получим token:

$(function() { var $form = $('#payment-form'); $form.submit(function(event) { // Отключим кнопку, чтобы предотвратить повторные клики $form.find('.submit').prop('disabled', true); // Запрашиваем token у Stripe Stripe.card.createToken($form, stripeResponseHandler); // Запретим форме submit return false; });}); function stripeResponseHandler(status, response) { // Получим форму: var $form = $('#payment-form'); if (response.error) { // Problem! // Показываем ошибки в форме: $form.find('.payment-errors').text(response.error.message); $form.find('.submit').prop('disabled', false); // Разрешим submit } else { // Token был создан // Получаем token id: var token = response.id; // Вставим token в форму, чтобы при submit он пришел на сервер: $form.append($('').val(token)); // Сабмитим форму: $form.get(0).submit(); }};

На всякий случай: этот шаг описан в официальной документации.

Теперь мы можем списать деньги с клиента через сервер. Примеры кода на PHP.

// Устанавливаем секретный ключ \Stripe\Stripe::setApiKey(«your_secret_key»); // Забираем token из формы$token = $_POST['stripeToken']; // Создаём оплату try { $charge = \Stripe\Charge::create(array( «amount» => 1000, // сумма в центах «currency» => «usd», «source» => $token, «description» => «Example charge» ));} catch(\Stripe\Error\Card $e) { // Платёж не прошёл}

Это всё, что нужно сделать, чтобы перевести деньги с карты клиента на ваш Stripe-счёт.

Автоматические переводы денег вашим поставщикам

Теперь рассмотрим перевод на рабочем примере. Представим, что вы пишете платформу, которая продаёт редкие книги из маленьких издательств по всему миру.

Вам нужно переводить деньги вашим поставщикам-издательствам, чтобы они выслали книгу клиенту, и брать себе комиссию 10$ c каждой продажи.

Вы не хотите париться с ежемесячными отчётами и выплатами, вы хотите просто переводить деньги каждый раз, когда платит клиент. Stripe это позволяет.

Как и прежде, обязательное условие для настройки автоматических переводов — это нахождение поставщика в одной из стран, поддерживаемых Stripe.

У Stripe есть замечательная штука Managed Acсounts. С помощью этой опции мы как бы создаем Stripe-аккаунт для нашего поставщика, но берём на себя все заботы по управлению аккаунтом, так что самому издательству не нужно будет регистрироваться в Stripe.

Сначала получим информацию о банковском счёте вашего издательства с помощью уже знакомого нам скрипта Stripe.js. Как и в случае списания денег с карты клиента, для операций над банковским счётом нам тоже нужен Stripe token.

Stripe.bankAccount.createToken({ country: $('.country').val(), // 2-хсимвольный код страны (US) currency: $('.currency').val(), // 3-хсимвольный код валюты (USD) routing_number: $('.routing-number').val(), // идентификационый номер банка account_number: $('.account-number').val(), // номер банковского счёта account_holder_name: $('.name').val(), // имя владельца бизнеса (в нашем примере — издательства) account_holder_type: $('.account-holder-type').val() // тип аккаунта — идивидуальный предприниматель или компания (individual, company)}, stripeResponseHandler);

Это тоже описано в документации.

Ремарка. Имейте в виду, что для каждой страны банковские данные (routing_number, account_number ) заполняются по-разному. Например, для европейских стран нужно получать IBAN-номер. Он кладётся в поле account_number, а routing_number не отпраляется вообще.

Также для некоторых стран внутренние номера счетов склеиваются в одну строку и записываются в поля. Например, чтобы получить корректный идентификационный номер банка routing_number для Канады, надо склеить transit number и institution number (transit number + institution number).

Если transit number: 02345, а institution number: 987, то routing_number будет ‘02345987’. Account number варьируется в зависимости от банка. А для Германии нужен будет только IBAN номер, он заполняется в поле routing_number. Например, IBAN: DE89370400440532013000 (22 символа).

Как заполнять эти поля для остальных стран, можно посмотреть тут.

Итак, теперь у нас есть token банковского счёта, куда мы можем выводить деньги поставщикам. Давайте создадим Managed Account. Пусть наше издательство находится в Америке, является компанией, а не ИП, и мы платим ему в американских долларах.

\Stripe\Stripe::setApiKey(«your_secret_key»);$account = Account::create([ «country» => 'US', «managed» => true,]);if (isset($account->id)) { try { $account->external_accounts->create( [«external_account» => $token] // наш token банковского счета ); } catch (InvalidRequest $error) { // произошла ошибка создания }}

Казалось бы, теперь у нас есть Managed Account, и можно переводить деньги, но нет: аккаунт нужно верифицировать. Для этого нужно предоставить Stripe определённую юридическую информацию о компании. Какая именно информация нужна и в каких странах, описано здесь.

Итак, для издательства в Америке нам нужно предоставить:

Название Описание
legal_entity.address.cityГород, в котором расположена компания
legal_entity.address.line1Адрес компании
legal_entity.address.postal_codeПочтовый индекс
legal_entity.address.stateШтат
legal_entity.business_nameНазвание компании
legal_entity.business_tax_idНалоговый идентификационный номер
legal_entity.dob.dayДень рождения владельца компании
legal_entity.dob.monthМесяц рождения владельца компании
legal_entity.dob.yearГод рождения владельца компании
legal_entity.first_nameИмя владельца компании
legal_entity.last_nameФамилия владельца компании
legal_entity.ssn_last_4Четыре последние цифры номера социального страхования владельца компании
legal_entity.typeindividual/company
tos_acceptance.dateДата принятия условий использования Stripe
tos_acceptance.ipIP-адрес, с которого происходило принятие условий использования Stripe

Условия использования Stripe здесь. Человек, от чьего имени будет создаваться Managed Account, должен их принять.

Также Stripe может потребовать дополнительную информацию. Для Америки это:

Название Описание
legal_entity.personal_id_numberЛичный идентификационный номер
legal_entity.verification.documentСкан документа, подтверждающего личность

Собираем необходимую информацию и редактируем аккаунт.

\Stripe\Stripe::setApiKey(«your_secret_key»);$account = Account::retrieve($accountId);$account->legal_entity->address->city = 'New-York';$account->legal_entity->address->state = 'New-York';$account->legal_entity->address->postal_code = '00501';$account->legal_entity->address->line1 = 'Some address';$account->legal_entity->business_name = 'US TEST';$account->legal_entity->business_tax_id = '00000001';$account->legal_entity->dob->day = 1;$account->legal_entity->dob->month = 1;$account->legal_entity->dob->year = 1980;$account->legal_entity->first_name = 'Bob';$account->legal_entity->last_name = 'Smith';$account->legal_entity->type = 'company';$account->legal_entity->ssn_last_4 = '0000';$account->tos_acceptance->date = 1466074123; // timestamp$account->tos_acceptance->ip = 123.123.123.123;try { $account->save(); } catch (InvalidRequest $error) {// ошибка во время сохранения }

Теперь команда Stripe всё проверит, и в админке мы увидим статус Verified.
https://dashboard.stripe.com/test/applications/users/overview

Но этого нам не будет достаточно. Также команда Stripe может указать ошибки в данных или потребовать дополнительной информации, например personal_id_number.

Когда команда проверит данные, аккаунт будет обновлён. На это событие можно настроить webhook.

Необходимые поля будут описаны в объекте аккаунта:

$account->verification->fields_needed

Также Stripe может выставить дедлайн для предоставления данных. Если дата есть, она будет в свойстве $account->verification->due_by.

Для тестирования верификации Stripe предоставляет хорошую тестовую среду. С помощью переводов с определённых тестовых карт мы можем симулировать разные сценарии поведения верификации аккуантов. Примеры таких сценариев:

  • данные не заполнены, и мы вообще не можем совершать переводы;
  • сработал лимит на размер платежа. Это происходит, если Stripe считает, что перевод слишком большой, и предоставленной информации ему недостаточно. В этом случае он отключает Managed Account;
  • отключение аккаунта с требованием ввести данные к определенной дате;
  • загрузка скана документа, подтверждающего личность владельца аккаунта;
  • принятие и отклонение этого скана.

Как конкретно симулировать эти случаи, описано здесь.

Обработать все ситуации придётся в любом случае. И по моему опыту, лучше сразу предоставить Stripe максимум информации, чтобы избежать сюрпризов с отключением аккаунта.

Когда все окей, и Stripe верифицировал ваш Managed Account, нужно включить переводы (transfers) с помощью API или отключить автоматические — это одно и то же.
https://dashboard.stripe.com/account/transfers

Итак, у нас есть верифициронный аккаунт, переводы включены, и теперь мы можем делать переводы денег напрямую поставщику.

Предположим, у нас есть книга. Поставщик хочет за неё 50$, мы хотим 10$ долларов комиссии себе, плюс нам надо заложить в цену комиссию Stripe на перевод. Сейчас Stripe берёт за каждый перевод 2,9% + 30¢. Мы решили, что оплатим комиссию из своей части. Тогда пользователю надо заплатить за книгу 60$. Из своей части мы отдадим 2,04$ комиссии Stripe.

Получаем token с помощью Stripe.js и проводим платёж со стороны сервера.

$charge = Charge::create([ «amount» => 6000, // в центах «currency» => 'USD', «source» => $token, «application_fee» => 1000, «destination» => $managedAccountId]);

Свойство application_fee позволяет указать, какую сумму от перевода оставить на нашем счету. Комиссия Stripe будет списываться в любом случае только с нашего счёта, даже если мы сделаем полный перевод поставщику.

На банковский счёт поставщика деньги сразу не придут, они выводятся раз в семь дней. Т.е. мы переводим деньги на Stripe-аккаунт нашего поставщика, и по истечении семи дней они переводятся аккаунту на привязанный банковский счёт.

Дополнительные фичи

Кроме того, Stripe позволяет сохранять клиентов, добавлять произвольные метаданные при создании платежа, чтобы было проще ориентироваться в проведённых платежах, задавать description при платеже для его более информативного описания, и многое другое. Обо всём этом можно посмотреть в документации к API платежей.

Источник: https://habr.com/ru/company/livetyping/blog/306338/

Microsoft Account external login setup with ASP.NET Core

external account

  • 03/19/2020
  • 4 minutes to read

By Valeriy Novytskyy and Rick Anderson

This sample shows you how to enable users to sign in with their work, school, or personal Microsoft account using the ASP.NET Core 3.0 project created on the previous page.

Create the app in Microsoft Developer Portal

If you don't have a Microsoft account, select Create one. After signing in, you are redirected to the App registrations page:

  • Select New registration
  • Enter a Name.
  • Select an option for Supported account types.
    • The MicrosoftAccount package supports App Registrations created using «Accounts in any organizational directory» or «Accounts in any organizational directory and Microsoft accounts» options by default.
    • To use other options, set AuthorizationEndpoint and TokenEndpoint members of MicrosoftAccountOptions used to initialize the Microsoft Account authentication to the URLs displayed on Endpoints page of the App Registration after it is created (available by clicking Endpoints on the Overview page).
  • Under Redirect URI, enter your development URL with /signin-microsoft appended. For example, https://localhost:5001/signin-microsoft. The Microsoft authentication scheme configured later in this sample will automatically handle requests at /signin-microsoft route to implement the OAuth flow.
  • Select Register

Create client secret

  • In the left pane, select Certificates & secrets.

  • Under Client secrets, select New client secret

    • Add a description for the client secret.
    • Select the Add button.
  • Under Client secrets, copy the value of the client secret.

The URI segment /signin-microsoft is set as the default callback of the Microsoft authentication provider. You can change the default callback URI while configuring the Microsoft authentication middleware via the inherited RemoteAuthenticationOptions.CallbackPath property of the MicrosoftAccountOptions class.

Store the Microsoft client ID and secret

Store sensitive settings such as the Microsoft client ID and secret values with Secret Manager. For this sample, use the following steps:

  1. Initialize the project for secret storage per the instructions at Enable secret storage.

  2. Store the sensitive settings in the local secret store with the secret keys Authentication:Microsoft:ClientId and Authentication:Microsoft:ClientSecret:

    dotnet user-secrets set «Authentication:Microsoft:ClientId» «»dotnet user-secrets set «Authentication:Microsoft:ClientSecret» «»

The : separator doesn't work with environment variable hierarchical keys on all platforms. __, the double underscore, is:

  • Supported by all platforms. For example, the : separator is not supported by Bash, but __ is.
  • Automatically replaced by a :

Configure Microsoft Account Authentication

Add the Microsoft Account service to the Startup.ConfigureServices:

public void ConfigureServices(IServiceCollection services){ services.AddDbContext(options => options.UseSqlServer( Configuration.GetConnectionString(«DefaultConnection»))); services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores(); services.AddRazorPages(); services.AddAuthentication().AddMicrosoftAccount(microsoftOptions => { microsoftOptions.ClientId = Configuration[«Authentication:Microsoft:ClientId»]; microsoftOptions.ClientSecret = Configuration[«Authentication:Microsoft:ClientSecret»]; });}

The AddAuthentication(String) overload sets the DefaultScheme property. The AddAuthentication(Action) overload allows configuring authentication options, which can be used to set up default authentication schemes for different purposes. Subsequent calls to AddAuthentication override previously configured AuthenticationOptions properties.

AuthenticationBuilder extension methods that register an authentication handler may only be called once per authentication scheme. Overloads exist that allow configuring the scheme properties, scheme name, and display name.

For more information about configuration options supported by Microsoft Account authentication, see the MicrosoftAccountOptions API reference. This can be used to request different information about the user.

Sign in with Microsoft Account

Run the app and click Log in. An option to sign in with Microsoft appears. When you click on Microsoft, you are redirected to Microsoft for authentication. After signing in with your Microsoft Account, you will be prompted to let the app access your info:

Tap Yes and you will be redirected back to the web site where you can set your email.

You are now logged in using your Microsoft credentials:

Multiple authentication providers

When the app requires multiple providers, chain the provider extension methods behind AddAuthentication:

services.AddAuthentication() .AddMicrosoftAccount(microsoftOptions => { … }) .AddGoogle(googleOptions => { … }) .Add(Options => { … }) .Add(Options => { … });

If the app is deployed behind a proxy server or load balancer, some of the original request information might be forwarded to the app in request headers. This information usually includes the secure request scheme (https), host, and client IP address. Apps don't automatically read these request headers to discover and use the original request information.

The scheme is used in link generation that affects the authentication flow with external providers. Losing the secure scheme (https) results in the app generating incorrect insecure redirect URLs.

Use Forwarded Headers Middleware to make the original request information available to the app for request processing.

For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

Troubleshooting

  • If the Microsoft Account provider redirects you to a sign in error page, note the error title and description query string parameters directly following the # (hashtag) in the Uri.

    Although the error message seems to indicate a problem with Microsoft authentication, the most common cause is your application Uri not matching any of the Redirect URIs specified for the Web platform.

  • If Identity isn't configured by calling services.AddIdentity in ConfigureServices, attempting to authenticate will result in ArgumentException: The 'SignInScheme' option must be provided. The project template used in this sample ensures that this is done.

  • If the site database has not been created by applying the initial migration, you will get A database operation failed while processing the request error. Tap Apply Migrations to create the database and refresh to continue past the error.

Next steps

  • This article showed how you can authenticate with Microsoft. You can follow a similar approach to authenticate with other providers listed on the previous page.

  • Once you publish your web site to Azure web app, create a new client secrets in the Microsoft Developer Portal.

  • Set the Authentication:Microsoft:ClientId and Authentication:Microsoft:ClientSecret as application settings in the Azure portal. The configuration system is set up to read keys from environment variables.

Источник: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-3.1

Все термины
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: