一、由于文档丢失原因,我就直接上代码了。

这个Stripe支付可以支持多个币种,我下面就采用"HDK"来参照支付先上一个支付效果图

提示:先上代码,在说明博主自己理解的流程。

一、前端代码如下:请求的是ashx后台一般处理程序(C# asp)

myStripe.pay({

title: 'Soonnet Web Site',

currency: 'HKD',

amount: * 100,//这里为什么要 * 100 呢 因为这个钱默认他们打了1折扣,具体忘记为什么了,好像只有港币这样。

callback: function (p) {

var dt = {

TokenID: this.tokenId, //这个是必须的,下面的四个参数根据自身业务确认

//Amount:6300,

Email: this.email,

"MasterGroupType": getQueryString("GT"),

"Mmail": getQueryString("E"),

"RunId": getQueryString("R")

}

$.ajax({

url: "/ReasontoRun/Running.ashx?method=paypal&PayType=1",//支付类型

method: "post",

data: dt,

async: false,

success: function (data) {

if (data.success) {

location.href = "/ReasontoRun/success.html?W=IsSUC";

} else {

layer.msg(data.msg);

}

},

error: function () {

}

})

}

});

var myStripe = {

testKey: '',

logoImg: "https://stripe/img/documentation/checkout/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) {

layer.closeAll(0);

return StripeCheckout.configure({

key: this.testKey,

name: f.title || 'REASON TO RUN 2.0 報名費用',

email: f.Email || '',

currency: f.currency || 'twd',

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();

},

SendMsg: function (uid) {

var message = {};

message.action = "noticeMember";

message.code = 1;

message.uid = uid;

message.msg = "

已有用戶購買你的相片! ";

socketApi.sendMessage(message);

}

}

注:如有遗漏评论区诶特,或者加群联系。

二、上后台代码,这里只上部分代码。(用到的,避免混淆)

非常的简单

Stripe.StripeConfiguration.SetApiKey(ConfigurationManager.AppSettings["pk_liveSecretKey"]);

var options = new Stripe.ChargeCreateOptions

{

Amount = Convert.ToInt64(GetMoney(codeModel, money, thisCart)) * 100,

Currency = CurrencyCode.HKD.ToString().ToLower(),

SourceId = Paymodel.stripeToken,

Description = "支付尋寶網-網站-" + Paymodel.Description,

ReceiptEmail = Paymodel.stripeEmail,

};

var service = new Stripe.ChargeService();

Stripe.Charge charge = service.Create(options);

//var options2 = new PayoutCreateOptions

//{

// Amount = Convert.ToInt64(model.PayAmount),

// Currency = "usd",

//};

//var service2 = new PayoutService();

//Payout payout = service2.Create(options2);

return new ChargeModel

{

SourceId = charge.Source?.Id,

Status = charge.Status,

payEmail = charge.ReceiptEmail,

Id = charge.Id,

tranPayId = charge.BalanceTransactionId

};

结果得到的是 success 就是支付成功了,这里只做了对接支付,没对接根据流水去查询。

三、支付流程就是点击按钮就调用myStripe.pay函数去生成token,然后会调用里面的callback方法进行回调在进入到你的后台代码(此处自身理解,有错请指点)

欢迎加入群聊,期待更多的小伙伴加入,本群刚创立初期。人少,楼主想结合一下所有人的力量做一个1.0版本的快速开发框架, 比如ABP类似的。

更多推荐

php集成Stripe支付插件,Stripe支付对接