BrainTree信用卡包
BrainTree是一个国外集成信用卡支付的卡包。
沙盒登陆地址:
https://sandbox.braintreegateway.com/login
登陆沙盒得到商户ID、公钥、私钥。
1.配置web.config
<BraintreeSection> <BraintreeAuthentication Environment="SANDBOX" //生产环境为PRODUCT MerchantId="bnnvkfgf3crhvbcs" PublicKey="rp28gffvwtj7gygz" PrivateKey="906d2077d76e81f90b51c3b409682815"> </BraintreeAuthentication> </BraintreeSection>
2.引入Braintree.dll
3.引入Braintree.js
4.配置Braintree证书
var gateway = new BraintreeGateway { Environment = Braintree.Environment.SANDBOX; //沙盒 MerchantId = config.MerchantId, PublicKey = config.PublicKey, PrivateKey = config.PrivateKey };
5. 作为客户将客户Id及信息保存在Braintree中。
private string getCustomerId() { string customerId = "customer_" + CurrentUserId; try { var customer = getGateway().Customer.Find(customerId); //查找该客户的所有信息 if (customer != null) { return customer.Id; } } catch { //没找到则添加 var model = UserDataService.GetUserInfo(CurrentUserId); var request = new CustomerRequest { Id = "customer_" + CurrentUserId, FirstName = model.FirstName, LastName = model.LastName, Email = model.Email, Phone = model.CellPhone, Company = model.BusinessName }; Result<Customer> result = getGateway().Customer.Create(request); //创建客户 if (result.IsSuccess()) { return result.Target.Id; } } return null; }
6. 获得该客户的所有信用卡信息。
var customer = getGateway().Customer.Find(customerId); if (customer.CreditCards != null)//信用卡部分 { return Json(new { result = true, data = customer.CreditCards.Select(c => new { Token = c.Token, MaskedNumber = c.MaskedNumber, CardType = c.CardType.ToString(), IsDefault = c.IsDefault, ImageUrl = c.ImageUrl }) }); //token支付用的凭证,MaskedNumber卡号,CardType 卡类型,IsDefault 默认卡,ImageUrl 图片路径 }
1.2信用卡验证
1.Braintree介入方式(1。Dropin 2。custom) 前者使用现成的框架,后者自定义框架(意味着卡的验证也要自己)
2.Dropin显示方法:
<form id="CreditCards-form" method="post" action="/Braintree/AddPaymentMenthod"> <div id="payment-form"></div> <div id="show" style="display:none"> <input type="checkbox" id="default" name="default" checked="checked" value="true" /> Set As Default <div style="text-align:center"> <input type='submit' id="btnAddCreditCard" value='Add Credit Cards'/> </div> </div> </form>
默认只有卡号,年月日输入框,自动根据卡号验证卡的类型,CVV AVS 需要在控制面板开启,设为默认是自己后加的。
PayPal按钮需要线上关闭,沙盒无法关闭。
设置方法:
一些其他支付方式的支持,卡类型的支持均在此处设置。
调用braintree封装好的方法显示该UI。首先需要取得客户端Token:
var clientToken = getGateway().ClientToken.generate();
得到客户端令牌后就可以调用js方法展示该UI了
braintree.setup(data, "dropin", { container: "payment-form", form: "CreditCards-form", onReady: function () { $("#ts").hide(); $("#show").show(); } });
1.3:添加一张信用卡:
创建的ui自动会生成一个付款方式随机数,该随机数包含信用卡的卡号、卡类型、有效期以及我们设置的CVV。
payment_method_nonce
为客户添加信用卡
var request = new PaymentMethodRequest { CustomerId = customerId, PaymentMethodNonce = payment_method_nonce, Options = new PaymentMethodOptionsRequest { VerifyCard = true, //卡验证 FailOnDuplicatePaymentMethod = true //拒绝重复添加 } }; Result<PaymentMethod> result = getGateway().PaymentMethod.Create(request); if (result.IsSuccess()) { }
IsSuccess为成功状态。添加信用卡时可以设置对卡片进行有效性验证,以及不可以重复添加等。
1.4:删除一张信用卡:
var result = getGateway().PaymentMethod.Delete(token); //token为信用卡支付以及删除的唯一标识。
删除信用卡后,自动将下一张设为默认卡。
1.5:设为默认:
var updateRequest = new PaymentMethodRequest { Options = new PaymentMethodOptionsRequest { MakeDefault = true, //默认 } }; Result<PaymentMethod> result = getGateway().PaymentMethod.Update(token, updateRequest); if (result.IsSuccess()) { return Json(new { result = true }); }
只需要设置MakeDefault为true即可。
2.1:支付方式新增信用卡支付:
调用Braintree的消费方法
var request = new TransactionRequest { Amount = amount, PaymentMethodToken = token, Options = new TransactionOptionsRequest { SubmitForSettlement = true } }; Result<Transaction> result = getGateway().Transaction.Sale(request); //支付 var payResult = PayStatus.WaitingForPayment; var message = ""; if (result.Target != null) { message = result.Target.ProcessorResponseText;//错误 Message } else if (result.Message != null) { message = result.Message; } if (result.IsSuccess()) { UpdatePaymentMenthod(token); payResult = PayStatus.PaymentSuccess; } else { payResult = PayStatus.PaymentFailed; }
如果支付成功,则修改当前方式为默认付款方式。
如果PayEnd异常则立即取消这笔信用卡消费,调用transaction的void方法。 稍后说明void方法与refund方法区别
Void方法调用时也需要Begin 中间void 结束 End 证明一笔交易。
Result<Transaction> result = getGateway().Transaction.Void(transactionId);
关于退款:
部分退款时调用refund方法,但是需要检测信用卡状态,如果信用卡状态为:SUBMITTED_FOR_SETTLEMENT或AUTHORIZED只可以使用void方法取消整笔订单,如果是SETTLED或SETTLING 则使用refund方法进行部分退款。
getGateway().Transaction.Refund(transactionId, amount); 如果不传钱 则全部退款
一、BrainTree后台操作说明
3.1:控制面板管理Dashboard:
介绍了两种集成方式,以及近期收入的统计。
3.2:交易信息管理Transactions:
按检索条件检索数据
Sale为消费,Submitted For Settlement 为刚提交的交易,Voided为已取消的交易。Credit为已退款的交易,Settled 为已完结的交易。
点击交易号ID 可以对交易进行操作:Submitted For Settlement的则可以Void 取消交易操作,Settled则可以refund部分退款操作。
3.3:信用卡验证管理Verifications:
添加信用卡的时候对信用卡的有效进行验证,花1美金,看支付状态。点击可以查看该验证的详细信息。
3.4:保险库管理Vault:
所有保存在Braintree中的客户信息,以及该客户的所有信用卡,所有的交易等。
3.5:订阅服务管理Subscription:
订阅服务
3.6:创建交易New Transaction:
创建一笔新的交易,可以指定某个客户或 输入卡进行付款。
3.7:交易统计 Transaction Summary:
对卡的类型进行消费退款等统计。
3.7: 支出汇总 Disbursement summary:
按月份对每种卡进行支出汇总
3.8: 争议 Disputes:
已完结汇总
3.9: 创建新的客户 New Customer:
创建新的客户
3.10: 即将到期的卡 Expiring Cards:
即将过期的信用卡。
3.11: 导出客户信息 Export Customers:
导出客户资料,以及信用卡信息等。
3.12: 计划 Plans:
定期每月使用某卡付款的功能,我们没开发这个功能。
3.13: 附加/折扣 add-ons / discounts:
附加费或打折设置,每次交易时的附加费,或者享受的折扣。
3.14: 邮件通知 Email Notifications:
定期邮件通知
四: 设置 Settings:
4.1: 处理选项 Processing:
这些设置可能无法立即生效,可能需要几分钟。
Duplicate Transaction Checking 重复交易检查
Accept Paypal 使用PayPal
Accept Venmo 使用Venmo
Accept Apple Pay 使用Apple Pay
Accept Android Pay 使用Android Pay
Venmo Touch 让你的账户支持其他商家中的信用卡
AVS 开启AVS验证
cvv 开启CVV验证
Risk ThreSholds 风险控制
Advanced Credit Fraud Tools 信用卡诈骗工具
Card Verification 信用卡验证 开启后会对信用卡进行有效性验证,支付0~1之间的美金,如果通过则会存储在保险库中,否则不会保存。
Card Verification – Retry All Failed $0 重试所有验证失败的
Display Additional Processor Response 当处理器拒绝时显示拒绝原因, 无论是否设置总是显示拒绝原因。
Dispute Notifications 争议通知 产生争议时会发送邮件到一个邮箱,一批通知每天一次
Transaction lssue Notifications 交易问题的通知邮箱
Custom Fields 自定义字段
Email Receipts Email收据
Recurring Billing 周期性结算
4.2: 安全选项 Security Options:
限制ip访问
4.3: 用户权限 User and Roles:
可以添加邮箱 权限
BrainTree信用卡包的更多相关文章
- Paypal、Stripe、Braintree,跨境电商金流第三方支付该用哪家?
在台湾做跨境电子商务生意,电商网站的金流肯定是一个最大的麻烦,Paypal或是Stripe和Braintree则是国际上大家最常用的金流整合第三方支付服务商.这些金流服务大幅简化网站付费过程,都让消费 ...
- iOS 资源大全
这是个精心编排的列表,它包含了优秀的 iOS 框架.库.教程.XCode 插件.组件等等. 这个列表分为以下几个部分:框架( Frameworks ).组件( Components ).测试( Tes ...
- Webhooks PHP
Webhooks/Parse When webhooks are triggered in the gateway, a notification is sent as a POST request ...
- IOS中文版资源库
Swift 语言写成的项目会被标记为 ★ ,AppleWatch 的项目则会被标记为 ▲. [转自]https://github.com/jobbole/awesome-ios-cn#librari ...
- 采访ServiceStack的项目领导Demis Bellot——第2部分(转)
ServiceStack是一个开源的.支持.NET与Mono平台的REST Web Services框架.InfoQ有幸与Demis Bellot深入地讨论了这个项目.在这篇两部分报道的第2部分中,我 ...
- 人们对Python在企业级开发中的10大误解
From : 人们对Python在企业级开发中的10大误解 在PayPal的编程文化中存在着大量的语言多元化.除了长期流行的C++和Java,越来越多的团队选择JavaScript和Scala,Bra ...
- webapp构建工具库
Meteor:JavaScript App Platform braintree:在线支付 jquery datetimepicker:日期控件 Hotjar Tracking Code:网站追踪 Z ...
- 墙裂推荐 iOS 资源大全
这是个精心编排的列表,它包含了优秀的 iOS 框架.库.教程.XCode 插件.组件等等. 这个列表分为以下几个部分:框架( Frameworks ).组件( Components ).测试( Tes ...
- Magento 编译 php5.6.21 命令
./configure '--prefix=/alidata/server/php' '--enable-opcache' '--with-config-file-path=/alidata/ser ...
随机推荐
- 備份Sqlite DB到XML文件:
转载请注明出处:http://blog.csdn.net/krislight 项目中遇到备份与还原App数据的需求,需要把DB数据备份到一个XML文件中,然后保存到SD卡上,还原的时候直接从XML文件 ...
- nyist 740 “炫舞家“ST(动态规划)
dp[i][j][k]:表示第i次踩踏后两脚的位置j,k 先固定一只脚的位置j,第i次踩踏后,状态为dp[i][j][a[i]]或者dp[i][a[i]][j],其中a[i]表示第i个输入的元素,则有 ...
- Android 性能优化 四 布局优化merge标签的使用
小白:之前分享了ViewStub标签的使用,Android还有其他优化布局的方式吗? 小黑:<merge />标签用于减少View树的层次来优化Android的布局.先来用个例子演示一下: ...
- Spark快速数据处理
原书名:Fast Data Processing with Spark 原出版社:Packt Publishing 作者: (美)Holden Karau 丛书名:大数据技术丛书 出版社:机械工业出版 ...
- perl静态编译DBD
编译DBD 项目中经常使用perl,但perl在连接数据库时,需要依赖DBI,DBD驱动,但默认安装DBD驱动时,需要依赖数据库的lib库. 比如perl连接MySQL,需要安装MySQL clien ...
- (转载)PHP解析URL并得到URL中的参数
(转载)http://my.oschina.net/liuhui1990/blog/42232 <?php //例举一个URL格式的字符串: $str = 'http://test.com/te ...
- ORA-65096: invalid common user or role name
CREATE USER xx IDENTIFIED BY yy DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE "DEF ...
- Linux文件虚拟机系统只读Read-only file system的快速解决方法
问题描述:上周公司的私有云(底层架构是Openstack+KVM,目前稳定性还不够好,开发团队在改进中)一个计算节点挂掉,之后恢复后发现这个计算节点的所有Linux系统都变成只读了,复制文件提示:Re ...
- Ubuntu下安装Apache2, php5 mysql
不错的博文:http://blog.csdn.net/guaikai/article/details/6905781 1:首先安装apache:打开终端(ctrl+Alt+t), 输入命令:sudo ...
- CSS---网络编程
CSS概述 CSS是层叠样式表(Cascading Style Sheets)用来定义网页的显示效果.可以解决html代码对样式定义的重复,提高了后期样式代码的可维护性,并增强了网页的显示效果功能.简 ...