我正在开发一个使用ASP.net和C#的Web应用程序
需要提供用户可通过其卡支付的功能(信用卡,万事达卡,Visa卡,借记卡等)
我如何处理交易,意味着当用户输入付款细节并点击付款按钮时,
我之前从未处理过付款,所以我从哪里开始?
我正在使用Authorize.net的Customer Information Manager API(CIM).我的测试用例以用户在结账时给出错误的地址为中心.
每次用户提交表单时,我的应用程序都会尝试创建客户配置文件:
$txrq = new AuthorizeNetCIM;
$txrsp = $txrq->createCustomerProfileTransaction("AuthCapture", $transaction, 'x_duplicate_window=0');
Run Code Online (Sandbox Code Playgroud)
我已经尝试过x_duplicate_window如上所述设置传递给"额外选项",在SDK中,它是请求的以下部分:
<extraOptions><![CDATA[' . $this->_extraOptions . ']]></extraOptions>
Run Code Online (Sandbox Code Playgroud)
无论我为x_duplicate_window使用什么值,authorize.net将始终返回错误,直到默认时间过去.
AuthorizeNet Error: Response Code: 3 Response Subcode: 1 Response Reason Code: 11 Response Reason Text: A duplicate transaction has been submitted.
Run Code Online (Sandbox Code Playgroud)
我担心,如果我们的(潜在)用户之一尝试提交错误的地址,意识到他或她的错误,那么在事务超时发生时会再遇到3分钟的错误.
php credit-card authorize.net payment-gateway payment-processing
我想运行一个程序,可以根据输入的数字确定信用卡号的验证和类型.编译器显示我的编码中有错误的通知,但我无法检测它在哪里.该程序也无法运行.下面是编码,
import java.util.*;
public class CreditCard {
public static void main(String args[]) {
String CType;(String number) {
if (number.startsWith("4"))
return "Visa";
else if (number.startsWith("5"))
return "MasterCard";
else if (number.startsWith("6"))
return "Discover";
else if (number.startsWith("37"))
return "American Express";
else
return "Unknown type";
};
Scanner input = new Scanner(System.in);
System.out.println("Enter a credit card number: ");
long number = input.nextLong();
long total = sumOfEvenPlaces(number) + (sumOfOddPlaces(number)*2);
if (isValid(total)) {
System.out.println("The "+CType+" card number is valid");
} else {
System.out.println("The "+CType+" card number is …Run Code Online (Sandbox Code Playgroud) 我有这样的购物车流程:
第4页.收据页面
重复计费是以后的要求,具有可变金额和计划.(用户必须能够返回并更改其计划而无需再次输入CC编号).
这是我不想要做的:
由于我需要一个确认页面,我想我需要使用某种标记化系统,例如braintreepayments提供的.您基本上将信用卡号存储在他们的服务上,他们会返回一个代表该号码的令牌.然后,您可以随时对该卡收取任何金额的费用.这当然是最灵活的解决方案.
我想绕过圈子试图找出这是否是最好的解决方案:
"最纯粹"最安全的方法似乎是重定向到braintree(或提供类似网关的其他人).
编辑(分配赏金后):
我的结论是,我必须有一个系统,我们只需要满足PCI的 A级.一直在更详细地研究PCI,这些问卷是卡片不存在的商家(即电子商务)的相关问卷.
SAQ A :(当CC号码甚至没有触及我们的服务器时).如果你在线销售,你仍然需要填写这份问卷,但这很容易.
SAQ D :(如果我们不存储它们,CC数字会触及我们的服务器)
看看这些问卷,揭示了需求之间的巨大差异.PCI要求经常被误解为一个简单的列表,例如"维护防火墙","安全策略","限制物理访问" - 但如果您实际阅读问卷D,您会看到它有更多问题和要求的顺序.例如,您必须回答您的服务器是否受摄像机保护,以及您的服务器上有哪种数据加密.
我真的很感激知道哪些实际的产品或供应商能够帮助我做我想做的事情.如果真的只有1或2家公司让我这样做,那么我需要知道.
我与Braintree没有任何关系,除非我设法进入他们的电子邮件营销列表.他们只是我设法找到的唯一一家这样做的公司.如果你正在经营另一家公司,那么请务必吹自己的小号.随着时间的推移,PCI要求将变得更加严格,任何已经阅读过这个问题的人都可能已经意识到这一点.
我们需要模仿Groupon样式付款,用户输入信用卡但除非发生某些触发事件,否则不会收费.(不,这不适用于其他交易网站.)
哪种支付API最适合这种情况?贝宝?亚马逊?
我们希望尽可能多地卸载付款处理.理想情况下,我们不存储信用卡信息.我们的目标是仅仅作为开始处理付款的触发器.
谢谢!
所以我知道有很多关于存储信用卡信息的帖子.我们正在构建一个移动应用程序,并希望人们能够输入一次卡片信息,而不是每次购买.
我们查看了Authorize.net CIM,它似乎是一个理想的解决方案(我们只存储一个返回信用卡号的个人资料ID或令牌)......但它可能达不到我们的需求,因为信用卡信息不是由authorize.net处理(必然),但我们也通过任何商家帐户处理付款.换句话说,我们希望存储信用卡信息,如钱包......不一定每次都与Authorize.net一起处理.
阅读CIM XML文档(p.94),看起来getCustomerPaymentProfileResponse掩盖了信用卡返回数据...所以我不知道如果数据被屏蔽,这对处理有什么用呢?
我们确实有其他一些实施方案,但我真的希望有一种基于网络的方式让客户管理他们的支付账户.有没有人知道存储信用卡数据的任何方法,可以根据需要调用这些数据传递给任何给定商家的处理器?
编辑4.28.2011 - 我正在用这个打墙.如果我们根本不存储信用卡信息,让客户输入然后通过它怎么办...我们如何安全地做到这一点?不存储它,传递HTTPS,在传输过程中加密卡数据?
是否有能力以某种方式在CreditCard上取得平衡?
Authorize.net或Paypal的API在此主题上进行了检查,没有结果.在现实生活中,任何现金终端都可以在您的信用卡上显示余额.这就是为什么我认为有一些方法可以通过某种支付网关在网络中获得这种平衡.
提前谢谢你的答案!
我想在谷歌注册一个开发者帐户,但不幸的是,我还没有信用卡,也不会很快得到一个.我正在考虑从朋友或亲戚那里借一个并用它来支付25美元的费用,然后我会向我的朋友/亲戚支付这笔金额.这看起来有道理吗?有什么影响吗?我不打算出售付费应用程序,我只想发布我制作的免费软件.
我想在Windows Azure上托管一个应用程序,该应用程序存储按月付费购买订阅的用户的信用卡信息.我只需要尽可能安全地存储卡数据(加密,加密,经常更新数据库密码,使用HTTPS等)
我相信我需要符合PCI标准才能存储这类信息.我的问题是Azure能让我实现这个目标吗?我有什么选择?Azure上的应用程序可以处理信用卡付款吗?
我正在开发一套Java工具,用于验证和使用信用卡.到目前为止,我支持:
LUHN验证.
日期验证(简单到期).
基于品牌(Visa,MasterCard等)的卡代码长度验证(CVV,CVC,CID).
信用卡号码长度验证(基于品牌).
BIN/IIN验证(针对有效数字的数据库).
隐藏数字(425010******1234)
为了使工具集更加完整,我想基于不同的卡品牌创建一个信用卡随机数生成器.此功能(希望)可以使我的测试用例更可靠.
基本上,我希望能够生成以下数字:
LUHN有效
根据品牌前缀有效
基于BIN/IIN前缀号有效
对于BIN/IIN有效卡号,我正在考虑从数据库中查找随机BIN/IIN号码(基于当然的品牌),然后使用添加剩余数字Random.显然,这在大多数时候都不会有效,我将不得不增加其中一个数字,直到它通过LUHN验证.
我似乎无法想到一个更好的方法.也许有人可以建议一些更聪明的东西......?
期待您的建议!提前致谢!:)
credit-card ×10
e-commerce ×2
java ×2
paypal ×2
pci-dss ×2
amazon ×1
android ×1
asp.net ×1
azure ×1
c# ×1
google-play ×1
loops ×1
payment ×1
php ×1