?? msgpay.java
字號:
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
/*
* MsgPay.java
* 用于通過短信的形式,用戶把指令發送SP的端口號上進行付款
*
* 測試通過的手機型號包括
* Moto E398 V300
* Nokia 3230 7260 6101 3100 (QD,7650不支持)
* 索愛 W550C (K700C不支持)
* 詳細說明,請看最底部的文字說明
*/
public final class MsgPay {
/**
* 端口號
* 即發送SP在移動上所注冊的端口號,由SP規定
* 暫時有兩個,如有新的,日后補充
* 測試時,程序員可以修改為任意中國移動的手機號碼,如"13888888888"、自己或同事的號碼
*/
/**跟指令DICTATE_YX組合,就收取1元的資費*/
// private final String PORT_66550 = "66550"; //"66550";
private final String PORT_916066 = "916066"; //"66550";
// private final String PORT_916066 = "13818365949"; //"66550";
/**跟指令DICTATE_YX組合,就收取1.5元的資費*/
// private final String PORT_6655328 = "6655328"; //"6655328"
/**
* 指令內容
* 即所發信息的內容,由SP規定
* 暫時有一個,如有新的,日后補充
* 測試時可以任意內容,如"你好"
*/
/**指令內容*/
private final String DICTATE_YX = "SU"; //"SU"
/**是否已經付款的記錄名*/
// private final String strRecordName = "payRecode";
//發送消息結果
/**發送成功*/
public final static int SEND_SUCCESS = 0;
/**發送失敗,發送時用戶按了取消*/
public final static int SEND_USERCANCLE = 1;
/**發送失敗,手機卡過期,非移動的電話卡,或余額不足訂購費用其它失敗原因*/
public final static int SEND_FAIL = 2;
/**沒有記錄*/
public final static int REC_NONE = -1;
private String strWebID = "";
/** 構造函數 */
public MsgPay() {
String strWebIDTemp = getWebID();
if (strWebIDTemp != null) {
strWebID = strWebIDTemp;
}
}
/**
* 得到所下載網站的ID
* 這里由SP來定,開發時沒有該文件也沒有問題
*/
private String getWebID() { //由SP來定
return "shwx011403";
}
/**付款1元*/
public int payOneYuan() {
return sendMessage(PORT_916066, DICTATE_YX);
}
/**付款1.5元*/
// public int payOnePointFiveYuan() {
// return sendMessage(PORT_6655328, DICTATE_YX);
// }
/**
* 發送信息
* String strPort為端口號,請在以PORT_開頭的常量里選
* String strDictate為指令號,請在以DICTATE_開頭的常量里選
* 調用時,要放到線程里使用
* 返回TRUE即發送成功,
* 返回FALSE即發送失敗,
* 當手機系統詢問用戶是否發信息時,用戶選擇“否”或“不發送”,也會返回FALSE
*/
private int sendMessage(String strPort, String strDictate) {
//返回值
int result = SEND_FAIL;
MessageConnection conn = null;
try {
//地址
String address = "sms://" + strPort;
//建立連接
conn = (MessageConnection) Connector.open(address);
//設置短信息類型為文本,短信息有文本和二進制兩種類型
TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.
TEXT_MESSAGE);
msg.setAddress(address);
//設置信息內容
msg.setPayloadText(strDictate + strWebID);
//發送
conn.send(msg);
result = SEND_SUCCESS;
}
catch (SecurityException ex1) {
//當手機系統詢問用戶是否發出信息,用戶選擇“否”時,會拋出這個異常
//不想顯示時,可以把 ex1.printStackTrace() 語句注釋
//未處理
result = SEND_USERCANCLE;
System.out.println("SEND_USERCANCLE");
// ex1.printStackTrace();
}
catch (IOException ex) {
System.out.println("SEND_FAIL");
//未處理
// ex.printStackTrace();
}
finally {
try {
if (conn != null) {
conn.close();
}
}
catch (IOException ex) {
ex.printStackTrace();
}
}
System.out.println("return result");
return result;
}
}
/**
* 開 發 注 意
*
* 1.需要用戶短信付款前,請在游戲中以明文形式向用戶說明收費,(參考):"本游戲收
* 費**元,如果支付,請選“是”,稍候將會收到收費提示短信。",如果是通過電話費買游戲
* 幣的,可以提示為“一元可換得游戲幣50,如果支付,請選“是”,稍候將會收到收費提示短
* 信。”并可以給用戶選擇是否發送這操作。發送信息的時間因手機的不同,所用時間會有長短,
* 必要時請用界面形式說明,如“發送中...”。
*
* 2.發送信息后,請根據返回值作相應的處理,如發送成功,用戶取消了,或發送失敗。
*
*
* 主要幾種付費方式及使用方法
*
* 一、一次性付款
* 在開始游戲前,通過isHasRecord()函數檢查RMS中是否有已經收費的記錄,如果有該記錄,
* 就可以直接進入游戲;否則,通過sendMessage(),成功收取費用后就可以進入游戲,并通過
* saveToRMS(int value)函數向RMS插入記錄(參數可隨意整數)。
*
* 二、RPG游戲里的買道具
* 只使用sendMessage()函數,我們先定好每發一次短信所收取的費用,如¥1元,你們就跟
* 這個收費來定物品,如¥1元可買5個小藥水,或換50游戲幣等等。如果有其他價格的收費,共同
* 商議。
*
* 三、按關卡收費
* 用getPassedLevel()函數查看已存記錄,如果返回REC_NONE,即為一關那沒有玩過,從第一
* 關開始收費。saveToRMS(int value)函數用于存儲記錄已過關卡號。
*
* 四、復活
* 只使用sendMessage()函數,然后根據游戲的設定,到指定的地方復活(如原地復活,定
* 點復活)。
*
* 五、共同商議
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -