Coder Social home page Coder Social logo

iamport-manual's People

Contributors

acidsound avatar aimpugn avatar bexoss avatar elijah74 avatar jangbora avatar kdino avatar khj309 avatar kian2727 avatar kjh5833 avatar kwonsunhyun avatar leehankyeol avatar lens0021 avatar luritas avatar martin-jeon avatar moonjihae avatar ryush00 avatar shlee322 avatar soleechoi avatar sonnyson17 avatar soobach avatar thverse-testvalley avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iamport-manual's Issues

m_redirect_url이 존재하나 이미 결제된 건의 재요청시 해당 에러 메시지 확인 방법

@jangbora 님과 메일로 주고 받은 내용이나 진행상황 확인 및 다른 개발자분들과 의견 교류 목적으로 이슈를 발급합니다.

원래 질문

모바일에서 m_redirect_url이 호출되지 않는 경우가 있습니다.
해당 경우는 이미 결제가 된 사항을 다시 요청했을 때 입니다.

이런 경우 m_redirect_url 리다이렉트 되면서 결과가 전달되는 것이 아니라 callback으로만 전달 됩니다.

{"{\"success\":false,\"request_id\":\"req_xxxxxxxx\",\"error_code\":\"F1002\",\"error_msg\":\"이미 결제가 이루어진 거래건입니다.\"}":""}

@jangbora 님 답변

모바일 결제(PC결제 제외)에서 IMP.request_pay(param, callback) 시 callback이 선언되어있지 않다면 강제로 m_redirect_url로 동일하게 받으실 수 있도록 인터페이스를 변경하면 어떨까요?

추가적인 제 의견

이에 동의 합니다.

  • 우선적으로 동일한 인터페이스라는 점과
  • 앱의 webview내부에서 앱(네이티브)로 데이터를 보낼 때 url을 이용하는 방법이 널리쓰이고 있으니
    “m_redirect_url”로 통일하는데 찬성합니다.

콜백 호출 순서 문의

안녕하세요? 웹뷰로 구현시 순서 질문입니다.

IMP.request_pay({
   /**/
    m_redirect_url : 'https://www.yourdomain.com/payments/complete',
    app_scheme : 'iamportapp'
}, function(rsp) {
  /*콜백함수 동작 */
});

request_pay() 실행이후

  1. 콜백함수가 실행된 후 m_redirect_url로 이동하는 것인가요?
  2. 아니면 둘 다 비동기로 실행되는 것인가요?

WebView 53에서 iamport.payment.js 로드 실패

Android WebView 53버전에서 WebView(Google)버그로 인해 symantec계열의 SSL인증서의 경우 handshake과정에서 오류가 발생하고 있습니다.
아임포트 도메인을 포함하여, 삼성카드, 신한카드 등 에서 symantec계열의 SSL인증서를 사용하고 있어 결제가 이뤄지지 않고 있는 증상이오니, 번거로우시겠지만 WebView 54버전으로 업데이트를 부탁드립니다.

Symantec Notice

Uncaught TypeError: Cannot read property 'request_id' of undefined

  var IMP = window.IMP;
  IMP.init('imp number');

호출 후에 발생하는 문제 같은데요.

아래와 같은 로그가 계속 찍힙니다.

kakaopay:36 Uncaught TypeError: Cannot read property 'request_id' of undefined
paypal:36 Uncaught TypeError: Cannot read property 'request_id' of undefined

결제API 호출시 쿠키관련 이슈 sameSite

테스트 중에 쿠키관련 이슈가 발생하여 문의드립니다.
현재 저희 웹페이지에 조회수 계산을 위한 HTTPServlet Cookie를 사용하고 있습니다.
해당 클래스때문인지 api호출이 계속 실패하는 오류가 발생하는데요..
어떻게 해결이 가능할지 문의드립니다.
관련 이미지 첨부드립니다.
image

매뉴얼 README.md에서 iamport.payment-x.y.z.js 버전 관리

안녕하세요, 전부터 아임포트 잘 사용하고 있는 개발자입니다.
아래 두 내용과 관련해서 이슈 남깁니다.

iamport-manual/인증결제/javascript-version.md 파일 에서 iamport.payment-x.y.z.js 파일이 제가 확인해봤을 땐 iamport.payment-1.2.0.js 파일까지 cdn에 올라온 걸로 확인되는데 1.1.5 버전 이후로 업데이트가 갱신이 안 돼서, 개인적인 생각으로는 1.1.5 버전 이후 로직 개선과 퍼포먼스 외에 큰 변화가 없는 것인지 궁금합니다.

iamport-manual/SMS본인인증/README.md 파일에도 마찬가지로 내용에 iamport.payment-1.1.4.js 1.1.4 버전에 머물러 있어서, 해당 내용 바로 아래에 iamport-manual/인증결제/README.md 내용을 차용해서

1.2 아임포트 javascript 설치

<script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-x.y.z.js"></script>

iamport.payment.js 버전별 차이점
단, SMS 본인인증 기능은 iamport-payment.js 1.1.4 버전부터 SMS본인인증기능이 제공됩니다.

으로 내용을 변경하는 건 어떨까요?
SMS본인인증 README는 내용 동의하시고 바쁘시다면 제가 PR 올려도 괜찮을까요?

감사합니다 :)

가상계좌 결제 관련 문의

메뉴얼에 보면 아래처럼 되어있는데요.

vbank_due string 가상계좌 입금기한 undefined (선택항목) YYYYMMDDhhmm 형식 1.0.0부터
  1. 실제로는 무조건 자정까지 계좌가 열려있는 것 같던데 어떤게 정확한건가요?
  2. 그렇다면 밤 11시쯤 가상계좌를 신청하는 경우에는 1시간 미만 내에 입금이 가능한 형태가 되는건가요?
  3. 1시간 이내에만 가상계좌를 열기 같은 옵션은 따로 둘 수 없는건가요?

[JavaScript SDK] Callback params의 상세내용

현재 통합인증 및 본인인증 서비스를 JavaScript SDK를 활용해 사용 중입니다.

오류 및 여러 변수로 인한 처리를 하고자 합니다. 아임포트 docs에 아래와 같이 기재 돼 있는데, 상세 내용을 알 수 있을까요?
가령, 에러코드의 종류라던지, 인증을 취소하거나 기타 오류등으로 인한 경우, 어떤 내용으로 전달되는지 궁금합니다.

속성* 필수항목 타입 설명
success* boolean 본인인증의 성공여부true/false
error_code* string 본인인증이 실패한 경우 단축 메세지(현재 코드체계는 없음)
error_msg* string 본인인증이 실패한 경우 상세 메세지
imp_uid* string 아임포트 고유 본인인증 번호
merchant_uid* string 가맹점에서 생성/관리하는 고유 주문번호

When using (구) 토스페이먼츠 test PG and cancel Payment window, callback is not executed.

Environment

  • React application on PC
  • jQuery: 1.12.4
  • iamport sdk: 1.1.8 (https://cdn.iamport.kr/js/iamport.payment-1.1.8.js)

Description
When trying to make payments in test mode our code calls iamport method (IMP.request_pay()) but if we cancel the payment window (or close it), the iamport iframe does not disappear and the callback is not called.

Here is how we call it:

  const params = {
        pg: 'uplus.testmuid',
        pay_method: 'card',
        merchant_uid: "order001",
        name: `test product`,
        amount: 10000,
        currency: 'krw',
        buyer_email: "[email protected]",
        buyer_name: "John Doe",
        language: 'ko',
       company: "Super store"
  };

  IMP.request_pay(params, (rsp) => {
    console.log("callback is called!");
  });

When we use nicepay PG in the test mode, we don't have this issue. The iframe is removed and the callback is properly called.

Actual behaviour
The payment window iframe does not disappear when the payment window is closed/cancelled. It leaves semi-transparent overlay over the entire browser viewport.
The callback is not called to notify our app that the payment was cancelled.

** Expected behaviour**
Closing payment window should remove the iframe and the callback should be called.

1.1.5 version bug?

$dialog=jQuery('<div class="imp-dialog customizable"></div>');

에서 $dialog 가 선언되지 않았다고 에러가 나서

var $dialog 로 수정해서 사용중입니다.
이상해서 문의겸 남깁니다.

빌링키 발급 실패

샘플코드대로 입력했는데 아래와 같은 에러가 발생합니다.

"F0004:PG사 결제요청에 실패하여 중단합니다.(imp_741185732086) [코드: V023] 파라미터의 데이터 설정이 잘못되었습니다.[신용카드 본인인증은 계약되지 않은 인증방법입니다.상점에 문의해 주세요.]"

IMP.request_pay({
	pg : "html5_inicis.INIBillTst", // 실제 계약 후에는 실제 상점아이디로 변경
	pay_method : 'card', // 'card'만 지원됩니다.
	merchant_uid : 'merchant_' + new Date().getTime(),
	name : '최초인증결제',
	amount : 0, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다. (모바일에서는 가격이 표시되지 않음)
	customer_uid : 'your-customer-unique-id', //customer_uid 파라메터가 있어야 빌링키 발급을 시도합니다.
	buyer_email : '[email protected]',
	buyer_name : '아임포트',
	buyer_tel : '02-1234-1234'
}, function(rsp) {
console.log(rsp)
	if ( rsp.success ) {
		alert('빌링키 발급 성공');
	} else {
		alert('빌링키 발급 실패');
	}
});

image

핸드폰 번호 필드 문의?

certifications/imp_uid 정보에도 없는거 같은데 어디서 핸드폰 실제 번호는 얻을 수 잇나요?
danal측으로 불려지는 dom값을 얻어온다던가, 이쪽 form에서 입력받은 핸드폰 번호를 넘겨준다던가
하는 방식은 없나요?

콜백요청 문의입니다.

도입하기전이고 반응형 웹으로 구현할생각인데 pc화면에서 m_redirect_url을 준다면 동작이 어떻게 되나요?

IMP.request_pay({
    m_redirect_url : 'https://www.yourdomain.com/payments/complete',
}, function(rsp) {

});

기대하는 동작은 m_redirect_url을 무시하고 결제화면 띄워진후에 성공하면 콜백실행하기를 원하는건데
만약 m_redirect_url을 pc화면에서준다면 예외없이 redirect_url로 이동하나요?

1114 Encryption/decryption failed.

in sand box mode code is working fine while in real time providing CPID ,CPPWD its generating the error
let pay={
pg: "danal_tpay",
pay_method: "card",
escrow: false,
custom_data:[],
merchant_uid: this.params.merchant_uid,
name: this.params.request_count+" inspections on "+ this.params.created_at,
amount: this.params.total_paid,
buyer_email: this.params.user.contact_person_email,
buyer_name: this.params.user.contact_person_name,
buyer_tel: this.params.user.contact_person_phone_number,
PARAM:this.params,
currency:"KRW",
language:"ko",
};
IMP.request_pay(pay, function (rsp) {

its giving Error .1114 Encryption/decryption failed.

iOS 웹뷰 팝업 처리 가이드 추가

이슈 : iOS 웹뷰에서 다날 본인인증 팝업모드(popup:true) 이용시 사파리의 팝업차단 여부와 관계 없이
웹뷰에서 팝업차단을 해제해주셔야 인증창이 나타납니다. alert 과 함께 redirect 모드로 동작함
팝업 모드 사용시 웹뷰에서 새탭을 열 수 있는 별도 처리를 해야 정상 동작이 가능함.

해결 : 가맹점 구현에 아래 내용 추가하고 본 가이드에 작성

var popupWebView: WKWebView?extension WebViewController: WKNavigationDelegate {func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        let frame = UIScreen.main.bounds
        popupWebView = WKWebView(frame: frame, configuration: configuration)
        if let popup = popupWebView {
            popup.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            popup.navigationDelegate = self
            popup.uiDelegate = self
            view.addSubview(popup)
            return popup
        }
        
        return nil
    }func webViewDidClose(_ webView: WKWebView) {
        if webView == popupWebView {
            popupWebView?.removeFromSuperview()
            popupWebView = nil
        }
    }
....

payment_way 상세 정보 확인 가능 여부

  1. PG - KG이니시스
  2. 결제방법 - 카카오페이
  3. RESTApi 확인시 카카오페이일 경우 payment_way 가 point 로만 확인 됨.

point 가 아닌 kakaopay 로 확인 가능한 방법은 없는지 확인 필요

모바일 결제시에 결제수단 인증이 정상적으로 이루어 지지 않는 경우

"F0005:결제가 중단되었습니다(imp_****************).01 | 정상적 인증 처리가 되지 않았습니다."라는 에러메세지를 받았습니다. 상세한 테스트 케이스는 알아내지 못했으며, 단지 특정할 수 있는 케이스는 모바일 디바이스(안드로이드로 추정)에서 카드결제를 이용할때, 발생한다는 것입니다. 카드사와 카드정보는 매번 달라지지만, 모바일 디바이스에서 간헐적으로 같은 에러가 납니다. 모바일 디바이스라는 것을 특정한 이유는 같은 결제정보(결제카드정보)로 Desktop browser에서 실행할 시, 문제없이 정상적으로 이루어지기 때문입니다. 에러 케이스를 특정 할 수가 없으니 대처가 힘듭니다. 예상가능한 에러 케이스를 모두 알려주셨으면 합니다.

java.lang.NoSuchMethodError: No static method toDouble-impl 에러

M1Pro 환경에서 프로젝트를 켜니까 다음과 같이 에러가 발생했습니다.

구현부:

import android.app.Application
import com.iamport.sdk.domain.core.Iamport

class MyApplication:Application() {
  override fun onCreate() {
    super.onCreate()

    Iamport.create(this)
  }
}

발생한 에러:

    java.lang.NoSuchMethodError: No static method toDouble-impl(JLjava/util/concurrent/TimeUnit;)D in class Lkotlin/time/Duration; or its super classes (declaration of 'kotlin.time.Duration' appears in /data/app/com.example-WGmxxg2pcjuM-HxQu-f9_Q==/base.apk!classes14.dex)
        at org.koin.core.time.MeasureKt.measureDuration(Measure.kt:32)
        at org.koin.core.KoinApplication.modules(KoinApplication.kt:59)
        at com.iamport.sdk.domain.core.Iamport$createWithKoin$1.invoke(Iamport.kt:109)
        at com.iamport.sdk.domain.core.Iamport$createWithKoin$1.invoke(Iamport.kt:106)
        at org.koin.core.context.GlobalContext.startKoin(GlobalContext.kt:64)
        at org.koin.core.context.DefaultContextExtKt.startKoin(DefaultContextExt.kt:31)
        at com.iamport.sdk.domain.core.Iamport.createWithKoin(Iamport.kt:106)
        at com.iamport.sdk.domain.core.Iamport.createWithKoin$default(Iamport.kt:101)
        at com.iamport.sdk.domain.core.Iamport.create(Iamport.kt:94)
        at com.example.MyApplication.onCreate(MyApplication.kt:10)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1182)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)
        at android.app.ActivityThread.access$1300(ActivityThread.java:219)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

나이스페이먼츠 비인증결제 문의입니다.

image

정상적인 카드번호인 XXXX-XXXX-XXXX-XXXX 뒷부분에 숫자를 더 붙여서 등록요청을 할 경우에
ex) XXXX-XXXX-XXXX-XXXX-1234-1234-1234-1234

등록된 카드번호가 아래와 같이 반환됩니다.
XXXX-XXXX-XXXX-XXXX-1234

의도된 동작인지 아닌지 궁금합니다.

안녕하세요, 빌링결제 API 관련 문의입니다.

안녕하세요

결제 내역에서는 신용카드/체크카드 구분을 알 수 있던데
혹시 GET /subscribe/customers/{customer_uid} API 를 통해서 해당 정보를 얻거나
다른 방법으로 확인할 방법이 있을까요?
(체크카드일 경우 할부를 불가능하게 설정하는데 필요할 것 같아서 여쭤봅니다!)

좋은 서비스 만들어주셔서 감사합니다!

image

cid코드가 등록되지 않았다고 나옵니다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<% request.setCharacterEncoding("UTF-8"); %>

<% response.setContentType("text/html; charset=UTF-8"); %>

<title>Insert title here</title>

<%

String member_id = request.getParameter("member_id");

int cost = Integer.parseInt(request.getParameter("cost"));

String product = request.getParameter("product");

%>

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script> <script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-1.1.5.js"></script>

<script type="text/javascript">

`$(function(){

    var IMP = window.IMP; // 생략가능

    IMP.init('TC0ONETIME'); // 'iamport' 대신 부여받은 "가맹점 식별코드"를 사용 

    var msg;

    
    IMP.request_pay({

        pg : 'kakaopay',

        pay_method : 'card',

        merchant_uid : 'merchant_' + new Date().getTime(),

        name : '<%=product%>',

        amount : 100,

        buyer_name : '<%=member_id%>',

        
    }, function(rsp) {

        if ( rsp.success ) {
  
            jQuery.ajax({

                url: "/payments/complete", 

                type: 'POST',

                dataType: 'json',

                data: {

                    imp_uid : rsp.imp_uid
                  
                }

            }).done(function(data) {

                
                if ( everythings_fine ) {

                    msg = '결제가 완료되었습니다.';

                    msg += '\n고유ID : ' + rsp.imp_uid;

                    msg += '\n상점 거래ID : ' + rsp.merchant_uid;

                    msg += '\결제 금액 : ' + rsp.paid_amount;

                    msg += '카드 승인번호 : ' + rsp.apply_num;

                    
                    alert("결제 성공");

                    location.href='kakao.do?command=premiumProduct';

                    
                } else {


                }

            });

            
           
        } else {

            msg = '결제에 실패하였습니다.';

            msg += '에러내용 : ' + rsp.error_msg;

         
            alert(msg);

        }

    });

    
});`
</script>

코드는 이와 같이 작성을 했는데 실행했을 때 PG사에 등록되지 않은 가맹점 코드라는 식의 오류가 뜹니다.

ㅠㅠ

CI, DI값 제공여부 문의

SMS본인인증에서 CI, DI값이 응답 json에 포함되어 있지 않는 것으로 확인됩니다.

CI, DI값을 별도로 제공하지 않는것인가요?

request_pay response 의 success로 인한 결제 성공 실패 여부

IMP.request_pay({
    pg : 'html5_inicis',
    pay_method : 'card',
    merchant_uid : 'merchant_' + new Date().getTime(),
    name : '주문명:결제테스트',
    amount : 14000,
    buyer_email : '[email protected]',
    buyer_name : '구매자이름',
    buyer_tel : '010-1234-5678',
    buyer_addr : '서울특별시 강남구 삼성동',
    buyer_postcode : '123-456'
}, function(rsp) {
    if ( rsp.success ) {
        var msg = '결제가 완료되었습니다.';
        msg += '고유ID : ' + rsp.imp_uid;
        msg += '상점 거래ID : ' + rsp.merchant_uid;
        msg += '결제 금액 : ' + rsp.paid_amount;
        msg += '카드 승인번호 : ' + rsp.apply_num;
    } else {
        var msg = '결제에 실패하였습니다.';
        msg += '에러내용 : ' + rsp.error_msg;
    }

    alert(msg);
});

안녕하세요 현재 아임포트 이용해서 인증결제 사용중인데요
아임포트에서 제공하는 문서들을 보면 rsp.success === true 시 결제 성공으로 판단하는 주석 처리들이 보입니다.

//예시
rsp.success === true
rsp.status === 'failed' 

// 위 예시의 경우는 결제 실패로 간주하고 있습니다.

rsp.statuspaid 인 경우만 결제를 성공적으로 완료했다고 판단 기준을 세우고 개발중입니다.
문서 내용에 더 정확한 결제 성공에 대한 기준이 들어가면 좋을것 같습니다.
감사합니다.

앱에서 풀웹뷰 실행 시 뒤로가기 버튼 없음

혹시 뒤로가기 버튼이 display 하는 방법이 없을까요? Android 자체에는 뒤로가기가 있지만, ios 같은 경우 없어서
App에서 Full Webview를 띄웠을때, 뒤로가
스크린샷 2022-07-11 오전 9 39 58
기를 할 수 없습니다. 감사합니다 :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.