银联商务MISPOS接口开发demo 需要调用POSINF.DLL

2023-11-10

1、接口文档

1.1 无gmc界面接口 (dll/ocx)

dll调用(posinf.dll)函数名为:int bankall (char * request,char *response),其中第一个参数为传入参数。

ocx调用(umsocx.ocx)trans(),传入参数为:bankrequest

请求参数格式说明如下:

内容

格式

长度

描述

POS机号

ANS

8

不足右补空格

POS员工号

ANS

8

不足右补空格

交易类型标志

N

2

'00'-消费        '01'-撤消

'02'-退货        '03'-查余额

'04'-重打印      '05'-签到

'06'-结算        '07'-重打结算单

'08'-全民付()   '55'-换班统计

72''78':全民付类交易

'10'-积分消费        '11'-积分撤消

'12'-分期消费        '13'-分期撤销

'21'-预授权         '23'-预授权完成请求

'24'-预授权完成通知  '25'-预授权撤销

'26'-预授权完成撤销  '27'-离线结算

'28'-结算调整

金额

N

12

信用卡消费金额,char(12),没有小数点".",精确到分,最后两位为小数位,不足左补0。

原交易日期

N

8

yyyymmdd格式,退货时用,其他交易空格

原交易参考号

N

12

退货时用,其他交易空格

原凭证号

N

6

撤消时用,其他交易空格

LRC校验

ANS

3

3位随机数字

全民付(行业信息)

N

100

行业信息(非全民付类交易无需送此项)(全民付类不送此项,则为键盘输入)

 

dll调用(posinf.dll)函数名为:int bankall (char * request,char *response),其中第二个参数为应答参数。

ocx调用函数名为:trans(),传入参数为:BankResponse

应答参数格式说明如下:

内容

格式

长度

描   述

返回码

N

2

00 表示成功,其它表示失败

银行行号

N

4

发卡行代码

卡号

N

20

卡号(屏蔽部分,保留前64

凭证号

N

6

 

金额

N

12

 

错误说明

ANS

40

中文解释

商户号

N

15

 

终端号

N

8

 

批次号

N

6

 

交易日期

N

4

 

交易时间

N

6

 

交易参考号

N

12

 

授权号

N

6

 

清算日期

N

4

 

LRC校验

ANS

3

三位数字,应该和请求一致

1.2 符号定义

数据元类型如下所列:

— A 字母向左靠,右部多余部分填空格。

— AN 字母和/或数字,左靠,右部多余部分填空格。

— ANS 字母、数字和/或特殊符号,左靠,右部多余部分填空格。

— N 数值,右靠,首位有效数字前充零。若表示金额,则最右二位为角分。

— MM 月。

— DD 日。

— hh 时。

— mm 分。

— ss 秒。

注意:本接口文档中信息交换数据,均为定长,注意按照要求补足空格。

2、代码实现如下:

//外部函数声明
FUNCTION long bankall(string as_request, ref string as_response) LIBRARY "posinf.dll"




//调用
string    ls_content,ls_sellway,ls_money,ls_OldDate
string   ls_posid,ls_casher,ls_rand
dec{2}   ldec_needpay, ldec_pay,ldec_consume
dec{2}   ldec_cnt,ldec_payed
string    ls_cardid,ls_voucher,ls_consume
string    ls_info,ls_refno,ls_OldRefno,ls_OldVoucher


//'00'-消费'01'-撤消'02'-退货'03'-查余额'04'-重打印'05'-签到'06'-结算'07'-重打结算单
ls_sellway=left(sle_type.text,2)
if pos('00/01/02/03/04/05/06/07',ls_sellway)=0 then 
    messagebox('提示','请录入正确的交易类型!')
    sle_type.setfocus()
    sle_type.selecttext(1,len(sle_type.text))
    return
end if


///交易金额
if ls_sellway='00' or ls_sellway='01' or ls_sellway='02' then 
    //'00'-消费'01'-撤消'02'-退货
    ldec_needpay=abs(dec(sle_payamt.text))
    if ldec_needpay=0 or (not IsNumber(sle_payamt.text)) then
        messagebox('提示','请录入金额!')
        sle_payamt.setfocus()
        sle_payamt.selecttext(1,len(sle_payamt.text))
        return
    end if      
else
    ldec_needpay=0
end if


//'02'-退货//原交易日期、原交易参考号    
if ls_sellway='02' then 
    ls_OldDate=trim(sle_date.text)
    if isnull(ls_OldDate) or ls_OldDate='' or len(ls_OldDate)<>8 then 
        messagebox('提示','请录入原交易日期(8位),格式为yyyymmdd!')
        sle_date.setfocus()
        sle_date.selecttext(1,len(sle_date.text))
        return
    end if
    
    ls_OldRefno=trim(sle_refno.text)
    if isnull(ls_OldRefno) or ls_OldRefno='' or len(ls_OldRefno)<>12 then 
        messagebox('提示','请录入原交易参考号(12位)!')
        sle_refno.setfocus()
        sle_refno.selecttext(1,len(sle_date.text))
        return
    end if
    
else
    ls_OldDate=space(8)
    ls_OldRefno=space(12)
end if


//'01'-撤消//原凭证号
if ls_sellway='01' then 
    ls_OldVoucher=trim(sle_voucher.text)
    if isnull(ls_OldVoucher) or ls_OldVoucher='' or len(ls_OldVoucher)<>6 then 
        messagebox('提示','请录入原凭证号(6位)!')
        sle_voucher.setfocus()
        sle_voucher.selecttext(1,len(sle_date.text))
        return
    end if
else
    ls_OldVoucher=space(6)
end if


ls_posid='99'
ls_casher='1001'
ls_money=string(round(ldec_needpay,2)*100,'000000000000')
ls_rand=string(rand(999),'000') ///3位随机数字
//传给银行卡刷卡系统的交易请求文件:
//POS机号(8位,不足右补空格)+POS员工号(8位,不足右补空格)+交易类型标志(2位)+金额(12位,不足左补0)+
//原交易日期(8位,yyyymmdd格式,退货时用,其他交易空格)
//原交易参考号(12位,退货时用,其他交易空格)
//原凭证号(6位,撤消时用,其他交易空格)
//备用(000000)+LRC(3位随机数字)
ls_content=ls_posid+space(8 - len(ls_posid)) +ls_casher+space(8 - len(ls_casher)) +ls_sellway+ls_money+&
+ls_OldDate+ls_OldRefno+ls_OldVoucher+'000000'+ls_rand


ls_info=space(300)
bankall(ls_content,ls_info)


if left(ls_info,2)='00' then     //响应码2位, 00 表示成功,其它表示失败
    ls_cardid =mid(ls_info,7,20)  //卡号20位    
    ls_voucher=mid(ls_info,27,6)   //凭证号6位
    ls_consume=mid(ls_info,33,12)  //金额12位    
    ls_refno  =mid(ls_info,124,12)  //交易参考号12
    messagebox('提示',"交易成功,金额为"+string(dec(ls_consume)/100)+",~r~n凭证号是:"+ls_voucher+",交易参考号是:"+ls_refno)
else
    messagebox('提示',"交易失败,返回值:"+left(ls_info,2)+",失败原因:"+mid(ls_info,45,40))
    return 
end if
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

银联商务MISPOS接口开发demo 需要调用POSINF.DLL 的相关文章

  • 为什么tcl/tkinter只支持BMP字符?

    我正在尝试在基于 tkinter 和 tcl 构建的 gui 中查询和显示 utf 8 编码字符 但是 我发现 tkinter 无法显示 4 字节字符 即大于 U FFFF 的 unicode 代码点 为什么会这样呢 实现非 BMP 字符对
  • 使用 Python 将 Excel 中的图表导出为图像

    我一直在尝试将 Excel 中的图表导出为 Python 中的图像文件 JPG 或 ING 我正在查看 WIn32com 这是我到目前为止所拥有的 import win32com client as win32 excel win32 ge
  • 为什么我的文件路径中出现 Unicode 转义的语法错误? [复制]

    这个问题在这里已经有答案了 我想要访问的文件夹名为 python 位于我的桌面上 当我尝试访问它时出现以下错误 gt gt gt os chdir C Users expoperialed Desktop Python SyntaxErro
  • 在 Windows 2008 上将 myprogram.exe 作为服务运行时出现问题

    MyProgram exe 是用来侦听来自管道的请求并使用命令提示符使其工作完美 但我尝试使用 Windows 服务来工作但没有成功我在 Windows Server 2008 Enterprise 上尝试了以下步骤 gt sc creat
  • 如何更改选项卡控件的名称

    我在 C WinForms 应用程序中使用选项卡控件 我想更改选项卡的标题 默认情况下它们是 tabPage1 tabPage2 等 一种无需代码即可实现的懒惰方法 选择选项卡控件 Go to properties use F4 to do
  • Windows7上python3.5无法安装BeautifulSoup4

    我已经从下载了 beautifulsoup4 4 5 3 tar gzhttps www crummy com software BeautifulSoup bs4 download 4 5 https www crummy com sof
  • 确定用于映射网络驱动器的域和用户名

    使用带有 SP1 的 Windows 7 Enterprise 但我希望得到适用于 Windows XP 2003 2008 Vista 7 的通用答案 从命令提示符处 我执行net use命令将 Z 驱动器映射到另一台计算机上的共享 但我
  • 用于验证 IIS 设置的 Powershell 脚本

    是否可以使用 Power Shell 脚本获取 IIS 设置 我希望使用脚本获取 检查以下信息 检查 Windows 身份验证提供程序是否正确列出 协商 NTLM 检查是否启用了 Windows 身份验证 Windows 身份验证高级设置
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • Git 扩展 - 无法在 Windows 上推送到网络驱动器中的 git bare 存储库

    我正在 Windows 上学习 git 我已经安装了 Git 扩展 版本 2 47 3 并使用了它 我在我的 C 单元中创建了一个裸存储库 作为中央存储库 并在硬盘中的其他任何位置创建了个人存储库 我对硬盘中的这两个存储库进行提交 推送和拉
  • Kerberos 双跳

    我们遇到了臭名昭著的 Kerberos 双跳问题 这是一个全新的域 是从以前使用模拟和委派的另一个提供商迁移而来的 我们已将操作系统升级到最新的 SQL 服务器 2017 WPF 应用程序 使用域凭据 gt Web 服务 IIS 10 上的
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • Windows 窗口对接

    我想知道如何在 Windows 中将窗口停靠 捕捉到屏幕的一侧 最好使用直接的 Win32 API 我正在寻找的效果就像任务栏 一个在屏幕上有保留空间的窗口 因此最大化另一个窗口会使该窗口占据屏幕的其余部分 但使我的窗口保持在适当的位置并可
  • 为什么我只能用管理员权限才能导入Python中的某些模块?

    我正在努力解决 Python 2 7 中的一些奇怪问题 我写了一个很长的工具 在其中导入不同的模块 我必须首先使用它安装pip 该工具将在公司内部共享 不同的用户在其特定机器上拥有不同的权限 当另一个用户登录我的计算机 我在那里拥有管理员权
  • 对于多重继承,使用隐式转换而不是 QueryInterface() 是否合法?

    假设我有一个类实现两个或多个 COM 接口 正如here https stackoverflow com questions 1742848 why exactly do i need an explicit upcast when imp
  • Windows C++ 中的键盘钩子还是什么?

    我希望构建自己的应用程序 它可以将键盘命令 消息 发送到 Windows 操作系统 例如 当我按下组合键 ctrl shift n 时 我希望启动 notepad exe 我怎样才能做到这一点 您对所使用的概念有什么建议吗 我读过 何时使用
  • Windows 目录永远不会包含临时文件的非 ASCII 字符?

    在 Windows 上使用 MinGW 7 3 0 由于 Windows 限制 Hunspell 无法从包含非 ASCII 字符的位置加载字典文件 我已经尝试了所有方法 1 现在我将文件复制到没有 ASCII 字符的路径 然后再将其交给 H

随机推荐

  • vs2010 点击时应用程序无法正常启动(0xc000007b).请单击“确定”关闭应用程序解决办法

    昨天做项目的时候 在安装一个win32的应用程序后再次启动vs2010时发现报错 就是如下的错误 哎呀 我的天 关键时刻就打不开了 这么怎么办呢 赶紧去搜解决办法 1 使用Directx修复 修复了180个左右的dll文件 但是没有解决我的
  • 卷积操作中的卷积核形状到底是怎样的

    input shape 2 5 5 kernal size 2 3 3 kernal amount 3 卷积核的维度与输入的维度一致 都是三维的 最后的输出的通道数与卷积核数量一致 用了三个卷积核 就会输出三个通道
  • IDEA最好用的插件推荐,吐血整理!

    作者 明明如月 来源 慕课专栏 阿里巴巴Java开发手册 1 前言 俗话说 工欲善其事 必先利其器 为了助力大家的学习和进阶 本小节介绍几个对 Java 学习非常有帮助的 IDEA 插件 代码反编译和反汇编工具 以及非常不错的网站等 2 I
  • 【板子】

    线段树 1 include
  • c语言数组处理实验报告心得体会,C语言实验报告总结计划数组.doc

    学 生 实 验 报 告 学院 软件与通信工程学院 课程名称 C 语言与程序设计 专业班级 通信 121 姓名 学号 学生实验报告 4 学生姓名 学号 同组人 实验项目 函数 必修 选修 演示性实验 验证性实验 操作性实验 综合性实验 实验地
  • 海量数据存储方案

    参考原文 http blog csdn net xlgen157387 article details 53230138 一 网站应用背景 开发一个网站的应用程序 当用户规模比较小的时候 使用简单的 一台应用服务器 一台数据库服务器 一台文
  • 使用ffmpeg将图片将图片合成视频或者取视频帧作为视频封面

    首先需要下载ffmpeg exe将exe文件放入资金的程序bin目录 然后通过命令行的方式调用ffmpeg是完成想要做的事情 这里举两个最简单的例子 将图片合成视频或者取视频帧作为视频封面 string pathString AppDoma
  • overleaf怎么输入中文_OverLeaf v2 的入门及中文编辑

    Overleaf 以前的WriteLaTex 是一种可在线使用的LaTex文档的书写平台 用户可以不用花费大量的时间和精力在自己的机器上搭建Tex环境 他们可以方便地在线编辑和书写LaTex文档 2017年6月 类似的平台 ShareLaT
  • TB-RK3399pro成砖后Typec无法连接电脑的方法

    TB RK3399pro 即为toybrick的3399pro板 成砖原因 强行刷友善之臂的3399固件 且失败 解决方法 1 断开所有连接 2 用Typec连接电脑 3 按下板子正面的 maskrom 按键 在散热片固定钉旁的一个小按键
  • USB数据接口类型

    为了方便下载数码相机记忆体中的文件 数码相机和PC的连接有多种方式 常见的就是USB接口和IEEE1394火线接口 USB与IEEE1394比较 两者的传输速率不同 过去 很多人都会选用IEEE1394作传输文件用 因为其流量比USB1 1
  • 开环与闭环传递函数波特图的意义

    注 本文默认读者都是控制类专业 先复习一下奈氏曲线和奈氏判据 以及波特图 下面进入今天的主题 开环与闭环传递函数波特图的意义 分为如下三个部分 开环波特图的意义 闭环波特图的意义 为什么大多研究开环波特图 开环与闭环传递函数 一个典型的控制
  • stm32学习—库函数总结

    库函数总结这一章 描述了一般stm32开发的流程 一些常用库函数的设置 一般一开始是使用结构体进行数据的初始化 然后通过使用的途径进行划分 比如常用的数据的输出和输出 这在大部分的外设中都是大量涉及的 再接是辅助我们进行逻辑代码的设计的状态
  • 如何在Java项目中定义并调用自己编写的native方法?

    如何在Java项目中定义并调用C C 编写的native方法 开发工具 编写测试的java代码 编写C 代码 将dll文件链接到java项目中 总结 开发工具 IntelliJ IDEA 2020 用来编写java代码 Visual Stu
  • 关于Markdown表格中如何进行换行、合并单元格

    关于Markdown表格中如何进行换行 合并单元格 1 表格中内容对齐 换行 设置对齐方式 表格内容换行 2 表格中单元格的合并 合并表格行 合并表格列 综合使用 1 表格中内容对齐 换行 常规表格使用 一般我们都会这样用表格如下 姓名 年
  • Kruskal算法求解最小生成树

    最小生成树是一个连通图 什么是连通图 强 连通图详解前面介绍了 图存储结构 本节继续讲解什么是 连通图 前面讲过 图中从一个顶点到达另一顶点 若存在至少一条路径 则称这两个顶点是连通着的 例如图 1 中 虽然 V1 和 V3http c b
  • 空间相关分析(三) 局部莫兰指数的理解与计算

    在上篇中 我们详细地阐述了全局莫兰指数 Global Moran I 的含义以及具体的软件实操方法 今天 就来进一步地说明局部莫兰指数 Local Moran I 的含义与计算 首先说明一下进行局部相关分析的必要性 在全局相关分析中 如果全
  • Java8新特性之时间API

    本篇主要介绍Java 8中新引入的全新的一套时间API Java 8之前的Date类的缺陷 java util包和java sql包中都有一个Date类 区别是util包中的Date类存储的是年月日时分秒 而sql包中的Date只存储年月日
  • 小程序随机生成文字卡片文案海报,带分享保存

    概述 文字随机生成 更换头像 生成卡片 保存卡片 分享卡片 详细 文字随机生成 更换头像 生成卡片 保存卡片 分享卡片 数据是在data js中 随机文案获取 demo直接在微信开发者工具可以运行 index xml 代码
  • python字典中的键是什么_python字典中的键是什么

    字典的键 字典中的值没有任何限制 可以是任意Python对象 即从标准对象到用户自定义对象皆可 但是字典中的键是有类型限制的 1 不允许一个键对应多个值 必须明确一条原则 每个键只能对应一个项 也就是说 一键对应多个值是不允许的 像列表 元
  • 银联商务MISPOS接口开发demo 需要调用POSINF.DLL

    1 接口文档 1 1 无gmc界面接口 dll ocx dll调用 posinf dll 函数名为 int bankall char request char response 其中第一个参数为传入参数 ocx调用 umsocx ocx t