You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

150 lines
3.5 KiB

<template>
<div>
<div id="ECPayPayment"></div><br />
<form action="" id="PayProcess" method="post">
<div style="text-align: center;">
<input id="PaymentType" name="PaymentType" type="hidden" value="" />
</div>
</form>
</div>
</template>
<script>
export default {
head() {
return {
script: this.script
}
},
props: {
method: {
type: String,
},
orderNo: {
type: String
}
},
data() {
return {
script: [
{
src:
"https://code.jquery.com/jquery-3.5.1.min.js",
body: true,
type: "text/javascript",
async: true,
onload: this.jqueryOnload()
},
],
devECPayUrl: 'https://dev-lambda.showeasy.com',
token: '',
payToken: '',
once: false,
}
},
created() {
this.getToken();
},
mounted() {
// this.$nextTick(function () {
// this.init();
// })
},
methods: {
getToken() {
this.$axios
.post(
`${this.devECPayUrl}/payment/ecpay/token`, {
payment_flow: "ecpay",
product_order_no: this.orderNo,
pay_price: 1200,
prod_desc: "dev test",
payer_email: "ss22333@gmail.com"
}
)
.then((response) => {
this.token = response.data.token;
})
.catch((error) => console.log(error));
},
init() {
var vm = this;
var Environment = 'STAGE'; //請設定要連線的環境: 測試 STAGE ,正式PROD
var envi = vm.GetEnvi(Environment);
var _token = vm.token; //請設定你取到的廠商驗證碼
//初始化SDK畫面
if (!vm.once) {
ECPay.initialize(envi, 1, function (errMsg) {
// if (_token === '') {
// _token = prompt('請填入Token: ');
// }
try {
ECPay.createPayment(_token, ECPay.Language.zhTW, function (errMsg) {
console.log('Callback Message: ' + errMsg);
if (errMsg != null)
vm.ErrHandle(errMsg);
});
} catch (err) {
vm.ErrHandle(err);
}
});
vm.once = true;
}
},
GetEnvi(env) {
var result = 'STAGE';
switch (env) {
case 'STAGE':
result = 'Stage';
break;
case 'PROD':
result = 'Prod';
break;
}
return result;
},
ErrHandle(strErr) {
if (strErr != null) {
$('#ECPayPayment').append('<div style="text-align: center;"><label style="color: red;">' + strErr + '</label></div>');
console.log(strErr);
} else {
$('#ECPayPayment').append('<div style="text-align: center;"><label style="color: red;">Token取得失敗</label></div>');
console.log('Wrong');
}
//$('#btnPay').hide();
},
jqueryOnload() {
this.$nextTick(() => {
setTimeout(() => {
this.script.push({
src:
"https://cdn.jsdelivr.net/npm/node-forge@0.7.0/dist/forge.min.js",
body: true,
async: true,
type: "text/javascript",
}, {
src:
"https://ecpg.ecpay.com.tw/Scripts/sdk-1.0.0.js?t=20210121100116",
body: true,
async: true,
type: "text/javascript",
})
}, 1000)
})
}
}
}
</script>
<style lang="scss" scoped>
:deep(.ecpay-pay-list-wrap) {
background-color: transparent;
}
:deep(.ecpay-pay-list-wrap .ecpay-pay-list) {
padding: 0;
margin: 0 auto 0 0;
}
</style>