@tax1driver/ts-payu
    Preparing search index...

    @tax1driver/ts-payu

    ts-payu

    Build

    A type safe PayU client for Typescript.

    Originally authored by kasvith, updated by me to extend API coverage.

    npm install --save @tax1driver/ts-payu
    

    Full API & Types Reference

    import { PayU, Order, Buyer, Product, Currency, ... } from "@tax1driver/ts-payu";
    
    • clientId : Client ID from PayU
    • clientSecret : client secret from panel
    • merchantPosId : pos id from panel
    • secondKey : second key from panel
    const payU = new PayU(clientId, clientSecret, merchantPosId, secondKey, {
    sandbox: false,
    });
    const result = await payU.createOrder({
    notifyUrl: "https://my.shop.notify.com/notify",
    customerIp: "127.0.0.1",
    continueUrl: "https://myshop.com/order?id=abc",
    description: "My order",
    currencyCode: Currency.PLN,
    totalAmount: 2000,
    buyer: {
    email: "buyer@email.com",
    },
    products: [
    { name: "mobile phone #1", quantity: 1, unitPrice: 1000 },
    { name: "mobile phone #2", quantity: 1, unitPrice: 1000 },
    ],
    });

    If your shop does not approve payments automatically, you need to capture them and confirm.

    const result = await payU.captureOrder("payU order Id");
    

    Or using the legacy endpoint (status update method):

    const result = await payU.legacyCaptureOrder("payU order Id from notification");
    

    To cancel an order before completed call this method.

    const result = await payU.cancelOrder("payU order Id from notification");
    

    To refund an order after completed call this method.

    const result = await payU.refundOrder("payU order Id from notification", "reason");
    

    Retrieve the OAuth access token. This is usually handled internally, but you can get it explicitly if needed.

    const token = await payU.getAccessToken();
    

    Retrieve detailed information about an existing order.

    const orderDetails = await payU.getOrder("payU order Id");
    

    Retrieve details of a specific refund.

    const refund = await payU.getRefund("payU order Id", "refund Id");
    

    Retrieve all refunds for a specific order.

    const refunds = await payU.getAllRefunds("payU order Id");
    

    Retrieve all transactions for a specific order.

    const transactions = await payU.getTransactions("payU order Id");
    

    Retrieve all available payment methods. Optionally specify a language code.

    const paymentMethods = await payU.getPaymentMethods("pl"); // or "en"
    

    Retrieve shop data including balance information.

    const shopData = await payU.getShopData("shop Id");
    

    Create a new payout request.

    const payout = await payU.createPayout({
    payout: {
    payoutId: "unique-payout-id",
    shopId: "shop Id",
    currencyCode: Currency.PLN,
    amount: 1000,
    description: "Payout description",
    bankAccount: {
    number: "PL61109010140000071219812874"
    }
    }
    });

    Retrieve details of a specific payout.

    const payoutDetails = await payU.getPayout("payout Id");
    

    Delete a saved payment token.

    await payU.deleteToken("token value");
    

    To verify notification are valid cryptogrpically this method can be used.

    const headers = req.headers;

    const isValid = payU.verifyNotification(
    headers["OpenPayu-Signature"],
    JSON.stringify(req.body)
    );

    console.log(isValid);

    To validate IPs are correct, use following method. It will automatically adjust to match your environment(production or sandbox)

    const isIpValid = payU.isIpValid("127.0.0.1");