
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
paypal-adaptive
Advanced tools
Node.js sdk for Paypal Adaptive Payments and Paypal Adaptive Accounts APIs, without dependencies
var Paypal = require('paypal-adaptive');
var paypalSdk = new Paypal({
userId: 'userId',
password: 'password',
signature: 'signature',
sandbox: true //defaults to false
});
var requestData = {
requestEnvelope: {
errorLanguage: 'en_US',
detailLevel: 'ReturnAll'
},
payKey: 'AP-1234567890'
};
paypalSdk.callApi('AdaptivePayments/PaymentDetails', requestData, function (err, response) {
if (err) {
// You can see the error
console.log(err);
//And the original Paypal API response too
console.log(response);
} else {
// Successful response
console.log(response);
}
});
var payKey = 'AP-1234567890';
paypalSdk.getPaymentOptions(payKey, function (err, response) {
if (err) {
console.log(err);
} else {
// payments options for this payKey
console.log(response);
}
});
// One of this params is required
// The payKey
var params = {
payKey: 'AP-1234567890'
};
// Or the transactionId
var params = {
transactionId: 'AP-1234567890'
};
// Or the trackingId
var params = {
trackingId: 'AP-1234567890'
};
paypalSdk.paymentDetails(params, function (err, response) {
if (err) {
console.log(err);
} else {
// payments details for this payKey, transactionId or trackingId
console.log(response);
}
});
var payload = {
requestEnvelope: {
errorLanguage: 'en_US'
},
actionType: 'PAY',
currencyCode: 'USD',
feesPayer: 'EACHRECEIVER',
memo: 'Chained payment example',
cancelUrl: 'http://test.com/cancel',
returnUrl: 'http://test.com/success',
receiverList: {
receiver: [
{
email: 'primary@test.com',
amount: '100.00',
primary:'true'
},
{
email: 'secondary@test.com',
amount: '10.00',
primary:'false'
}
]
}
};
paypalSdk.pay(payload, function (err, response) {
if (err) {
console.log(err);
} else {
// Response will have the original Paypal API response
console.log(response);
// But also a paymentApprovalUrl, so you can redirect the sender to checkout easily
console.log('Redirect to %s', response.paymentApprovalUrl);
}
});
var payload = {
currencyCode: 'USD',
startingDate: new Date().toISOString(),
endingDate: new Date('2020-01-01').toISOString(),
returnUrl: 'http://your-website.com',
cancelUrl: 'http://your-website.com',
ipnNotificationUrl: 'http://your-ipn-listener.com',
maxNumberOfPayments: 1,
displayMaxTotalAmount: true,
maxTotalAmountOfAllPayments: '100.00',
requestEnvelope: {
errorLanguage: 'en_US'
}
}
paypalSdk.preapproval(payload, function (err, response) {
if (err) {
console.log(err);
} else {
// Response will have the original Paypal API response
console.log(response);
// But also a preapprovalUrl, so you can redirect the sender to approve the payment easily
console.log('Redirect to %s', response.preapprovalUrl);
}
});
Note: The other API methods has default behavior by now: you send a payload and obtains the Paypal original response.
var payload = {
requestEnvelope: {
errorLanguage: 'en_US'
},
// another data required by API method
};
var callback = function (err, response) {
if (err) {
// Handle error
console.log(err);
} else {
// Paypal response
console.log(response)
}
};
// For Adaptive Payments
paypalSdk.cancelPreapproval(payload, callback);
paypalSdk.convertCurrency(payload, callback);
paypalSdk.executePayment(payload, callback);
paypalSdk.getFundingPlans(payload, callback);
paypalSdk.getShippingAddresses(payload, callback);
paypalSdk.preapprovalDetails(payload, callback);
paypalSdk.setPaymentOptions(payload, callback);
// For Adaptive Accounts
paypalSdk.addBankAccount(payload, callback);
paypalSdk.addPaymentCard(payload, callback);
paypalSdk.checkComplianceStatus(payload, callback);
paypalSdk.createAccount(payload, callback);
// To use this method you can set X-PAYPAL-SANDBOX-EMAIL-ADDRESS and X-PAYPAL-DEVICE-IPADDRESS headers passing 'sandboxEmailAddress' and 'deviceIpAddress' properties on config
paypalSdk.getUserAgreement(payload, callback);
paypalSdk.getVerifiedStatus(payload, callback);
paypalSdk.setFundingSourceConfirmed(payload, callback);
paypalSdk.updateComplianceStatus(payload, callback);
Tests can be ran with:
mocha
Paypal Adaptive Payments Paypal Adaptive Accounts
Copyright (c) 2014 Gonzalo Aguirre. See the LICENSE file for license rights and limitations (MIT).
FAQs
Paypal Adaptive (Payments & Accounts) SDK in node.js
The npm package paypal-adaptive receives a total of 639 weekly downloads. As such, paypal-adaptive popularity was classified as not popular.
We found that paypal-adaptive demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.