SDK tidak resmi untuk transaksi saham Halifax, transaksi saham IWEB, transaksi saham Bank of Scotland dan layanan investasi langsung Lloyds Bank
Menggores perban internet, jadi mungkin rusak dengan pembaruan di ujung depan mereka
import halifaxShareDealingSdk from 'halifax-share-dealing-sdk'
// Alternatively:
// const halifaxShareDealingSdk = require('halifax-share-dealing-sdk').default
const sd = halifaxShareDealingSdk ( {
site : 'halifax' , // one of 'halifax', 'iweb', 'bos', 'lloyds'
USERNAME : 'username' ,
PASSWORD : 'password' ,
MEMORABLE_INFORMATION : {
"Your mother's FIRST name" : 'Jane' ,
"Your father's FIRST name" : 'John' ,
'Your place/town of birth' : 'Anytown' ,
'The name of your first school' : 'Anyschool'
}
} )
Ini diperlukan sebelum melakukan panggilan lain
Mengembalikan objek Accounty dengan akun default
sd . login ( )
. then ( console . dir )
// { accountId: '000123456ABCD' }
Mencantumkan semua akun
Mengembalikan array objek Accounty dengan nama dan saldo akun
sd . login ( )
. then ( sd . getAccounts )
. then ( console . dir )
// [ { accountId: '000123456',
// name: 'Share Dealing Account',
// availableToInvest: { asFloat: 1.23, asText: '£1.23', asRawText: '£1.23' },
// totalSecurities: { asFloat: 4.56, asText: '£4.56', asRawText: '£4.56' },
// totalValue: { asFloat: 5.79, asText: '£5.79', asRawText: '£5.79' } },
// { accountId: '000123456ABCD',
// name: 'Stocks and Shares ISA',
// availableToInvest: { asFloat: 1.23, asText: '£1.23', asRawText: '£1.23' },
// totalSecurities: { asFloat: 4.56, asText: '£4.56', asRawText: '£4.56' },
// totalValue: { asFloat: 5.79, asText: '£5.79', asRawText: '£5.79' } } ]
Mendapatkan AccountId untuk akun default dari halaman 'Set Default Account'.
Mengembalikan objek Accounty dengan akun default
sd . login ( )
. then ( sd . getDefaultAccount )
. then ( console . dir )
// { accountId: '000123456ABCD' }
Menetapkan akun default
Membutuhkan objek Accounty untuk akun yang ingin Anda tetapkan sebagai default
Mengembalikan objek Akunty dengan akun default baru
sd . login ( )
. then ( ( ) => sd . setDefaultAccount ( { accountId : '000123456' } ) )
. then ( console . dir )
// { accountId: '000123456' }
sd . login ( )
. then ( sd . getAccounts )
. then ( accounts => accounts . find ( account => account . name == 'Share Dealing Account' ) )
. then ( sd . setDefaultAccount )
. then ( console . dir )
// { accountId: '000123456' }
Mengembalikan opsi dividen untuk semua akun
Mengembalikan array objek akunty dengan data opsi dividen
sd . login ( )
. then ( sd . getDividendOptions )
. then ( console . dir )
// [ { accountId: '000123456',
// dividendOptionCode: 'H',
// dividendOptionName: 'Hold In Account' },
// { accountId: '000123456ABCD',
// dividendOptionCode: 'R',
// dividendOptionName: 'Automatic Dividend Reinvestment' } ]
Menetapkan opsi dividen untuk semua akun
Membutuhkan array objek akunty dengan dividendOptionCode
s. Hanya membutuhkan data untuk akun yang ingin Anda ubah. dividendOptionName
s adalah opsional, tetapi jika diberikan permintaan akan gagal jika dividendOptionCode
S dan dividendOptionName
S tidak cocok. accountId
S harus unik dalam array input.
Mengembalikan array objek akunty dengan data opsi dividen yang diperbarui
sd . login ( )
. then ( ( ) => [
{
accountId : '000123456ABCD' ,
dividendOptionCode : 'P6'
}
] )
. then ( sd . setDividendOptions )
. then ( console . dir )
// [ { accountId: '000123456',
// dividendOptionCode: 'H',
// dividendOptionName: 'Hold In Account' },
// { accountId: '000123456ABCD',
// dividendOptionCode: 'P6',
// dividendOptionName: 'Pay Away 6-Monthly' } ]
Mendapat semua pernyataan
Mengembalikan serangkaian pernyataan
sd . login ( )
. then ( sd . getStatements )
. then ( console . dir )
// [ { statementId: '1', statementDate: '01 Jan 1970' } ]
Mendapat penilaian untuk sebuah akun
Membutuhkan objek akunty untuk akun yang ingin Anda dapatkan penilaian
Mengembalikan objek akunty dengan data penilaian
sd . login ( )
. then ( sd . getValuation )
. then ( console . dir )
// { accountId: '000123456ABCD',
// stocks:
// [ { TIDM: 'LLOY',
// fullName: 'LLOYDS BANKING GP ORD GBP0.1',
// holding: { asFloat: 100, asText: '100.000', asRawText: '100.000' },
// avgCostPerShare: { asFloat: 0.495, asText: '49.50p', asRawText: '49.50p' },
// bookCost: { asFloat: 49.5, asText: '£49.50', asRawText: '£49.50' },
// latestPricePerShare: { asFloat: 0.555, asText: '55.50p', asRawText: '*55.50p' },
// valuation: { asFloat: 55.5, asText: '£55.50', asRawText: '£55.50' },
// change:
// { absolute: { asFloat: 6, asText: '£6.00', asRawText: '£6.00' },
// percentage: { asFloat: 0.1212, asText: '12.12%', asRawText: '12.12%' } } } ],
// cash: { asFloat: 1000, asText: '£1000.00', asRawText: '£ 1,000.00' },
// availableToInvest: { asFloat: 1000, asText: '£1000.00', asRawText: '£ 1,000.00' },
// totalSecurities: { asFloat: 55.5, asText: '£55.50', asRawText: '£ 55.50' },
// totalValue: { asFloat: 1055.5, asText: '£1055.50' } }
Mendapat Sejarah Dividen untuk Akun
Membutuhkan objek akunty untuk akun yang ingin Anda dapatkan untuk mendapatkan riwayat dividen
Mengembalikan berbagai dividen historis yang berkaitan dengan akun tersebut
sd . login ( )
. then ( sd . getDividendHistory )
. then ( console . dir )
// [ { issueDate: '09 Oct 2019',
// fullName: 'VANGUARD FUNDS PLC FTSE 250 UCITS ETF GBP DIS',
// exDividendDate: '26 Sep 2019',
// sharesHeldOnExDividendDate: { asFloat: 1, asText: '1', asRawText: '1' },
// amountPayable: { asFloat: 0.26, asText: '£0.26', asRawText: '£0.26' },
// handlingOperation:
// { dividendOptionCode: 'Hold In Account',
// dividendOptionName: 'H' },
// cashRef: 'ABCDXYZ123' } ]
accountId
: Setara dengan apa yang saya pikir halifax memanggil PortCode
. Biasanya kode akun dengan berpotensi beberapa huruf setelahnya. Akun dengan accountId
S yang berbeda dapat berbagi kode akun yang sama. Saya pikir ini unik di seluruh login.statementId
: ID pernyataan, saya pikir ini adalah angka yang bertambah mulai dari 1
- tidak unik di seluruh login. Pernyataan dilampirkan pada login (sebagai lawan dari akun), dan statementId
S adalah unik dalam login.accounty object
: Objek dengan properti accountId
Permintaan tarik disambut di GitHub! Untuk memulai:
npm install
npm run test
untuk menjalankan tes dengan bercandanpm run build
Pengait pra-komit yang berguna (simpan sebagai .git/hooks/pre-commit
) untuk memastikan tes lulus, kode diformat dengan benar dan Anda tidak secara tidak sengaja meninggalkan detail pribadi Anda (ubah 000123456 ke kode akun Anda atau lainnya data pribadi yang ingin Anda cari):
#! /bin/sh
npm run test && npm run lint && ! grep --exclude=pre-commit -r ' 000123456 ' .
PERINGATAN: Masih mungkin untuk melakukan data Anda jika Anda mementaskannya, hapus dan kemudian berkomitmen. Harap hati -hati!
Versi mengikuti spesifikasi versi semantik.
Untuk melepaskan:
npm version <major | minor | patch>
untuk menabrak versigit push --follow-tags
untuk mendorong dengan tag