diff --git a/README.md b/README.md index cf3fac1..4fd5619 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,8 @@ app_scheme는 IAmPort 모듈에 정의할 것을 입력한다. (아래 Example ### AndroidManifest.xml 추가 +리엑트 네이티브 안드로이드 환경에서는 manifest상에 redirect를 위한 **appscheme을 등록하지 않습니다.** + ``` - + <-- iOS와 달리 파라미터에 사용된 appscheme을 등록하지 않습니다. ``` diff --git a/android/src/main/java/com/jeongjuwon/iamport/IAmPortViewManager.java b/android/src/main/java/com/jeongjuwon/iamport/IAmPortViewManager.java index b7c885a..7627f69 100644 --- a/android/src/main/java/com/jeongjuwon/iamport/IAmPortViewManager.java +++ b/android/src/main/java/com/jeongjuwon/iamport/IAmPortViewManager.java @@ -132,8 +132,16 @@ else if(pg.equals("kakao")){ view.setWebViewClient(new KakaoWebViewClient(activity, view)); } else if(pg.equals("payco")){ + PaycoWebViewClient webViewClient = new PaycoWebViewClient(activity, view, new UrlLoadingCallBack() { - view.setWebViewClient(new PaycoWebViewClient(activity, view)); + @Override + public void shouldOverrideUrlLoadingCallBack(String s) { + Log.i("iamport", "shouldOverrideUrlLoadingCallBack - " + s); + emitPaymentEvent(s, s, s); + } + + }); + view.setWebViewClient(webViewClient); } } diff --git a/android/src/main/java/com/siot/iamportsdk/NiceWebViewClient.java b/android/src/main/java/com/siot/iamportsdk/NiceWebViewClient.java index 719cfd4..c7f6f6f 100644 --- a/android/src/main/java/com/siot/iamportsdk/NiceWebViewClient.java +++ b/android/src/main/java/com/siot/iamportsdk/NiceWebViewClient.java @@ -48,9 +48,9 @@ public void bankPayPostProcess(String bankpayCode, String bankpayValue) { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { - // TODO: emit event - Log.i("iamport", "shouldOverrideUrlLoading: " + url); - mCallBack.shouldOverrideUrlLoadingCallBack(url); + // TODO: emit event + Log.i("iamport", "shouldOverrideUrlLoading: " + url); + mCallBack.shouldOverrideUrlLoadingCallBack(url); if (!url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("javascript:")) { Intent intent = null; diff --git a/android/src/main/java/com/siot/iamportsdk/PaycoWebViewClient.java b/android/src/main/java/com/siot/iamportsdk/PaycoWebViewClient.java index 07fb7e5..b2c8b70 100644 --- a/android/src/main/java/com/siot/iamportsdk/PaycoWebViewClient.java +++ b/android/src/main/java/com/siot/iamportsdk/PaycoWebViewClient.java @@ -12,18 +12,25 @@ import android.webkit.WebResourceRequest; import android.webkit.WebResourceResponse; +import com.jeongjuwon.iamport.UrlLoadingCallBack; public class PaycoWebViewClient extends WebViewClient { private Activity activity; + UrlLoadingCallBack mCallBack; - public PaycoWebViewClient(Activity activity, WebView target) { + public PaycoWebViewClient(Activity activity, WebView target, UrlLoadingCallBack callBack) { this.activity = activity; + this.mCallBack = callBack; } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { + // TODO: emit event + Log.i("iamport", "shouldOverrideUrlLoading: " + url); + mCallBack.shouldOverrideUrlLoadingCallBack(url); + if (!url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("javascript:")) { Intent intent = null; diff --git a/index.android.js b/index.android.js index 273e8f9..55bf840 100644 --- a/index.android.js +++ b/index.android.js @@ -10,7 +10,7 @@ class IAmPort extends Component { componentDidMount() { - DeviceEventEmitter.addListener('paymentEvent', this._onShouldStartLoadWithRequest.bind(this)); + DeviceEventEmitter.addListener('paymentEvent', this.paymentEvent.bind(this)); } componentWillUnmount() { @@ -33,14 +33,17 @@ class IAmPort extends Component { return decodeURIComponent(results[2].replace(/\+/g, " ")); } - _onShouldStartLoadWithRequest(e) { + paymentEvent(e) { var url = e.result; var me = this; var original = e; //TODO delete - // console.log("onShouldStartLoadWithRequest", e); + console.log("paymentEvent", e); + if (e.result == "success" || e.result == "failed") { + this.props.onPaymentResultReceive(e); + } var imp_uid = this.getParameterByName("imp_uid", url), merchant_uid = this.getParameterByName("merchant_uid", url), @@ -98,7 +101,7 @@ class IAmPort extends Component { return; } - iamport.receiveResult(rsp.success ? "success" : "failure", rsp.imp_uid, rsp.merchant_uid); + iamport.receiveResult(rsp.success ? "success" : "failed", rsp.imp_uid, rsp.merchant_uid); }); diff --git a/package.json b/package.json index d50d2e4..09f5c2a 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,10 @@ { "name": "Jeong Juwon", "email": "2jw0718@gmail.com" + }, + { + "name": "Jeff Gu Kang", + "email": "jeffgukang@gmail.com" } ], "name": "react-native-iamport", @@ -38,5 +42,5 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, - "version": "0.2.0" + "version": "0.2.1" }