我该如何编写能够进行银行账户转账的软件?

17
你知道那些可以让你输入支票账号和路由号码的网站,然后它们就可以在你的账户之间转移资金吗?
那是如何运作的?有没有好的服务或API可以实现这个功能?还有什么需要注意的地方吗?
6个回答

18
银行确实有用于此的API,但只有经过批准的人/公司可以与这些系统接口。因为它涉及到转移资金,所以在处理您系统上的帐户号码方面,安全要求非常高。
许多提供购买商品功能的网站实际上使用第三方系统来处理其账户中的实际资金转移。这降低了实施API的麻烦程度,并将安全负担放在处理资金转移的第三方身上。
如果您真的想建立一个可以接受银行帐户号码并交换资金的系统,您应该联系您的银行,并了解实施这种系统的实际要求。每个银行都有自己的系统,以及关于这些交易成本的利率。
我知道一些第三方:
- Moneris - Cactus - Beanstream 我在加拿大,尽管我认为Moneris和Cactus在美国运营。我认为Beanstream不是。同样,您可以与银行交谈,他们可能会让您与第三方联系,以帮助您进行交易。

1
电子交易方面有相当数量的联邦法律。 - davenpcj
你知道其中一个第三方的例子吗? - Joe Van Dyk

6
如果您想要在不同金融机构之间发起资金转移(使用账户和路由号码),您需要找到一家提供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)的规则和法规来编写软件并通过严格的认证。这是一个相当大的投资,所以除非您有几十亿美元的支持,否则我不建议尝试这样做。

1
Stripe Connect允许您通过一个统一的API将钱转移到银行账户并接受付款。截至2015年12月,它们提供了更全面的文档,并且在开发者中似乎比其他公司更受欢迎。有关更多信息,请参见https://stripe.com/docs/connect

1

你可以通过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 USA - ACH:

http://www.monerisusa.com/payment-processing-services/ach-direct-debit.aspx


0

进行ACH转账的方法非常简单- https://www.dwolla.com/white-label

根据您的应用程序需要执行的操作,您需要不同的功能。

如果您想支付(信用)银行账户。这很简单。以下是步骤: 1.创建一个成员 2.创建资金来源 3.创建转账

如果您想借记和贷记银行账户,则会变得更加复杂。以下是步骤: 1.创建一个成员 2.获取资金来源授权 3.创建转账

授权稍微困难的唯一原因是您必须通过2个存款方法或某种类型的验证流程。使用Dwolla.js可以使此过程变得更加容易 - https://www.dwolla.com/dwollajs-bank-verification


0
Paypal有一个相当易于使用的API,您可以在程序中使用它来完成一些操作。

使用PayPal,我可以将钱从我的银行账户转移到另一个人的银行账户吗?我猜收款人也必须在PayPal上注册? - Joe Van Dyk
这是最简单的事情,但我相信PayPal可以进行电子存款并邮寄支票。他们有很多不同的服务。 - davenpcj
2
PayPal与银行转账无关,它们只是支付处理器(信用卡、电子支票)。 - themihai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接