Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

com.paymentwall:paymentwall-java

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

com.paymentwall:paymentwall-java

This library allows developers to use Paymentwall APIs (Digital Goods API, Cart API, Brick Direct API, Virtual Currency API).

  • 2.0.4
  • Source
  • Maven
  • Socket score

Version published
Maintainers
1
Source

About Paymentwall

Paymentwall is the leading global payments platform.

Merchants can plugin Paymentwall's API to accept payments from over 150 different methods including credit cards, debit cards, bank transfers, SMS/Mobile payments, prepaid cards, eWallets, landline payments and others.

To sign up for a Paymentwall Merchant Account, click here.

Paymentwall Java Library

This library allows developers to use Paymentwall APIs (Digital Goods API, Cart API, Brick API, Virtual Currency API).

To use Paymentwall, all you need to do is to sign up for a Paymentwall Merchant Account so you can setup an Application designed for your site. To open your merchant account and set up an application, you can sign up here.

Installation

To install the library in your environment, you can download the ZIP archive, unzip it and place into your project.

Alternatively, you can run:

git clone git://github.com/paymentwall/paymentwall-java.git

Then use a code samples below.

Code Samples

Adding Paymentwall to your project using Apache Maven

<dependencies>
	<dependency>
		<groupId>com.paymentwall</groupId>
		<artifactId>paymentwall-java</artifactId>
		<version>2.0.4</version>
	</dependency>
</dependencies>

Digital Goods API

Initializing Paymentwall
import com.paymentwall.java.*;

Config.getInstance().setLocalApiType(Config.API_GOODS);
Config.getInstance().setPublicKey("YOUR_APPLICATION_KEY");
Config.getInstance().setPrivateKey("YOUR_SECRET_KEY");
Widget Call

Checkout API details

The widget is a payment page hosted by Paymentwall that embeds the entire payment flow: selecting the payment method, completing the billing details, and providing customer support via the Help section. You can redirect the users to this page or embed it via iframe. Below is an example that renders an iframe with Paymentwall Widget.

WidgetBuilder widgetBuilder = new WidgetBuilder("user12345", "pw");
widgetBuilder.setProduct(
	new ProductBuilder("product301") {{
		setAmount(0.99);
		setCurrencyCode("USD");
		setName("100 coins");
		setProductType(Product.TYPE_FIXED);
	}}.build()
);
widgetBuilder.setExtraParams(
	new LinkedHashMap<String, String>() {{
		put("email", "user@hostname.com");
	}}
);
Widget w = widgetBuilder.build();
return w.getHtmlCode();
Pingback Processing

The Pingback is a webhook notifying about a payment being made. Pingbacks are sent via HTTP/HTTPS to your servers. To process pingbacks use the following code:

Pingback pingback = new Pingback(request.getParameterMap(), request.getRemoteAddr());
if (pingback.validate()) {
	String goods = pingback.getProductId();
	String userId = pingback.getUserId();
	if (pingback.isDeliverable()) {
		// deliver Product to user with userId
	} else if (pingback.isCancelable()) {
		// withdraw Product from user with userId
	}
	return "OK";
} else
	return pingback.getErrorSummary();

Virtual Currency API

Initializing Paymentwall
import com.paymentwall.java.*;

Config.getInstance().setLocalApiType(Config.API_VC);
Config.getInstance().setPublicKey("YOUR_APPLICATION_KEY");
Config.getInstance().setPrivateKey("YOUR_SECRET_KEY");
Widget Call
WidgetBuilder widgetBuilder = new WidgetBuilder("user12345","p1_1");
widgetBuilder.setExtraParams(
	new LinkedHashMap<String, String>() {{
		put("email", "user@hostname.com");
	}}
);
Widget w = widgetBuilder.build();
return w.getHtmlCode();
Pingback Processing
Pingback pingback = new Pingback(request.getParameterMap(), request.getRemoteAddr());
if (pingback.validate()) {
	Integer currency = pingback.getVirtualCurrencyAmount();
	String userId = pingback.getUserId();
	if (pingback.isDeliverable()) {
		// deliver Product to user with userId
	} else if (pingback.isCancelable()) {
		// withdraw Product from user with userId
	}
	return "OK";
} else
	return pingback.getErrorSummary();

Cart API

Initializing Paymentwall
import com.paymentwall.java.*;

Config.getInstance().setLocalApiType(Config.API_CART);
Config.getInstance().setPublicKey("YOUR_APPLICATION_KEY");
Config.getInstance().setPrivateKey("YOUR_SECRET_KEY");

You have to set up your products in merchant area for exact regions first in order to use widget call example code below.

WidgetBuilder widgetBuilder = new WidgetBuilder("user12345","p1_1");
widgetBuilder.setExtraParams(
	new LinkedHashMap<String, String>() {{
		put("email", "user@hostname.com");
	}}
);
widgetBuilder.setProducts(new ArrayList<Product>(){{
	add(
		new ProductBuilder("product1") {{
			setAmount(9.99);
			setCurrencyCode("USD");
			setName("Product 1");
		}}.build()
	);
	add(
		new ProductBuilder("product2"){{
			setAmount(1);
			setCurrencyCode("USD");
			setName("Product 2");
		}}.build()
	);
}});
Widget w = widgetBuilder.build();
return w.getHtmlCode();
Pingback Processing
Pingback pingback = new Pingback(request.getParameterMap(), request.getRemoteAddr());
if (pingback.validate()) {
	ArrayList<Product> goods = pingback.getProducts();
	String userId = pingback.getUserId();
	if (pingback.isDeliverable()) {
		// deliver Product to user with userId
	} else if (pingback.isCancelable()) {
		// withdraw Product from user with userId
	}
	return "OK";
} else
	return pingback.getErrorSummary();

Brick

Initializing Paymentwall
Config.getInstance().setPublicKey("YOUR_APPLICATION_KEY");
Config.getInstance().setPrivateKey("YOUR_SECRET_KEY");
Create a one-time token
OneTimeToken token = new OneTimeToken();
token = (OneTimeToken) token.create(new LinkedHashMap<String, String>(){{
	put("public_key", Config.getInstance().getPublicKey());
	put("card[number]", "4242424242424242");
	put("card[exp_month]", "11");
	put("card[exp_year]", "19");
	put("card[cvv]", "123");
}});
return token.getToken();
Charge
Charge charge = new Charge();
charge = (Charge)charge.create(new HashMap<String, String>(){{
	put("token", token.getToken());
	put("email", "email@example.com");
	put("currency", "USD");
	put("amount", "10.99");
	// if you receive one-time token and make charge on same server, then use 
	// put("fingerprint", request.getParameter("fingerprint"));
	// instead of next 2 lines
	put("browser_domain", request.getHeader("VIA"));
	put("browser_ip", request.getRemoteAddr());
	put("description", "description");
}});

JSONObject response = charge.getPublicData();
if (charge.isSuccessful()) 
	if (charge.isCaptured()) {
		//deliver a product
	} else if (charge.isUnderReview()) {
		//decide on risk charge
	}
return response.toString(); // need for JS communication
Charge - refund
Charge charge = new Charge("CHARGE_ID");
charge = (Charge)charge.refund();
return charge.isRefunded();
Subscription
Subscription subscription = new Subscription();
subscription = (Subscription) subscription.create( new HashMap<String, String>() {{
	put("token" , token.getToken());
	put("email", "email@example.com");
	put("currency", "USD");
	put("amount", "10.99");
	// if you receive one-time token and make charge on same server, then use 
	// put("fingerprint", request.getParameter("fingerprint"));
	// instead of next 2 lines
	put("browser_domain", request.getHeader("VIA"));
	put("browser_ip", request.getRemoteAddr());
	put("description", "description");
	put("plan", "goodsid");
	put("period", "week");
	put("period_duration", "2");
}});
return subscription.get("id");
Subscription - cancel
Subscription subscription = new Subscription("SUBSCRIPTION_ID");
	subscription = (Subscription)(subscription.cancel());
return subscription.isActive();

Signature calculation - Widget

Signature.Widget widgetSignatureModel = new Signature.Widget();
return widgetSignatureModel.calculate(
	new LinkedHashMap<String, ArrayList<String>>(), // widget params
	2 // signature version
);

Singature calculation - Pingback

Signature.Pingback pingbackSignatureModel = new Signature.Pingback();
return pingbackSignatureModel.calculate(
    new LinkedHashMap<String, ArrayList<String>>(), // widget params
    1 // signature version
);

FAQs

Package last updated on 21 Nov 2022

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc