您的位置:首页 > 其它

简单封装的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);
}
});
}
});
});


最后是后台方法:

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;
}



如果对大家有用,欢迎收藏,如有问题,也请及时跟我联系或留言
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  支付 .net Stripe
相关文章推荐