简单封装的Stripe支付方法
2017-12-13 10:51
666 查看
最近项目需要用到Stripe支付,于是做了一个简单封装,现在贴出来,也许以后用得着
首先,需要在Stripe官方网站申请注册自己的支付帐号,并获取测试和正式用的前后端校验码。
然后,项目后台需要添加Stripe的dll引用,可以用Nuget安装Stripe.net,也可以自己下载dll然后直接添加引用,这里不赘述了。
需要提醒的是,测试用的银行卡信息如下:
卡号:4242 4242 4242 4242, 到期时间12/19, 校验码:123
首先,当然是引用stripe的js文件:
<script type="text/javascript" src="https://checkout.stripe.com/checkout.js"></script>
好了,再看前端的js封装对象:
var myStripe = {
testKey: 'pk_test_xxxxxxxxxxxxxxxxxxxxxx',
payKey: 'pk_live_yyyyyyyyyyyyyyyyyyyyyy',
logoImg: "/Images/marketplace.png",
changeHandler: function (f) {
return StripeButton.configure({
key: this.testKey,
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) {
f.email = token.email;
f.tokenId = token.id;
f.callback(f);
}
});
},
payHandler: function (f) {
return StripeCheckout.configure({
key: this.testKey,
name: f.title || 'Payment',
email:f.Email || '',
currency: f.currency || 'cad',
amount: f.amount || 0,
allowRememberMe: false,
image: f.logoImg || this.logoImg,
locale: 'auto',
token: function (token) {
f.tokenId = token.id;
f.email = token.email;
f.callback(f);
}
});
},
changeCard: function (f) {
this.changeHandler(f).open();
},
pay: function (f) {
this.payHandler(f).open();
}
}
再贴调用举例:
//支付
$('#btnPay').on('click', function () {
myStripe.pay({
title: 'Pay for shop service',
currency:'cad',
amount: pay.amount,
callback: function (p) {
var dt = {
TokenID: this.tokenId,
Amount: 6500,
Email: this.email
}
vivaAjax('/Base/StripePay', dt, null, function (re) {
if (re.Code == 'Success') {
alert('Pay successful!');
} else {
alert(re.Message);
}
});
}
});
});
//换卡
$('#btnChangeCard').on('click', function () {
myStripe.changeCard({
title: 'Change Card for Stripe Pay',
callback: function (p) {
var dt = {
TokenID: this.tokenId,
Email: this.email
}
vivaAjax('/Base/StripeChangeCard', dt, null, function (re) {
if (re.Code == 'Success') {
alert('Change card successful!');
} else {
alert(re.Message);
}
});
}
});
});
最后是后台方法:
如果对大家有用,欢迎收藏,如有问题,也请及时跟我联系或留言
首先,需要在Stripe官方网站申请注册自己的支付帐号,并获取测试和正式用的前后端校验码。
然后,项目后台需要添加Stripe的dll引用,可以用Nuget安装Stripe.net,也可以自己下载dll然后直接添加引用,这里不赘述了。
需要提醒的是,测试用的银行卡信息如下:
卡号:4242 4242 4242 4242, 到期时间12/19, 校验码:123
首先,当然是引用stripe的js文件:
<script type="text/javascript" src="https://checkout.stripe.com/checkout.js"></script>
好了,再看前端的js封装对象:
var myStripe = {
testKey: 'pk_test_xxxxxxxxxxxxxxxxxxxxxx',
payKey: 'pk_live_yyyyyyyyyyyyyyyyyyyyyy',
logoImg: "/Images/marketplace.png",
changeHandler: function (f) {
return StripeButton.configure({
key: this.testKey,
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) {
f.email = token.email;
f.tokenId = token.id;
f.callback(f);
}
});
},
payHandler: function (f) {
return StripeCheckout.configure({
key: this.testKey,
name: f.title || 'Payment',
email:f.Email || '',
currency: f.currency || 'cad',
amount: f.amount || 0,
allowRememberMe: false,
image: f.logoImg || this.logoImg,
locale: 'auto',
token: function (token) {
f.tokenId = token.id;
f.email = token.email;
f.callback(f);
}
});
},
changeCard: function (f) {
this.changeHandler(f).open();
},
pay: function (f) {
this.payHandler(f).open();
}
}
再贴调用举例:
//支付
$('#btnPay').on('click', function () {
myStripe.pay({
title: 'Pay for shop service',
currency:'cad',
amount: pay.amount,
callback: function (p) {
var dt = {
TokenID: this.tokenId,
Amount: 6500,
Email: this.email
}
vivaAjax('/Base/StripePay', dt, null, function (re) {
if (re.Code == 'Success') {
alert('Pay successful!');
} else {
alert(re.Message);
}
});
}
});
});
//换卡
$('#btnChangeCard').on('click', function () {
myStripe.changeCard({
title: 'Change Card for Stripe Pay',
callback: function (p) {
var dt = {
TokenID: this.tokenId,
Email: this.email
}
vivaAjax('/Base/StripeChangeCard', dt, null, function (re) {
if (re.Code == 'Success') {
alert('Change card successful!');
} else {
alert(re.Message);
}
});
}
});
});
最后是后台方法:
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; }
如果对大家有用,欢迎收藏,如有问题,也请及时跟我联系或留言
相关文章推荐
- java 导出excel封装了一个简单的导出方法。
- 把vc中的类封装成dll的简单方法
- 简单封装okhttp的post方法
- 封装的简单支付 微信支付宝
- 简单是否的简单封装方法
- 封装函数时候,函数内分配内存简单管理方法。
- easyUI的省市联动(用它封装好的方法会比较简单但是老是感觉有点局限性也许是我想多了)
- 做swing程序中遇到使用消息提示框的,JOptionPane类其中封装了很多的方法。 很方便的,于是就简单的整理了一下。 1.1 showMessageDialog 显示一个带有OK 按钮的模态
- FE - Weex 使用简单封装数据加载插件为全局加载方法
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- javascript封装简单实现方法
- Sqlite3 数据库介绍及常用方法的简单封装
- 对AFNetworking简单封装GET,POST请求(block方法)
- 基于Live555的封装H264裸流为Ts流笔记(H264转ts流最简单方法)
- Sqlite3 数据库介绍及常用方法的简单封装
- 把vc中的类封装成dll的简单方法
- Python操作Oracle数据库的简单方法和封装类实例
- Java语言 封装创建 简单工厂方法(Simple Factory method)
- 简单封装的doc4j工具类方法的简单封装
- 如何简单的下载一些小文件并保存在一个路径中(有些方法进行了封装)