银联商务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 的相关文章

  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • “此应用程序已请求运行时以异常方式终止它”的原因是什么?

    Visual C 运行时抛出一个常见错误 此应用程序已请求运行时以异常方式终止它 请联系应用程序的支持团队以获取更多信息 该错误消息实际上是什么意思mean 让我用一个比喻来准确地解释我的问题 如果我看到一条消息 异常 访问冲突 0xc00
  • 如何在子 shell 中运行 cmd.exe 批处理文件

    我有一个批处理文件 通常像这样调用 longjob cmd gt result txt 2 gt 1 这工作正常 但脚本在执行过程中更改了目录 将我的 shell 留在该目录中 这很麻烦 有没有办法在子 shell 中运行命令 同时仍然允许
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • PostgreSql“运行安装后步骤...数据库集群初始化失败”

    我是一名 Windows 用户 我花了几个小时不断地安装和卸载 然后才使其正常工作 前 10 次左右才看到标题中的错误消息 我将其作为一个自我回答的问题放在这里 以防止其他人在安装时可能遇到同样的问题 并为像我这样第一次使用 Postgre
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 如何通过命令行将Flash .fla编译为.swf? [复制]

    这个问题在这里已经有答案了 如何在基于 Windows 的操作系统上通过命令行将 Flash fla 文件编译为 swf 需要安装的命令行工具就可以了 谁能建议我该怎么做 以直接的方式 谢谢 您可以使用JSFL为 Flash IDE 编写脚
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • 批处理脚本 FOR 循环仅设置输出的第一个字母 wsl --list -q

    我正在编写一个批处理脚本 将文件从 Windows 目录复制到 WSL 发行版 其中一部分是选择将文件复制到哪个发行版 如果我使用命令wsl list q如果给我以下输出 Ubuntu 22 04 Ubuntu 18 04 我正在尝试使用此
  • Jenkins 可以检测到任何 svn 用户每次提交代码吗?

    Jenkins 可以检测到任何 svn 用户每次提交代码吗 我想知道每次 Jenkins 提交 svn user 时 有什么方法或 jenkins 插件吗 现在我用svn updateJenkins 中的 cmd 来更新 svn 您可以按照
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • 防止 WNetAddConnection2 类允许被禁止的用户访问共享文件夹

    我开发了 C windows 应用程序 操作系统是Windows 7 要求 是使用带有凭据的代码访问网络共享文件夹 Test WNetAddConnection2 class 限制 是某些用户可以访问此共享文件夹 测试 但对于其他用户 设置
  • 如何设置任务在使用 vbs 登录时以当前用户身份运行而无需管理员权限?

    从命令行 我可以创建一个在登录时运行的计划任务 无需管理员权限或用户输入密码来设置任务 但是我必须使用 xml 文件来执行此操作 下面是一个示例 xml 其中 Domain User 部分必须在运行时替换为当前用户的域和名称
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • CPU 周期与总 CPU 时间

    在 Windows 上 GetProcessTimes 和 QueryProcessCycleTime 可用于获取应用程序所有线程的总计 我期望 显然是天真地 找到总周期数和总处理器时间 用户 内核 之间的比例关系 当转换为相同的单位 秒
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 什么是 SO_SNDBUF 和 SO_RCVBUF

    你能解释一下到底是什么吗SO SNDBUF and SO RCVBUF选项 好的 出于某种原因 操作系统缓冲传出 传入数据 但我想澄清这个主题 他们的角色 通 常 是什么 它们是每个套接字的缓冲区吗 传输层的缓冲区 例如 TCP 缓冲区 和

随机推荐

  • 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