Как я могу написать программное обеспечение, которое осуществляет банковский перевод?
Вы знаете те веб-сайты, которые позволяют вводить номер текущей учетной записи и номер маршрута, а затем они могут переводить деньги в свою учетную запись и из нее?
Как это работает? Любые хорошие услуги или API для этого? Любые ошибки?
Ответы
Ответ 1
У банков есть API для этого, но только одобренным людям/компаниям разрешено взаимодействовать с этими системами. Поскольку на самом деле это связано с переносом денег, требования к безопасности довольно высоки с точки зрения того, как вы обрабатываете номера счетов в своей системе.
Многие сайты, предлагающие эту функцию для покупки товаров, фактически используют стороннюю систему для обработки фактического перевода денег на свой счет. Это уменьшает количество проблем для реализации API, а также повышает нагрузку на третью сторону, обрабатывая денежные переводы.
Если вы серьезно относитесь к созданию системы, в которой вы можете принимать номера банковских счетов и обменивать средства, вам следует обратиться в свой банк и узнать, какие фактические требования для внедрения такой системы. У каждого банка есть своя система, а также собственный тариф на стоимость этих транзакций.
Некоторые третьи стороны, о которых я знаю,
Я в Канаде, хотя я думаю, что Moneris и Cactus работают в США. Я думаю, что Beanstream этого не делает. Опять же, вы можете поговорить с вашим банком, и они, возможно, свяжутся с третьей стороной, которая поможет вам в транзакциях.
Ответ 2
Если вы хотите иметь возможность инициировать перевод средств между счетами в разных финансовых учреждениях (используя учетную запись и номер маршрута), вам необходимо найти компанию по обработке платежей, которая предлагает ACH (http://en.wikipedia.org/wiki/Automated_Clearing_House). Обычно эти компании являются дочерними компаниями финансового учреждения, которое уже имеет доступ к ACH. Например. одной из таких компаний является ACH Direct (http://www.achdirect.com/). Я не могу ручаться за его услуги или надежность, хотя, я просто даю это здесь как пример того, какие типы компаний вам нужно искать.
Конечно, технически вы можете попытаться напрямую подключиться к ACH. Однако для этого вам необходимо следовать правилам и положениям NACHA (http://en.wikipedia.org/wiki/NACHA-The_Electronic_Payments_Association) при написании программного обеспечения и пройти строгую сертификацию. Это довольно большие инвестиции, поэтому, если вы не подкреплены парой биллионов долларов, я бы не советовал это делать.
Ответ 3
Вы можете сделать это с помощью торгового счета Moneris US eSELECTplus - вам просто нужно включить автоматическую клиринговую палату (ACH) на вашем торговом счете (к сожалению, в Канаде нет эквивалента ACH).
Вот пример того, как выглядит транзакция с дебетом в PHP-API Moneris:
<?php
require "../mpgClasses.php";
/************************ Request Variables **********************************/
$store_id='monusqa002'; //account credentials
$api_token='qatoken';
/************************ Transaction Object******************************/
$txnArray=array(type=>'us_ach_debit',
order_id=>'ach-'.date("dmy-G:i:s"),
cust_id=> 'my cust id',
amount=>'1.00'
);
$achTemplate = array(
sec =>'ppd',
cust_first_name => 'Bob',
cust_last_name => 'Smith',
cust_address1 => '101 Main St',
cust_address2 => 'Apt 102,
cust_city => 'Chicago',
cust_state => 'IL',
cust_zip =>'123456',
routing_num => '490000018',
account_num => '23456',
check_num => '100',
account_type => 'savings'
);
$mpgAchInfo = new mpgAchInfo ($achTemplate);
$mpgTxn = new mpgTransaction($txnArray);
$mpgTxn->setAchInfo($mpgAchInfo);
$mpgRequest = new mpgRequest($mpgTxn);
$mpgHttpPost = new mpgHttpsPost($store_id,$api_token,$mpgRequest);
/************************ Response Object **********************************/
$mpgResponse=$mpgHttpPost->getMpgResponse();
print("\nCardType = " . $mpgResponse->getCardType());
print("\nTransAmount = " . $mpgResponse->getTransAmount());
print("\nTxnNumber = " . $mpgResponse->getTxnNumber());
print("\nReceiptId = " . $mpgResponse->getReceiptId());
print("\nTransType = " . $mpgResponse->getTransType());
print("\nReferenceNum = " . $mpgResponse->getReferenceNum());
print("\nResponseCode = " . $mpgResponse->getResponseCode());
print("\nMessage = " . $mpgResponse->getMessage());
print("\nAuthCode = " . $mpgResponse->getAuthCode());
print("\nComplete = " . $mpgResponse->getComplete());
print("\nTransDate = " . $mpgResponse->getTransDate());
print("\nTransTime = " . $mpgResponse->getTransTime());
print("\nTicket = " . $mpgResponse->getTicket());
print("\nTimedOut = " . $mpgResponse->getTimedOut());
?>
Файлы API и руководства по интеграции для Moneris USA доступны по адресу:
http://developer.moneris.com (требуется бесплатная регистрация)
Монерис США - ACH:
http://www.monerisusa.com/payment-processing-services/ach-direct-debit.aspx
Ответ 4
Stripe Connect позволяет вам переводить деньги на банковские счета и принимать платежи через один унифицированный API. По состоянию на декабрь 2015 года они предоставляют более полную документацию и, как представляется, являются более популярным вариантом среди разработчиков, чем большинство компаний, упомянутых в других ответах.
Подробнее см. https://stripe.com/docs/connect.
Ответ 5
Paypal имеет довольно доступный API, который вы можете использовать в своей программе, чтобы выполнить некоторые из этих действий.
Ответ 6
Довольно простой способ передачи ACH - https://www.dwolla.com/white-label
В зависимости от того, что вы хотите для своего приложения, вам понадобятся разные функции.
Если вы хотите оплатить (кредитные) банковские счета. Это довольно прямолинейно. Вот шаги:
1. Создать участника
2. Создайте источник финансирования
3. Создайте передачу
Если вы хотите дебетовать и кредитные банковские счета, это становится немного сложнее. Вот шаги:
1. Создать участника
2. Получить разрешение источника финансирования
3. Создайте передачу
Единственная причина, по которой авторизация немного сложнее, заключается в том, что вам нужно пройти через метод депозита или поток проверки определенного типа. Это облегчает работу с Dwolla.js - https://www.dwolla.com/dwollajs-bank-verification