您好我是我的应用程序集成支付GateWay但我被卡住了。对于鳕鱼(货到付款)支付方式,它工作正常。但在集成在线支付网关时,有点痛苦,就像我在创建链接时使用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,请为此建议库
答案 0 :(得分:0)
您无需创建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