首先要在客户端注册 POS机DLL文件
页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="sendbypos.aspx.cs" Inherits="sendbypos" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<OBJECT
CLASSID="clsid:"
CODEBASE=""
ID=Pad
></OBJECT>
</head>
<body>
<SCRIPT language="javascript" >
function OpenComm()
{
var comNum=document.getElementById("TextBox2").value;
//alert(comNum);
if(Pad.OpenComm(comNum,57600,60)==1)
document.getElementById("TextBox1").innerHTML = "开启COM"+comNum+"成功";
else
document.getElementById("TextBox1").innerHTML= "开启COM"+comNum+"失败";
}
function CloseComm()
{
if(Pad.CloseComm()==1)
document.getElementById("TextBox1").innerHTML = "关闭COM口成功";
else
document.getElementById("TextBox1").innerHTML = "关闭COM口失败";
}
function AutoOpenComm()
{
var temp;
temp = Pad.AutoOpenComm(60);
//if(Pad.AutoOpenComm(60) >= 1)//Pad.AutoOpenComm(60)的返回值实例:开启串口二并且通讯成功,则值为2.
if(temp == 1)
document.getElementById("TextBox1").innerHTML = "自动开启COM1成功";
else if(temp == 2)
document.getElementById("TextBox1").innerHTML = "自动开启COM2成功";
else if(temp == 3)
document.getElementById("TextBox1").innerHTML = "自动开启COM3成功";
else if(temp == 4)
document.getElementById("TextBox1").innerHTML = "自动开启COM4成功";
else if(temp == 5)
document.getElementById("TextBox1").innerHTML = "自动开启COM5成功";
else if(temp == 6)
document.getElementById("TextBox1").innerHTML = "自动开启COM6成功";
else if(temp == 7)
document.getElementById("TextBox1").innerHTML = "自动开启COM7成功";
else if(temp == 8)
document.getElementById("TextBox1").innerHTML = "自动开启COM8成功";
else if(temp == 9)
document.getElementById("TextBox1").innerHTML = "自动开启COM9成功";
else
document.getElementById("TextBox1").innerHTML = "自动开启COM失败";
}
function TAPI_SendReq()
{
Pad.API_SendReq(98,getPOSStrXF());
var rs=document.getElementById("res");
rs.value=Pad.API_RecvResp();
//alert("asdf");
var a= document.getElementById("res").value;
//var x=a.toString().substring(2,4);
var aoder=document.getElementById("Track").innerText;
var orderid=document.getElementById("Track3").innerText;
window.open("sendbypos.aspx?res="+a+"&aoderAmount="+aoder+"&orderId="+orderid,"_self");
}
function cli()
{document.getElementById("Button3").click();}
//获取最终POS接口号
function getPOSStrXF()
{
var TransType = "00";
var money = getMoney();
var posid =getOK2( document.getElementById("shanghu").value,8);
var OperatorID =getOK2(document.getElementById("Track2").value,4);
var time = aaa();
var OrderID = getOrderID();
var leng = 98;
var result = TransType + money + posid + OperatorID + time + OrderID;
var num = leng - result.length;
for (var i = 0; i < num; i++)
{
result += " ";
}
return result;
}
//订单编号
function getOrderID()
{
var n=document.getElementById("Track3").innerText.length;
var OrderID = document.getElementById("Track3").innerText;
var leng = 20;
var num = leng - n;
var res = "";
for (var i = 0; i < num; i++)
{
res += " ";
}
res = res +OrderID;
return res;
}
//获取金额
function getMoney()
{
var oldmon= document.getElementById("Track").innerText;
var money = oldmon*100;
var res = "";
res = getOK(money, 12);
return res;
}
function getOK2(oldstr,leng)
{
var l=new String(oldstr);
var oldlen = l.length;
var num = leng - oldlen;
var res = "";
for (var i = 0; i < num; i++)
{
res += " ";
}
var result = res + oldstr;
return result;
}
function getOK(oldstr,leng)
{
var l=new String(oldstr);
var oldlen = l.length;
var num = leng - oldlen;
var res = "";
for (var i = 0; i < num; i++)
{
res += "0";
}
var result = res + oldstr;
return result;
}
function aaa()
{var a= new Date();
var mm=a.getMonth();
var dd=a.getDate();
var hh=a.getHours();
var ms=a.getMinutes();
var ss=a.getSeconds();
var str=new String();
if(mm<10)
{var m=mm+1;str+="0"+m;}
else
{str+=mm+1;}
if(dd<10)
{str+="0"+dd;}
else
{str+=dd;}
if(hh<10)
{str+="0"+hh;}
else
{str+=hh;}
if(ms<10)
{str+="0"+ms;}
else
{str+=ms;}
if(ss<10)
{str+="0"+ss;}
else
{str+=ss;}
return str;
}
</SCRIPT>
<form id="form1" runat="server">
<br />
<br />
<br />
<div style="text-align:center">
<input id="Button6" οnclick="OpenComm()" type="button" value="开启COM" />
<input id="Button7" type="button" οnclick="CloseComm()" value="关闭COM" />
<input id="Button1" type="button" value="自动开启COM" οnclick="AutoOpenComm()" />
<br />
<br />
<table>
<tr><td colspan="2"><div style="color:Red;" id="TextBox1">COM关闭状态</div><br /></td></tr>
<tr><td>金额</td><td><asp:Label ID="Track" runat="server" Text=""></asp:Label><br /></td></tr>
<tr><td>COM端口</td>
<td> <asp:TextBox ID="TextBox2" runat="server" Text="1"></asp:TextBox>(查看COM端口)</td></tr>
<tr><td>商户终端编号</td><td><asp:TextBox ID="shanghu" runat="server"></asp:TextBox>(一共8位数字)</td></tr>
<tr><td>收款员编号</td><td><asp:TextBox ID="Track2" runat="server" Text=""></asp:TextBox>(小于4位数字)</td></tr>
<tr><td>交易定单编号</td><td><asp:Label ID="Track3"
runat="server" Text="Label"></asp:Label></td></tr>
<tr><td colspan="2">
<input id="Button2" type="button" οnclick="TAPI_SendReq()" value="消费" /><asp:Button ID="Button4" Visible="false" runat="server" Text="消费" OnClick="Button4_Click" />
<span style="color:Red">温馨提示:检查POS机连接、细心填写</span></td></tr>
<asp:Button ID="Button5" OnClick="Button6_Click" runat="server" Text="关闭" /></table>
<asp:Label ID="jieguo" runat="server" Visible="false" Text=""></asp:Label>
<asp:Label ID="last" runat="server" Text=""></asp:Label>
<asp:Label ID="lastpos" runat="server" Text=""></asp:Label>
<input id="res" value="asdf" type="text" />
<asp:Button ID="Button3" runat="server" Text="Button" Visible="false" OnClick="Button3_Click1" />
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using NLUnitPadLib;
public partial class sendbypos : System.Web.UI.Page
{
public NLUnitPadLib.NLUnitPadClass nplca = new NLUnitPadLib.NLUnitPadClass();
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["res"] == null || Request.QueryString["res"] == "")
{
Track.Text = Request.QueryString["aoderAmount"].Trim();
Track3.Text = Request.QueryString["orderId"].Trim();
}
else
{
Track.Text = Request.QueryString["aoderAmount"].Trim();
Track3.Text = Request.QueryString["orderId"].Trim();
jieguo.Text = Request.QueryString["res"].ToString();
string jg = jieguo.Text.Trim();
if (jg.Length > 4)
{
string yz = jg.Substring(2, 2);
if (yz == "00")
{
datachange(Track3.Text.Trim(), Track.Text.Trim());
Response.Write("<script>alert('充值成功!');</script>");
}
else
{
Response.Write("<script>alert('充值失败!');</script>");
}
}
else
{ Response.Write("<script>alert('充值失败!');</script>"); }
}
}
protected void Button6_Click(object sender, EventArgs e)
{
Response.Write("<script>window.open('','_self');top.opener=null;top.close();</script>");
}
protected void Button2_Click(object sender, EventArgs e)
{
//if (nplca.CloseComm() == 1)
//{
// TextBox1.Text = "COM成功关闭";
//}
//else
//{
// TextBox1.Text = "COM关闭失败";
//}
}
protected void Button3_Click(object sender, EventArgs e)
{
//NLUnitPadLib.NLUnitPadClass np = new NLUnitPadLib.NLUnitPadClass();
//int temp = nplca.AutoOpenComm(60);
//if (temp == 1)
//{
// TextBox1.Text = "自动开启COM1成功";
//}
//else if (temp == 2)
// TextBox1.Text = "自动开启COM2成功";
//else if (temp == 3)
// TextBox1.Text = "自动开启COM3成功";
//else if (temp == 4)
// TextBox1.Text = "自动开启COM4成功";
//else if (temp == 5)
// TextBox1.Text = "自动开启COM5成功";
//else if (temp == 6)
// TextBox1.Text = "自动开启COM6成功";
//else if (temp == 7)
// TextBox1.Text = "自动开启COM7成功";
//else if (temp == 8)
// TextBox1.Text = "自动开启COM8成功";
//else if (temp == 9)
// TextBox1.Text = "自动开启COM9成功";
//else
// TextBox1.Text = "自动开启COM失败";
}
protected void Button4_Click(object sender, EventArgs e)
{
last.Text = "请等待。。";
string res = "";
string money = getMoney(double.Parse(Track.Text.Trim()));
string posid = shanghu.Text.Trim();
string operid = getoperid(Track2.Text.Trim());
string OrderID = getOrderID(Track3.Text.Trim());
res = getPOSStrXF(money, posid, operid, OrderID);
//发送
// nplca.API_SendReq(98,res);
lastpos.Text = res;
}
protected static void datachange(string orderId,string track)
{
SqlComm mysqlcomm = new SqlComm();
string userid = string.Empty;
int id = 0;
string sql = "select userid,id from bremittance where ordernc='" + orderId + "' and state=0";
SqlDataReader dr = mysqlcomm.GetDataReader(sql);
if (dr.Read())
{
userid = dr["userid"].ToString();
id = int.Parse(dr["id"].ToString());
string moneyNote = "汇款";
balance Mymoney = new balance();
float beforeMoney = Mymoney.user_balance(userid);
float moneys = float.Parse(track);
string type = "汇款";
remitAuditing Myremit = new remitAuditing();
Myremit.remitAud(moneys, userid, DateTime.Now, beforeMoney + moneys, moneyNote, id, type);
}
dr.Close();
}
protected void Button5_Click(object sender, EventArgs e)
{
nplca.API_SendReq(98, this.Track2.Text);
this.Track3.Text = nplca.API_RecvResp();
}
public static string getoperid(string str)
{
string res = "";
int leng = 4;
int num = leng - str.Trim().Length;
for (int i = 0; i < num; i++)
{
res = res + "0";
}
res = res + str.Trim();
return res;
}
//获取最终POS接口号
protected static string getPOSStrXF(string jine, string pid, string OpeID, string OrdID)
{
string TransType = "00";
string money = jine;
string posid = pid;
string OperatorID = OpeID;
string time = DateTime.Now.ToString("MMddHHMMss");
string OrderID = OrdID;
int leng = 98;
string result = TransType + money + posid + OperatorID + time + OrderID;
int num = leng - result.Length;
for (int i = 0; i < num; i++)
{
result += " ";
}
return result;
}
//订单编号
public static string getOrderID(string orderid)
{
string OrderID = orderid.Trim();
int leng = 20;
int num = leng - OrderID.Length;
string res = "";
for (int i = 0; i < num; i++)
{
res += " ";
}
res = res + OrderID;
return res;
}
//获取金额
protected static string getMoney(double oldmon)
{
string money = oldmon.ToString().Trim();
int point = money.LastIndexOf(".");
string res = "";
if (point == -1)
{
res = money + "00";
res = getOK(res, 12);
}
else
{
string res1 = money.Substring(0, point);
string res2 = money.Substring(point + 1);
if (res2.Length > 2)
{
res2 = res2.Substring(0, 2);
}
else if (res2.Length == 2)
{
}
else if (res2.Length == 1)
{ res2 = res2 + "0"; }
else if (res2.Length == 0)
{ }
res = getOK(res1 + res2, 12);
}
return res;
}
//获取字符处,根据固定长度
protected static string getOK(string oldstr, int leng)
{
int oldlen = oldstr.Length;
int num = leng - oldstr.Length;
string res = "";
for (int i = 0; i < num; i++)
{
res += "0";
}
string result = res + oldstr;
return result;
}
protected void Button3_Click1(object sender, EventArgs e)
{
string jg = jieguo.Text.Trim();
if (jg.Length > 4)
{
string yz = jg.Substring(2, 2);
if (yz == "00")
{
datachange(Track3.Text.Trim(), Track.Text.Trim());
Response.Write("<script>alert('充值成功!');</script>");
}
else
{
Response.Write("<script>alert('充值失败<>0!');</script>");
}
}
else
{ Response.Write("<script>alert('充值失败<4!');</script>"); }
}
}