Another Prototype Java ME payment API using HTTP
Article Metadata
This article needs to be updated: If you found this article useful, please fix the problems below then delete the {{ArticleNeedsUpdate}} template from the article to remove this warning.
Reasons: hamishwillee (26 Aug 2011)
JSR-229 is not supported on Nokia phones. It is not clear whether this payment API would work and whether there are alternatives on Nokia platforms now. I'm not an expert on Java ME though, so if a java me expert could comment on an appropriate title for the article and whether the code is "good", that would be helpful we can update this article appropriately
Reasons: hamishwillee (26 Aug 2011)
JSR-229 is not supported on Nokia phones. It is not clear whether this payment API would work and whether there are alternatives on Nokia platforms now. I'm not an expert on Java ME though, so if a java me expert could comment on an appropriate title for the article and whether the code is "good", that would be helpful we can update this article appropriately
I feel that JSR-229 (Payment API) is very much useful API for many applications. I am here trying to make a simple example on payment API. This example is about, you offer a demo version of your game to the user and want to attach a functionality that offer that if user wants, he can upgrade his game to the full version after paying appropriate money.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.payment.TransactionListener;
import javax.microedition.payment.TransactionModule;
import javax.microedition.payment.TransactionRecord;
import javax.microedition.payment.TransactionModuleException;
public class MyGame extends MIDlet implements TransactionListener, CommandListener {
private TransactionModule transModul;
private int upgrade = 0;
private boolean full_version = false;
private Display display;
private Command CMD_EXIT;
public MyGame(){
display = Display.getDisplay(this);
Form formMain = new Form("GamePay");
CMD_EXIT = new Command("Exit", Command.EXIT, 1);
formMain.addCommand(CMD_EXIT);
formMain.setCommandListener(this);
display.setCurrent(formMain);//display the game screen
try {
transModul = new TransactionModule(this);
}
catch(TransactionModuleException e) {
e.toString();
}
catch(Exception e) { }
try {
transModul.setListener(this);
} catch(Exception e) { }
}
public void startApp(){
while (!full_version) {
try {
//process the transaction of the money for the full version.
transModulo.process(upgrade, "full version", "if you like the demo version and you want to play the full version download the full version of the game");
synchronized(this) {
try {
wait(); //wait for some time
}
catch (InterruptedException ie) { }
}
}
catch (Exception e) { }
Alert alert; ;
if(full_version)
alert = new Alert("congrats!","welcome u have the full version of the game" ,null, AlertType.CONFIRMATION);
else
alert = new Alert("sorry","you are running a demo version of the game",null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
try {
Thread.sleep(5000);
}
catch (InterruptedException el) {
el.getMessage();
}
}
}
public void processed(TransactionRecord record){
switch(record.getState()) {
case TransactionRecord.TRANSACTION_SUCCESSFUL:
full_version=true;
break;
case TransactionRecord.TRANSACTION_REJECTED:
break;
case TransactionRecord.TRANSACTION_FAILED:
default:
break;
}
synchronized(this) {
notify();
}
}
protected void pauseApp() { }
protected void destroyApp(boolean arg0) { }
public void commandAction(Command command, Displayable displayable){
if (command == CMD_EXIT) {
destroyApp(true);
notifyDestroyed();
}
}
}
I have not tested this app for transferring money. I want to learn more about this api. So please try it in your system and tell me if you want to correct something.
For this program some jad entries are also required that is also I am giving below.
MIDlet-Version: 1.0.0
MIDlet-Vendor: Midlet Suite Vendor
MIDlet-Jar-URL: MyGame.jar
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
MIDlet-Name: MyGame Midlet Suite
Pay-AMEX-Info: X-CCARD, EUR, AMEX, https://localhost
Pay-AMEX-Tag-0: 1.55, full_version
Pay-Adapters: PPSMS,X-CCARD
Pay-DNSDNA-Info: PPSMS, EUR, 380, 77
Pay-DNSDNA-Tag-0: 1.45, 5550000, full_version
Pay-Feature-0: 0
Pay-MASTERCARD-Info: X-CCARD, EUR, MASTERCARD, https://localhost
Pay-MASTERCARD-Tag-0: 1.45, full_version
Pay-Providers: SONERA, VISA, RADIOG, DNSDNA, MASTERCARD, AMEX
Pay-RADIOG-Info: PPSMS, EUR, 747, 88
Pay-RADIOG-Tag-0: 1.35, 5550000,full_version
Pay-SONERA-Info: PPSMS, EUR, 928, 99
Pay-SONERA-Tag-0: 1.40, 5550000, full_version
Pay-Update-Stamp: 2004-08-12T13:30:00Z
Pay-Update-URL: http://localhost/MyGame/bin/MyGame.jpp
Pay-VISA-Info: X-CCARD, EUR, VISA, https://localhost
Pay-VISA-Tag-0: 1.50, full_version
Pay-Version: 1.0


Hamishwillee - Has anyone tried this?
At time of writing (Aug 2011) no Nokia devices support JSR 229. Payment API shows a payment API based on HTTP. IMO this article should be renamed - and needs review by an experthamishwillee 03:11, 26 August 2011 (EEST)