2016-07-04 2 views
0

안녕하세요, 저는 통합 결제 GateWay를 내 앱에 사용하고 있지만 막혀 있습니다. 대구 (지불시 현금) 모드로 잘 작동하고 있습니다. 그러나 통합 온라인 지불 게이트웨이에서 링크가 성공적으로 생성되면 결제 링크를 생성하는 것처럼 고통 스럽습니다. 나는 클라이언트에게 그 지급 링크를 반환하고 링크로 사용자를 리디렉션nodejs와 mongodb에서의 GateWay 통합

1 사용자가 성공적으로 카드 세부 사항을 채우고 instamojo 결제 정보 추가 제공으로 webhook (포스트 URL)를 안타 사용자가 탭을 취소 여부를

을 지불 않는 경우 어떻게 2

질문은 여기 데이터베이스에서 순서대로 만들어야합니다. 내 응용 프로그램의 placeorder url에서 작성해야하는 경우 주문 상태가 불완전하게 설정되어 있어야하고 두 번째 조건 (주문이 이미 생성되어 webhook이 intamojo에 부딪치지 않았기 때문에)으로 cron 작업을 실행해야합니다. 그것은 할 올바른 방법 또는 내가 크론 작업을 작성해야하는 경우

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 작업을 만들 필요가 없습니다 그

답변

0

에 대한 라이브러리를 제안 처리하기 위해 다른 더 나은 방법이있다 .

먼저 데이터베이스에 주문을 만들고 create a requestpurpose 매개 변수에 주문 ID를 전달하여 지불 요청을 고유하게 식별 할 수 있습니다. 요청을 만들 때 redirect_urlwebhook을 입력하십시오.

임의의 지불 후 payment_request_idpayment_id은 제공된 redirect_url으로 전송됩니다. payment의 상태를 얻을 수

사용 payment_request_idpayment_id는 응답은 데이터베이스의 상태를 업데이트 할 수 payment: { ... ,status, ... } 사용이있을 것이다.

사용자가 실수로 브라우저 창/탭을 닫고 redirect_url에 도달하면 webhook을 폴백으로 사용할 수 있습니다.

자세한 내용은 documentation

을 참조하십시오.