-
Notifications
You must be signed in to change notification settings - Fork 92
Expand file tree
/
Copy pathrequest-client-js.ts
More file actions
122 lines (110 loc) · 4.1 KB
/
Copy pathrequest-client-js.ts
File metadata and controls
122 lines (110 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import { EthereumPrivateKeyDecryptionProvider } from '@requestnetwork/epk-decryption';
import { EthereumPrivateKeySignatureProvider } from '@requestnetwork/epk-signature';
import * as RequestNetwork from '@requestnetwork/request-client.js';
// payee information
const payeeSignatureInfo = {
method: RequestNetwork.Types.Signature.METHOD.ECDSA,
privateKey: '0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3',
};
const payeeIdentity = {
type: RequestNetwork.Types.Identity.TYPE.ETHEREUM_ADDRESS,
value: '0x627306090abab3a6e1400e9345bc60c78a8bef57',
};
const payeeEncryptionParameters: RequestNetwork.Types.Encryption.IEncryptionParameters = {
key: '9008306d319755055226827c22f4b95552c799bae7af0e99780cf1b5500d9d1ecbdbcf6f27cdecc72c97fef3703c54b717bca613894212e0b2525cbb2d1161b9',
method: RequestNetwork.Types.Encryption.METHOD.ECIES,
};
const payeeDecryptionParameters: RequestNetwork.Types.Encryption.IDecryptionParameters = {
key: '0x0906ff14227cead2b25811514302d57706e7d5013fcc40eca5985b216baeb998',
method: RequestNetwork.Types.Encryption.METHOD.ECIES,
};
// payer information
const payerIdentity = {
type: RequestNetwork.Types.Identity.TYPE.ETHEREUM_ADDRESS,
value: '0x740fc87Bd3f41d07d23A01DEc90623eBC5fed9D6',
};
const payerEncryptionParameters: RequestNetwork.Types.Encryption.IEncryptionParameters = {
key: 'cf4a1d0bbef8bf0e3fa479a9def565af1b22ea6266294061bfb430701b54a83699e3d47bf52e9f0224dcc29a02721810f1f624f1f70ea3cc5f1fb752cfed379d',
method: RequestNetwork.Types.Encryption.METHOD.ECIES,
};
// Signature providers
const signatureProvider = new EthereumPrivateKeySignatureProvider(payeeSignatureInfo);
// A decryption provider, for example @requestnetwork/epk-decryption
const decryptionProvider: RequestNetwork.Types.DecryptionProvider.IDecryptionProvider =
new EthereumPrivateKeyDecryptionProvider(payeeDecryptionParameters);
const requestInfo: RequestNetwork.Types.IRequestInfo = {
currency: 'BTC',
expectedAmount: '100000000000',
payee: payeeIdentity,
payer: payerIdentity,
};
const paymentNetwork: RequestNetwork.Types.Payment.PaymentNetworkCreateParameters = {
id: RequestNetwork.Types.Extension.PAYMENT_NETWORK_ID.BITCOIN_ADDRESS_BASED,
parameters: {
paymentAddress: '1LEMZPBit6tTtjXfaEfz4yYmTuctHWoMV',
},
};
/* eslint-disable @typescript-eslint/no-floating-promises */
const requestNetwork = new RequestNetwork.RequestNetwork({
decryptionProvider,
signatureProvider,
useMockStorage: true,
});
/* eslint-disable no-console */
const createParams = {
paymentNetwork,
requestInfo,
signer: payeeIdentity,
};
// Optionally, compute the request ID before actually creating it.
// Setting the timestamp is recommended, as it has an impact on the generated ID.
createParams.requestInfo.timestamp = RequestNetwork.Utils.getCurrentTimestampInSecond();
requestNetwork
.computeRequestId(createParams)
.then((requestId) => {
console.log(`The request will be created with ID ${requestId}`);
})
.catch((error) => {
console.error(error.message || error);
process.exit(1);
});
requestNetwork
.createRequest(createParams)
.then((request) => {
console.log('clear request:');
console.log(request.requestId);
request
.waitForConfirmation()
.then((confirmedRequest) => {
console.log('clear confirmed request:');
console.log(confirmedRequest);
})
.catch((error) => {
console.error(error.message || error);
process.exit(1);
});
})
.catch((error) => {
console.error(error.message || error);
process.exit(1);
});
requestNetwork
._createEncryptedRequest(createParams, [payeeEncryptionParameters, payerEncryptionParameters])
.then((request) => {
console.log('encrypted request:');
console.log(request.requestId);
request
.waitForConfirmation()
.then((confirmedRequest) => {
console.log('encrypted confirmed request:');
console.log(confirmedRequest);
})
.catch((error) => {
console.error(error.message || error);
process.exit(1);
});
})
.catch((error) => {
console.error(error.message || error);
process.exit(1);
});