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
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>
|