react-native-toss-payments
Version:
리액트 네이티브용 토스페이먼츠 결제 연동 라이브러리
87 lines (73 loc) • 2.23 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _reactNativeWebview = _interopRequireDefault(require("react-native-webview"));
var _libs = require("../../libs/libs");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const Payment = _ref => {
let {
clientKey,
payment,
onWebViewMessageReceived,
detectIsLoading
} = _ref;
const WEBVIEW_SOURCE_HTML = `
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<script src="https://js.tosspayments.com/v1"></script>
</head>
<body>
<script>
var clientKey = '${clientKey}'
var tossPayments = TossPayments(clientKey) // 클라이언트 키로 초기화하기
</script>
</body>
</html>
`;
return /*#__PURE__*/_react.default.createElement(_reactNative.SafeAreaView, {
style: {
flex: 1
}
}, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.default, {
style: {
flex: 1
},
source: {
html: WEBVIEW_SOURCE_HTML
},
injectedJavaScript: `
tossPayments.requestPayment('카드',${JSON.stringify(payment)}).catch(err => {
window.ReactNativeWebView.postMessage(JSON.stringify(err));
})
`,
onMessage: onWebViewMessageReceived,
originWhitelist: ['*'],
sharedCookiesEnabled: true,
onShouldStartLoadWithRequest: request => {
const {
url,
mainDocumentURL
} = request;
if ((0, _libs.isBlank)(url, mainDocumentURL)) {
detectIsLoading(true);
return true;
}
detectIsLoading(false);
if ((0, _libs.isAppUrl)(url)) {
/* 3rd-party 앱 오픈 */
(0, _libs.openPGApp)(url);
return false;
}
return true;
}
}));
};
var _default = Payment;
exports.default = _default;
//# sourceMappingURL=Payment.js.map