Javascript 不处理条带签出节点的付款
我的付款不是通过stripe处理的,我已经按照我想要的方式设置了所有内容,stripe实际上会在我输入信用卡详细信息等之后重定向到我设置的成功页面。但问题是,它实际上没有处理请求。我进入stripe仪表板,它显示自昨天以来没有任何活动,并且没有处理、取消或不完整的新付款。我也会收到一封来自stripe的电子邮件作为付款收据,如果付款通过了,但什么也没有。代码如下(对代码混乱表示歉意) index.js(后端节点代码)Javascript 不处理条带签出节点的付款,javascript,node.js,stripe-payments,Javascript,Node.js,Stripe Payments,我的付款不是通过stripe处理的,我已经按照我想要的方式设置了所有内容,stripe实际上会在我输入信用卡详细信息等之后重定向到我设置的成功页面。但问题是,它实际上没有处理请求。我进入stripe仪表板,它显示自昨天以来没有任何活动,并且没有处理、取消或不完整的新付款。我也会收到一封来自stripe的电子邮件作为付款收据,如果付款通过了,但什么也没有。代码如下(对代码混乱表示歉意) index.js(后端节点代码) app.post('/create checkout session',异步(
app.post('/create checkout session',异步(req,res)=>{
var金额=字符串化(请求正文)
console.log(请求主体sessionID)
var userId=req.body.sessionID
console.log(“电子邮件:+req.body.deliveryDate”)
var email=req.body.customer\u email;
var deliveryTotal=req.body.totalWithDelivery;
var totalVal=金额。拆分(“”);
var totalPrice=parseFloat(totalVal[1]);
//控制台日志(“总价:+totalPrice”);
var finalPrice=parseFloat(数学四舍五入(总价*100)/100);
var finalTotal=parseFloat(数学轮(totalPrice*100)/100)+parseFloat(数学轮(deliveryTotal));
控制台日志(“最终总计:+finalTotal”);
var itemName=“”
var itemPrice=“”
var totalNewPriceTest=“”
//定义数组
var productsArray=[];
var priceArray=[];
//对数据库的查询
var productsStripe=“选择*自”+用户ID
console.log(用户ID)
log(“查询db以在条带页面上显示购物车”)
ibmdb.open(“数据库=BLUDB;主机名=dashdb-txn-sbox-yp-dal09-14.services.dal.bluemix.net;端口=50000;协议=TCPIP;UID=;PWD=”,函数(错误,连接){
if(err)返回console.log(err);
conn.query(ProductsTripe,异步函数(err,行){
如果(错误){
console.log(错误)
}
console.log(行)
对于(变量i=0;i{
返回{
价格数据:{
货币:"加元",,
产品数据:{
名称:产品,
},
单位金额:帕塞因特(价格数组[i],10)*100,
},
数量:1,
};
});
const session=wait stripe.checkout.sessions.create({
装运地址和收集地址:{
允许的国家:['CA'],
},
付款方式类型:[“卡”],
第_行项目:项目,
方式:‘付款’,
成功链接:'https://floralfashionboutique.com/successPg',
取消url:'https://floralfashionboutique.com/catalogue',
});
console.log(会话)
res.json({id:session.id});
//console.log(“客户id”+客户id)
log(“totalNewPriceTest”+totalNewPriceTest)
})
})
});
checkout.ejs(前端条带脚本)
//使用可发布的API密钥创建条带对象的实例
风险条带=条带('pk_测试_51HWIM4ICSAKA9FJ8EYFD72IHT4QEUI3SEGMTOV6WNLYPvFQ9KE0EGC8RX6NSWSFB85C4UMPQ1DOUBF9RGOLGx00XBNKPEE');
var checkburatton=document.getElementById('checkout-button');
var total=document.getElementById('totalPrice');
var deliveryTotal=document.getElementById('deliveryRegionPrice');
var userId=document.getElementById('sessionID');
var delDate=document.getElementById('datepicker')。值;
警报(delDate);
var deliveryDate=delDate.value
var totalVal=总价值;
var totalWithDelivery=deliveryTotal.value;
var sessionID=userId.value;
//totalVal=totalVal.toFixed(2);
警报(totalVal)
CheckExutton.addEventListener('单击',函数()){
//使用您需要的服务器端端点创建新的签出会话
//在步骤3中创建。
获取(“/create签出会话”{
方法:“POST”,
标题:{'Content-Type':'application/json'},
正文:JSON.stringify({
totalVal,
全部交付,
会话ID,
交货日期,
//姓名:“gianluca”,
//用户ID:123,
}),
})
.然后(功能(响应){
返回response.json();
})
.然后(功能(会话){
返回stripe.redirectToCheckout({sessionId:session.id});
})
.然后(函数(结果){
//如果“redirectToCheckout”由于浏览器或网络而失败
//错误,您应该将本地化的错误消息显示给您的
//使用“error.message”的客户。
if(result.error){
警报(结果、错误、消息);
}
})
.catch(函数(错误){
console.error('error:',error);
});
});
如果有人能找到这里的问题,请告诉我。第一次与stripe合作:(谢谢你
app.post('/create-checkout-session', async (req, res) => {
var amount = stringify(req.body)
console.log(req.body.sessionID)
var userId = req.body.sessionID
console.log("email: " + req.body.deliveryDate)
var email = req.body.customer_email;
var deliveryTotal = req.body.totalWithDelivery;
var totalVal = amount.split("=");
var totalPrice = parseFloat(totalVal[1]);
//console.log("TOTAL PRICE: " + totalPrice);
var finalPrice = parseFloat(Math.round(totalPrice * 100) / 100);
var finalTotal = parseFloat(Math.round(totalPrice * 100) / 100) + parseFloat(Math.round(deliveryTotal));
console.log("final total: " + finalTotal);
var itemName = ""
var itemPrice = ""
var totalNewPriceTest = ""
//defining arrays
var productsArray = [];
var priceArray = [];
//query to database
var productsStripe = "select * from " + userId
console.log(userId)
console.log("query to db for displaying cart on stripe page")
ibmdb.open("DATABASE=BLUDB;HOSTNAME=dashdb-txn-sbox-yp-dal09-14.services.dal.bluemix.net;PORT=50000;PROTOCOL=TCPIP;UID=;PWD=", function (err,conn) {
if (err) return console.log(err);
conn.query(productsStripe, async function (err, rows) {
if (err) {
console.log(err)
}
console.log(rows)
for(var i = 0; i < rows.length; i++) {
// itemName = rows[i]['ITEM']
// itemPrice = rows[i]['PRICE']
totalNewPriceTest = parseFloat(rows[i]['PRICE'])
console.log("item name : " + itemName + " " + itemPrice )
totalNewPriceTest = parseFloat(totalNewPriceTest);
console.log("final overall prcie: " + (totalNewPriceTest))
//inserting items and prices into arrays
productsArray.push(rows[i]['ITEM'])
priceArray.push(rows[i]['PRICE'])
console.log("ARRAY " + productsArray)
console.log("PRICE ARRAY " + priceArray)
}
console.log("inside productsStripe function.")
console.log("overall prcie: " + totalNewPriceTest)
totalNewPriceTest = parseFloat(totalNewPriceTest)
var grandTotal = totalNewPriceTest;
var finalGrandTotal = parseFloat(grandTotal)
console.log(parseFloat(finalGrandTotal))
//stripe
// loop over products array to construct the line_items
const items = productsArray.map((product, i) => {
return {
price_data: {
currency: 'CAD',
product_data: {
name: product,
},
unit_amount: parseInt(priceArray[i], 10) * 100,
},
quantity: 1,
};
});
const session = await stripe.checkout.sessions.create({
shipping_address_collection: {
allowed_countries: ['CA'],
},
payment_method_types: ['card'],
line_items: items,
mode: 'payment',
success_url: 'https://floralfashionboutique.com/successPg',
cancel_url: 'https://floralfashionboutique.com/catalogue',
});
console.log(session)
res.json({ id: session.id });
//console.log("customer id" + customer.id)
console.log("totalNewPriceTest " + totalNewPriceTest)
})
})
});
<script type="text/javascript">
// Create an instance of the Stripe object with your publishable API key
var stripe = Stripe('pk_test_51HWim4ICsAKa9fJ8eYfD72iht4QeUi3sEGMtOvv6WNLyPYPVfq9Ke0EGc8rX6nSWSfB85c4uMpQ1doUbF9rGOlGx00XbnkKpee');
var checkoutButton = document.getElementById('checkout-button');
var total = document.getElementById('totalPrice');
var deliveryTotal = document.getElementById('deliveryRegionPrice');
var userId = document.getElementById('sessionID');
var delDate = document.getElementById('datepicker').value;
alert(delDate);
var deliveryDate = delDate.value
var totalVal = total.value;
var totalWithDelivery = deliveryTotal.value;
var sessionID = userId.value;
//totalVal = totalVal.toFixed(2);
alert(totalVal)
checkoutButton.addEventListener('click', function() {
// Create a new Checkout Session using the server-side endpoint you
// created in step 3.
fetch('/create-checkout-session', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
totalVal,
totalWithDelivery,
sessionID,
deliveryDate,
// name: 'gianluca',
// userid: 123,
}),
})
.then(function(response) {
return response.json();
})
.then(function(session) {
return stripe.redirectToCheckout({ sessionId: session.id });
})
.then(function(result) {
// If `redirectToCheckout` fails due to a browser or network
// error, you should display the localized error message to your
// customer using `error.message`.
if (result.error) {
alert(result.error.message);
}
})
.catch(function(error) {
console.error('Error:', error);
});
});
</script>