⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgpay.java

📁 java短信收费代码.极其好用的代码。功能齐全。
💻 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 + -