본문 바로가기
Android

무통장 입금 자동 확인 SMS 안드로이드 앱 android & Firebase

by xavi2019 2019. 7. 13.

 

쇼핑몰을 운영하는 분들은, 신용카드나 가상계좌가 아니라 일반 무통장 입금의 경우, 자동으로 결제완료처리가 안되어 보통은 사람이 수작업으로 하고 있습니다. (물론 이걸 대행해주는 서비스가 있긴 합니다)

 

개발팀을 보유하고 있다면 무통장 입금 문자 알림을 '안드로이드 폰'으로 받게하고 앱(가칭 '금대리' 앱)을 만들면 쉽게(사실 쉽지는 않습니다) 입금확인 처리가 가능합니다.

 

보통 아래와 같이 처리하면 되죠.

 

먼저, '금대리' 앱을 만들어서 기본 SMS 수신 앱처리를 하여 폰이 리부팅되어 '금대리'앱이 실행중이 아니더라도 문자를 처리할 수 있게 합니다. 

 

서버에서는 입금자와 금액을 파라미터로 받아서, DB를 조회하여 같은 주문이 있는지 확인하여 입금처리를 해주는 API를 만듭니다. 이 때, API는 아무나 접근할 수 있으므로 악용을 방지하기 위해 API 보안처리(예: 키 발급 & AES256암호화)를 해야합니다.

 

입금일, 주문일도 같이 비교하여 입금처리가 되었다면, 배송담당자에게 '결제완료 & 배송지시'를 하는 문자 or 이메일 or 카톡알림 을 입맛에 맞게 연동하면 됩니다.

 

 

여기에 기능을 더 붙여 보자면, Firebase를 이용하면 더욱 풍요로운 기능을 구현할 수 있습니다.

 

 

1. 문자 백업기능,

문자가 올 때마다 Firebase의 DB인 Cloud FireStore에 저장을 하게 합니다.

// FireStore에 데이터 저장
db.collection("orginal")
        .add(sms_message_2DB)
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "Error adding document", e);
            }
        });

 

 

 

2. Push 알림 보내기

FireStore에 데이터가 입력되면, Firebase의 Functions를 이용하여 다른 직원의 폰으로 입금 되었다는 Push 알림을 FCM을 이용해 보내봅니다.(물론 SMTP설정을 잘 해서 메일로 발송도 가능합니다) 관련 포스트

admin.messaging().sendToDevice(tokens, payload)
.then(function(response) {
    // See the MessagingDevicesResponse reference documentation for
    // the contents of response.
    console.log('Successfully sent message:', response);
})
.catch(function(error) {
    console.log('Error sending message:', error);
});

 

 

 

3. 다른 폰에서 문자 입금 내역 조회

금대리 앱을 더 발전시켜, 다른 폰에서 문자 입금 내역을 확인합니다.

Query query = db.collection("bankData").orderBy("createdDate", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<BankData> response = new FirestoreRecyclerOptions.Builder<BankData>()
        .setQuery(query, BankData.class)
        .build();

 

 

 

전체적인 그림은 아래와 같습니다.

 

 

잘 생각해보면 여러가지로 응용이 가능 하실겁니다.

 

 

댓글