嗨,我是集成支付GateWay到我的应用程序,但我被卡住了。对于cod(货到付款)支付模式,它是工作的fine.but,而在集成在线支付网关中,它给人一点痛苦,就像我使用instamojo创建支付链接一样,当链接创建成功时;我将该支付链接返回给客户端,并将用户重定向到该链接
1如果用户成功地填写了卡的详细信息,并且instamojo使用付款详细信息点击了我提供的webhook(post url) 2如果用户取消标签或不付款怎么办
这里的问题是在哪里应该在数据库中创建订单。如果它是在我的应用程序的placeorder url上创建的,那么我需要设置订单状态不完整,并为第二个条件运行cron作业(因为订单已经创建,webhook不会被intamojo击中)。这是正确的方法吗?还是有其他更好的方法来处理这一切
Promise.all([getUpdatedCart(userId), findUser(userId), getDiscount(userId,couponCode)])
.then(function(resultArray) {
var cart = resultArray[0];
var user = resultArray[1];
var discountAmount = resultArray[2];
var offerId=null;
if (!cart)
return sendResponse(response,400,"error","Cart Not Found");
if (discountAmount>0)
var offerId=getOfferId(couponCode);
var order = {
user: user._id,
cart: cart._id,
shippingAddress:shippingAddressId,
billingAddress:billingAddressId,
paymenMethod: paymentMethod,
offer:offerId,
deliveryNote:deliveryNote,
amount:cart.amount
};
var newOrder = Order(order);
if (paymentMethod==='cod')
newOrder.save(function(error,order){
if (!error)
if (order){
Cart.expireCart(cart._id);
return sendResponse(response,201,"success",order);
}
});
else if(paymentMethod==='intamojo'){
var purpose='Order Number-'+ newOrder.id;
Instamojo.setHeaders(InstaConfig.test.API_KEY, InstaConfig.test.API_AUTH_TOKEN);
var amountPayable = cart.amount - discountAmount;
var data = generatePayload(user, purpose, amountPayable);
Instamojo.createPaymentLink(data, function(error, resultResponse, body) {
if (resultResponse && body && resultResponse.statusCode===201)
return sendResponse(response,200,"success",body.longUrl+"?embed=form");
});
}
else if(paymentMethod==='payumoney'){
}
else
return sendResponse(response,400,"error","Invalid Mode of Payment");
})
.catch(function(error) {
return sendResponse(response,400,"error",error);
});如果我需要写cron job,有没有人可以帮我,请给我推荐的库
发布于 2016-07-05 15:18:29
您不需要创建cron作业。
您可以先在数据库中创建订单,然后通过create a request传递purpose中的orderID参数来唯一标识支付请求。在创建请求时提供redirect_url和webhook。
在任何付款后,payment_request_id和payment_id被发送到提供的redirect_url。
使用payment_request_id和payment_id来获取payment的状态,响应将让payment: { ... ,status, ... }使用它来更新数据库中的状态。
如果用户在浏览器窗口/选项卡到达redirect_url之前意外地将其关闭,则可以使用webhook作为备用。
有关更多详细信息,请阅读documentation
https://stackoverflow.com/questions/38183624
复制相似问题