https://github.com/ingameltd/node-przelewy24
A simple library for connecting Przelewy24 written in Typescript
https://github.com/ingameltd/node-przelewy24
library nodejs p24 przelewy24 ts typescript
Last synced: 2 months ago
JSON representation
A simple library for connecting Przelewy24 written in Typescript
- Host: GitHub
- URL: https://github.com/ingameltd/node-przelewy24
- Owner: ingameltd
- License: mit
- Created: 2020-02-13T15:39:17.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-11T19:52:53.000Z (over 1 year ago)
- Last Synced: 2024-08-10T06:11:17.320Z (10 months ago)
- Topics: library, nodejs, p24, przelewy24, ts, typescript
- Language: TypeScript
- Size: 516 KB
- Stars: 20
- Watchers: 4
- Forks: 7
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Przelewy24 for NodeJS
   
NodeJS Library for [**Przelewy24**](https://przelewy24.pl/). This library is written in Typescript to provide
best typesafety.This library provides an elegant way to create/verify transactions easily.
**Note: Now this library uses the new REST API availiable in [here](https://developers.przelewy24.pl/index.php?en).**
> Previous legacy API support is still availiable in **v1.1.1**
> Future versions will support new REST API only, If you use legacy API please use that version## Documentation
Documentation can be in read [here](https://ingameltd.github.io/node-przelewy24).
## Installation
```bash
npm install --save @ingameltd/node-przelewy24
```## Typescript
### Importing
```typescript
import {
P24,
Order,
Currency,
Country,
Language,
NotificationRequest,
Verification
} from "@ingameltd/node-przelewy24";
```### Initialization
- **merchantId** : ID given by P24
- **posId** : Given by P24(often this referes to Merchant ID)
- **apiKey** : API Key from p24 panel(Klucz do raportów)
- **crcKey** : CRC value obtained from p24 panel```typescript
const p24 = new P24(
merchantId,
posId,
apiKey,
crcKey,
{
sandbox: false // enable or disable sandbox
}
);
```### Testing access to P24
```typescript
const result = await p24.testAccess();
console.log(result); // true on success or an error being throw P24Error
```### Get payment link
Prepare following details to initiate a payment
```typescript
const order: Order = {
sessionId: "c837e1a3-c5a3-4e89-adf1-05faffd8913b",
amount: 1000, // Transaction amount expressed in lowest currency unit, e.g. 1.23 PLN = 123
currency: Currency.PLN,
description: "test order",
email: "[email protected]",
country: Country.Poland,
language: Language.PL,
urlReturn: "http://myawesomeapp.com/continue",
urlStatus: "http://myawesomeapp.com/p24callback", // callback to get notification
timeLimit: 15, // 15min
encoding: Encoding.UTF8,
}
const result = await p24.createTransaction(order)
console.log(result) // prints a valid url to pay the payment or throws an error
```### Verify Notification
P24 system will send you a notification to the `urlStatus` provided in
transaction order. You need to **verify** this Notification request before actually **Verify Transaction**```typescript
const verify: NotificationRequest = req.body
const res = p24.verifyNotification(verify)
console.log(res) // true when the Notification is valid
```### Verifies a transaction with P24
To accept the payment to your merchant account, after validating the Notification
request, you need to verify the transaction with P24 system. **If you don't do that the funds will not be transferred into your account**.```typescript
// extract all information from callback request
const verifyRequest: Verification = {
amount: 1000,
currency: Currency.PLN,
orderId: 3030,
sessionId: 'c837e1a3-c5a3-4e89-adf1-05faffd8913b'
}const res = await p24.verifyTransaction(verifyRequest)
console.log(res) // true on success otherwise P24Error
```### Refund a requst
To refund the customer you need to open up a refund request
```typescript
const ref = {
refundsUuid: '94c1fb0b-f40f-4201-b2a0-f4166839d06c',
requestId: 'afa379ac-c3ca-43d0-892f-e7a3f13ee4cc',
refunds: [
{
amount: 1000,
description: 'test',
orderId: 3030,
sessionId: 'c837e1a3-c5a3-4e89-adf1-05faffd8913b'
}
],
}const result = await p24.refund(ref)
console.log(result) // returns a SuccessResponse where you can find about each refund request in array
```### Validate IP
Library provides method to validate IP addresses with P24 backends
```typescript
const valid = Przelewy24.isIpValid("127.0.0.1");
console.log(valid); // output false if IP is not from p24
```