您知道那些让您输入您的支票帐号和路由号码的网站,然后他们可以向您的帐户转账和从您的账户转账吗?
这是如何运作的?有什么好的服务或 API 可以做到这一点吗?有什么陷阱吗?
银行确实有用于执行此操作的 API,但只有经过批准的人员/公司才能与这些系统进行交互。因为它实际上涉及转移资金,所以就您如何处理系统上的帐号而言,安全要求非常高。
许多提供此功能以购买商品的网站实际上使用第三方系统来处理将实际资金转移到他们的帐户中。这降低了实现 API 的麻烦,并将安全负担交给了处理汇款的第三方。
如果您真的想建立一个可以接受银行帐号和兑换资金的系统,您应该联系您的银行,看看实施这样一个系统的实际要求是什么。每家银行都有自己的系统,以及关于这些交易成本的自己的费率。
我知道的一些第三方是
我在加拿大,虽然我认为 Moneris 和 Cactus 在美国经营。我认为 Beanstream 没有。同样,您可以与您的银行交谈,他们可能会让您与帮助您进行交易的第三方取得联系。
如果您希望能够在不同金融机构的账户之间发起资金转账(使用账户和路由号码),您需要找到提供 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 ) 的规则和规定,并通过严格的认证。这是一项相当大的投资,因此除非您有数十亿美元的支持,否则我不建议您尝试这样做。
您可以使用 Moneris US eSELECTplus 商家账户执行此操作 - 您只需在您的商家账户上启用自动票据交换所 (ACH)(不幸的是,目前加拿大没有与 ACH 相同的功能)。
以下是 Moneris US PHP API 中借记交易的示例:
<?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());
?>
Moneris USA 的 API 文件和集成指南可在以下位置获得:
http://developer.moneris.com(需要免费注册)
Moneris 美国 - ACH:
http://www.monerisusa.com/payment-processing-services/ach-direct-debit.aspx
Stripe Connect 允许您通过一个统一的 API 将资金转入银行账户并接受付款。截至 2015 年 12 月,它们提供了更详尽的文档,并且通常似乎比其他答案中提到的大多数公司更受开发人员欢迎。
有关更多信息,请参阅https://stripe.com/docs/connect。
Paypal 有一个相当容易访问的 API,您可以在您的程序中使用它来完成其中的一些工作。
进行 ACH 转账的非常简单的方式 - https://www.dwolla.com/white-label
根据您希望应用程序执行的操作,您将需要不同的功能。
如果您想支付(信用)银行账户。这很简单。以下是步骤: 1. 创建会员 2. 创建资金来源 3. 创建转账
如果你想借记和贷记银行账户,它会变得更复杂一些。以下是步骤: 1. 创建会员 2. 获得资金来源授权 3. 创建转账
授权较难的唯一原因是您必须通过 2 存款方式或某种类型的验证流程。使用 Dwolla.js 会更容易 - https://www.dwolla.com/dwollajs-bank-verification