|
- <template>
- <section class="select-credits">
- <div class="credits-pane"><h2>10 Credits</h2>
- <h3>$10.99</h3><div><span>Qty</span><input min="0" max="1000" v-model="packs.credits10" type="number"></div>
- </div>
-
- <div class="credits-pane"><div><h2>50 Credits</h2><span>+5 Free Credits</span></div>
- <h3>$54.99 </h3><div><span>Qty</span><input min="0" max="1000" v-model="packs.credits50" type="number"></div>
- </div>
-
- <div class="credits-pane"><div><h2>100 Credits</h2><span>+10 Free Credits</span></div>
- <h3>$109.99</h3> <div><span>Qty</span><input min="0" max="1000" v-model="packs.credits100" type="number"></div>
- </div>
-
- <div class="credits-pane"><div><h2>1000 Credits</h2><span>+150 Free Credits</span></div>
- <h3>$1010.00</h3> <div><span>Qty</span><input min="0" max="1000" v-model="packs.credits1000" type="number"></div>
- </div>
- <h3>Total: ${{total.toLocaleString('en')}}</h3>
- <div id="credits-errors"></div>
- </section>
-
- <section id="payment-section">
- <h4>Select a payment method</h4>
-
- <div class="sliding-menu">
- <a @click="method = 'payeer'" :class="{selected: method == 'payeer'}">Payeer</a>
- <a @click="method = 'pm'" :class="{selected: method == 'pm'}">Perfect Money</a>
- <div :class="{right: (method == 'pm')}" class="menu-slider"><div></div></div>
- </div>
-
- <div v-if="method == 'payeer'" class="payment-window">
- <img src="../../images/payeer.png" alt="">
- <p>Payeer allows you to pay securely by transfering your choice of cryptocurrency
- to a temporary address.
- </p>
- </div>
-
- <div v-if="method == 'pm'" class="payment-window">
- <img src="../../images/perfect_money.svg" alt="">
- <p>Pay by transfering USD from your Perfect Money wallet.</p>
- </div>
-
- <div id="agreement-check">
- <input v-model="agreed" type="checkbox"><label>I have read and agree to the <a
- href="/terms-and-policy">Terms and Policy</a> and will not pursue a dispute or chargeback.</label>
- <div id="payment-error"></div>
- </div>
- </section>
-
- <section class="credits-confirm">
- <button @click="pay" :disabled="!ready"
- class="brand-btn">Buy<loading v-if="loading"></loading></button>
- </section>
-
- </template>
-
- <script>
- import Loading from '../icons/loading.vue'
-
- function total() {
- return this.packs.credits10*10.99 + this.packs.credits50*54.99
- + this.packs.credits100*109.99 + this.packs.credits1000*1010
- }
-
- //Gets the secret key specific to chosen payment amount and user
- function getSecret() {
- document.getElementById('credits-errors').textContent = ''
- this.loading = true
- return fetch('/panel/secret', {
- method: 'POST',
- headers: {'Content-Type': 'application/json',
- 'Accept': 'application/json',
- 'X-XSRF-TOKEN': this.token},
- body: JSON.stringify({'packs': this.packs})
- }).then((response) => {
- if (response.ok) {
- return response.text()
- } else {
- document.getElementById('credits-errors').textContent =
- `${response.status}: ${response.statusText}`
- }
- }).then(secret => {
- this.loading = false
- return secret
- })
- }
-
- function pay() {
- if (this.method == 'payeer') {
- this.payPayeer()
- } else if (this.method == 'pm') {
- this.payPm()
- }
- }
-
- function makeInput(name, value) {
- let input = document.createElement('input')
- input.type = 'hidden'
- input.name = name
- input.value = value
- return input
- }
-
- function payPayeer() {
- fetch('/panel/payeer', {
- method: 'POST',
- headers: {'Content-Type': 'application/json',
- 'Accept': 'application/json',
- 'X-XSRF-TOKEN': this.token},
- body: JSON.stringify({'packs': this.packs})
- }).then(response => {return response.json()}).then(data => {
- let form = document.createElement('form')
- document.body.appendChild(form)
- form.method = 'POST'
- form.action = 'https://payeer.com/merchant/'
- form.appendChild(this.makeInput('m_shop', data.shop))
- form.appendChild(this.makeInput('m_orderid', data.transaction))
- form.appendChild(this.makeInput('m_amount', data.amount))
- form.appendChild(this.makeInput('m_curr', 'USD'))
- form.appendChild(this.makeInput('m_desc', data.description))
- form.appendChild(this.makeInput('m_sign', data.signature))
- form.appendChild(this.makeInput('m_params', data.params))
- form.appendChild(this.makeInput('m_cipher_method', 'AES-256-CBC'))
- form.submit()
- /* console.log(data.signature) */
- })
-
- }
-
- function payPm() {
- fetch('/panel/pm', {
- method: 'POST',
- headers: {'Content-Type': 'application/json',
- 'Accept': 'application/json',
- 'X-XSRF-TOKEN': this.token},
- body: JSON.stringify({'packs': this.packs})
- }).then(response => {return response.json()}).then(data => {
- let form = document.createElement('form')
- document.body.appendChild(form)
- form.method = 'POST'
- form.action = 'https://perfectmoney.is/api/step1.asp'
- form.appendChild(this.makeInput('PAYEE_ACCOUNT', data.account))
- form.appendChild(this.makeInput('PAYEE_NAME', 'Trendplays Network'))
- form.appendChild(this.makeInput('PAYMENT_AMOUNT', data.amount))
- form.appendChild(this.makeInput('PAYMENT_UNITS', 'USD'))
- form.appendChild(this.makeInput('PAYMENT_ID', data.transaction))
- form.appendChild(this.makeInput('STATUS_URL',
- 'https://trendplays.com/hooks/pm-transaction'))
- form.appendChild(this.makeInput('PAYMENT_URL',
- 'https://trendplays.com/panel/transaction-complete'))
- form.appendChild(this.makeInput('PAYMENT_URL_METHOD', 'POST'))
- form.appendChild(this.makeInput('NOPAYMENT_URL',
- 'https://trendplays.com/panel/transaction-failed'))
- form.appendChild(this.makeInput('NOPAYMENT_URL_METHOD', 'GET'))
- form.appendChild(this.makeInput('SUGGESTED_MEMO', data.description))
- form.appendChild(this.makeInput('SUGGESTED_MEMO_NOCHANGE', true))
- form.submit()
- })
- }
-
- function ready() {
- if (this.packs.credis10 < 0) {
- return false
- } else if (this.packs.credis50 < 0) {
- return false
- } else if (this.packs.credis100 < 0) {
- return false
- } else if (this.packs.credis1000 < 0) {
- return false
- }
-
- return this.total > 0 && !this.loading && this.agreed
- }
-
- export default {
- components:{Loading},
- data() {
- return {packs: {credits10: 0, credits50: 0,
- credits100: 0, credits1000: 0}, loading: false, method: 'payeer',
- agreed: false
- }
- },
- computed: {total, ready},
- methods: {getSecret, pay, payPm, payPayeer, makeInput},
- props: ['preferred', 'token'],
- emits: ['purchaseComplete'],
- }
- </script>
|