React Native WebView의 Paypal
과정
저는 최근에 Paypal 통합이 필요한 프로젝트를 진행 중이었고 안정적인 오픈 소스 React Native 모듈을 찾을 수 없었기 때문에 WebView 기반 구현을 생각해 냈습니다.
구현 전 완료 단계
React Native 부분 설정
이 시점에서 앱의 대부분이 작동하고 흐름 프로세스를 완료하려면 결제 부분이 필요할 수 있다고 가정합니다.
우리는 WebView를 사용하고 있기 때문에 앱 사용자 인터페이스에 맞게 디자인할 HTML 파일과 WebView와 앞뒤로 통신하는 구성 요소가 있을 것입니다.
PayPal.js
일부 기능 및 변수에 대한 간략한 설명
const patchPostMessageFunction
는 여기에 설명된 문제를 해결합니다.
handleMessage
함수는 paypal.html
내에서 Javascript에서 내보낸 데이터를 수신합니다.
passValues
함수는 반응 네이티브에서 paypal.html
로 데이터를 보냅니다.
sent
상태의 키는 반응 네이티브에서 WebView로 데이터가 전달된 시기를 표시하는 데 사용됩니다.
paypal.html
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Paypal</title>
<script src="https://www.paypal.com/sdk/js?client-id={clientID}"></script>
<style>
html, body{
width: 100%;
height: 100%;
margin: 0;
padding: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(180deg, #3D40AD 0%, #6B6ED7 100%);
}
.container{
height: 100%;
display: flex;
margin-left: 20px;
margin-right: 20px;
overflow-y: scroll;
justify-content: center;
align-items: center;
}
p{
color: white;
font-size: 16px;
text-align: justify;
margin-bottom: 50px;
}
#preloaderSpinner{
display: none;
}
</style>
</head>
<body>
<div class="container">
<div style="justify-content: center; text-align: center">
<img width="80px" height="80px" src="logo.png"/>
<p>
</p>
<div id="paypal-button-container"></div>
</div>
</div>
<script>
function payWithPayPal(amount, orderID) {
paypal
.Buttons({
createOrder: function(data, actions) {
return new Promise(function(resolve, reject){
resolve(orderID);
});
},
onApprove: function(data, actions) {
window.postMessage(JSON.stringify({
reference: data.orderID,
message: 'Transaction Successful',
status: 'success'
}));
}
})
.render("#paypal-button-container");
}
document.addEventListener("message", function(data) {
var details = JSON.parse(data.data);
document.querySelector('p').innerText = "You are about to fund your wallet with USD "+details.amount+" on XYZ. Click on any of the payment options to proceed. Your account will be credited instantly after payment."
payWithPayPal(details.amount, details.orderID);
})
</script>
</body>
</html>
document.addEventListener("message", function(data))
부분은 반응 네이티브에서 내보낸 메시지를 수신하고 전송된 데이터를 수신합니다. 그런 다음 이 데이터는 JSON으로 다시 구문 분석되어 표시 메시지를 준비하고 PayPal SDK도 설정하는 데 사용됩니다.
트랜잭션은 API 호출을 통해 서버 측에서 시작되고 PayPal의 orderID가 포함된 페이로드가 반환됩니다.
백엔드에서 거래를 시작하려면 PayPal SDK가 매우 유용하며 여기에서 다양한 언어로 찾을 수 있습니다.
결론
React Native WebView는 복잡한 애니메이션 그래프를 그릴 뿐만 아니라 이와 같은 상황에 유용합니다. 귀하의 의견을 듣고 더 많은 정보를 얻고 싶습니다.
Reference
이 문제에 관하여(React Native WebView의 Paypal), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/franko4don/paypal-in-react-native-4emd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)