简单封装的Stripe支付方法
来源:互联网 发布:在淘宝开店流程 编辑:程序博客网 时间:2024/06/04 18:41
最近项目需要用到Stripe支付,于是做了一个简单封装,现在贴出来,也许以后用得着
首先,需要在Stripe官方网站申请注册自己的支付帐号,并获取测试和正式用的前后端校验码。
然后,项目后台需要添加Stripe的dll引用,可以用Nuget安装Stripe.net,也可以自己下载dll然后直接添加引用,这里不赘述了。
需要提醒的是,测试用的银行卡信息如下:
卡号:4242 4242 4242 4242, 到期时间12/17, 校验码:123
好了,先贴前端的的js封装对象:
var myStripe = { testKey: 'pk_test_tttttttttttttttttttttttt',//注册后得到的前端测试校验码 payKey: 'pk_live_llllllllllllllllllllllll', //注册后得到的前端正式校验码 logoImg: "/Images/marketplace.png", ajaxPost: function (dt, f) { $.ajax({ url: f.link, type: "post", cache: false, data: dt, success: function (re) { f.callback && f.callback(re); }, error: function () { alert("System Error, Please Contact Admin!"); } }); }, changeHandler: function (f) { return StripeButton.configure({ key: this.testKey, //正式使用时用payKey image: f.logoImg ||this.logoImg, name: f.title || 'Update Card Detail', panelLabel: f.button || 'Submit', allowRememberMe: false, locale: 'auto', dataKey: this.testKey, token: function (token) { StripePay.ajaxPost({ Email: token.email, TokenId: token.id }, f); } }); }, payHandler: function (f) { return StripeCheckout.configure({ key: this.testKey,//正式使用时用payKey name: f.title || 'Payment', currency: f.currency || 'cad', amount: f.amount || 0, allowRememberMe: false, image: f.logoImg || this.logoImg, locale: 'auto', token: function (token) { StripePay.ajaxPost({ Email: token.email, TokenId: token.id, Amount: f.Amount }, f); } }); }, show: function (handler) { if ($('head').find('#stripe_js').length < 1) { var _doc = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.setAttribute('id', 'stripe_js'); script.setAttribute('type', 'text/javascript'); script.setAttribute('src', 'https://checkout.stripe.com/checkout.js'); _doc.appendChild(script); script.onload = script.onreadystatechange = function () { if (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') { handler.open(); } script.onload = script.onreadystatechange = null; } } else { handler.open(); } }, changeCard: function (f) { this.show(this.changeHandler(f)); }, pay: function (f) { this.show(this.payHandler(f)); }}再贴调用举例:
//支付$('#btnPay').on('click', function () { myStripe.pay({ url: '/Base/StripePay', amount: 9900, callback: function (re) { if (re.Code == 'Success') { alert('Pay successful!'); } } });});//换卡$('#btnChangeCard').on('click', function () { myStripe.changeCard({ action: 'StripeChangeCard', callback: function (re) { if (re.Code == 'Success') { alert('Change card successful!'); } } });});
最后是后台方法:
using Stripe; /// <summary> /// 支付 /// </summary> /// <param name="email"></param> /// <param name="tokenId"></param> /// <param name="ammount"></param> /// <returns></returns> public ReturnMsg StripePay(string email, string tokenId, int ammount) { //第一次充值,创建用户充值帐号 if (string.IsNullOrWhiteSpace(User.ChargeID)) { var customers = new StripeCustomerService("sk_test_xxxxxxxxxxxxxxxxxxxxxxx");//测试用后台校验码,注意,后台校验码也分测试和正式 var customer = customers.Create(new StripeCustomerCreateOptions { Email = email, SourceToken = tokenId }); User.ChargeID = customer.Id; //本地保存的凭证,避免本地存储用户敏感信息 } //充值 var charges = new StripeChargeService("sk_test_xxxxxxxxxxxxxxxxxxxxxxx"); var charge = charges.Create(new StripeChargeCreateOptions { Amount = ammount, Currency = "cad", CustomerId = User.ChargeID }); if (charge.Status == "succeeded") {//充值成功 } else {//充值失败 ReMsg.Type = MessageType.AmountPayError; } return ReMsg; } /// <summary> /// 换卡 /// </summary> /// <param name="email"></param> /// <param name="tokenId"></param> /// <returns></returns> public ReturnMsg StripeChangeCard(string email, string tokenId) { var customers = new StripeCustomerService("sk_test_xxxxxxxxxxxxxxxxxxxxxxx"); var customer = customers.Create(new StripeCustomerCreateOptions { Email = email, SourceToken = tokenId }); User.ChargeID = customer.Id; //本地保存的凭证,避免本地存储用户敏感信息 return ReMsg; }如果对大家有用,欢迎收藏,如有问题,也请及时跟我联系或留言
阅读全文
0 0
- 简单封装的Stripe支付方法
- 封装的简单支付 微信支付宝
- stripe 海外支付
- stripe支付 charge
- 简单的MVC封装方法
- 简单是否的简单封装方法
- 简单封装的doc4j工具类方法的简单封装
- Ping++支付的封装
- vc封装dll类的简单方法
- 解析xml几个方法的简单封装
- 简单封装okhttp的post方法
- easyui一些简单的封装方法
- 简单封装本地存储的方法
- React Js 微信支付 简单封装
- 在线支付公司Stripe的服务发现架构设计过程分享
- tp3.2中微信支付中将调用支付处简单封装
- 微信支付和支付宝支付的封装
- 简单封装$.ajax() 方法
- Ubuntu16.04下使用autotools生成Makefile
- C# DataTable数据量大,循环处理数据的时候优化速度
- Mac下PDF转EPS的方法
- 默认选中select 第一个option
- djangoReview(一)
- 简单封装的Stripe支付方法
- 最短路(Floyd、Dijstra,BellmanFord)
- 关于在MyEclipse中启动项目报错找不到ThreadLocalErrorLogAppender 的解决办法
- springMvc注解@RequestParam用法解析
- C#多线程和线程池
- Jena的简单理解和一个例子
- 基础练习 BASIC-1 闰年判断(c语言)
- js的异常处理 try...catch
- PXE 自动化运维