npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

avangate

v0.1.7

Published

avangate ipn confirmation for nodejs

Downloads

27

Readme

avangate

Nodejs Avangate IPN confirmation

Usage:

var ipn = require("avangate")
    .initWithKey("YOUR SECRET KEY");

// ipn directly extends [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)
// add a handler for validated IPNs
ipn.on(ipn.EVENTS.VALIDATED,
  function(ipn){
    console.log("Validate:\n" + JSON.stringify(ipn, null, 2));
  });

// add handler for rejected IPNs
ipn.on(ipn.EVENTS.REJECTED,
  function(ipn){
    console.log("Rejected:\n" + JSON.stringify(ipn, null, 2));
  });


//confirm the avangate IPN
ipn.confirmIpn(req, res);

Sample Express usage for Avangate IPN confirmation

//This requires body-parse version > 1.2.2
var express = require('express');
var ipn = require('../lib/ipn').initWithKey("YOUR SECRET KEY");
var app = express();

var bodyParser = require('body-parser');

app.use(bodyParser.json());
//NOTE: this tells bodyParser to use the querystring modules instead of qs module
// this is required to parse Avangate IPNS
app.use(bodyParser.urlencoded({extended:false}));

app.post('/', ipn.confirmIpn);
app.listen(8888);

additional relevant documentation can be found in [lib/ipn.js] Checkout [samples/ipn_server.js] and [[test/express_test.js] ] for an working examples

The secret key in this example is: AABBCCDDEEFF For this example, the response is built in the same way, only using shorter data formats for date values. HMAC source string is built from the following:

Field name, Length, Field value

IPN_PID[0] 1 1

IPN_PNAME[0] 16 Software program

IPN_DATE 14 20050303123434

DATE 14 20050303123434

Therefore, the HMAC source string will be:

1116Software program14200503031234341420050303123434

while the HMAC MD5 string will be:

7bf97ed39681027d0c45aa45e3ea98f0

The response to output anywhere in the page defined as the IPN URL has to be:

20050303123434|7bf97ed39681027d0c45aa45e3ea98f0

If the string above is valid, and acknowledged by Avangate, the notification is marked in the Avangate system as "successfully sent". Contrary to this situation, the IPN notification will be re-sent at increasing time intervals, until successfully confirmed. Also, an error notification will be displayed in the Control Panel Dashboard area.