银联缴费的实现

来源:互联网 发布:淘宝违规扣分 编辑:程序博客网 时间:2024/04/29 17:49

最近在做银联相关的工作,到现在为止基本完工了。就想把再次期间遇到的问题和解决办法列举出来,希望对其他人有所帮助。

做银联相关的工作就不得不说ISO8583这个报文协议,这家伙是一个规范应该是全都遵循的标准,所以研究银联项目的时候是一定要先学习学习这个ISO8583的。
这个报文的结构是这样的:
一般的报文都是按这个标准做的,报文长度就不用说了有多少数据就是多少,TPDU可以不同了这玩意跟地方有关系,一般都是从银联那里要的(开发中发现银联给的数据咱们还是的确认的,这玩意老更新搞不好就出了,我就被这个问题耽搁了好久),接下来就是报文头了。报文头也有一定的格式:

这样就把报文头搞定了,其实这些数据都是从他们给的文档中获取的(提示一点上送的报文是16进制的字符串 BCD码)。然后就根据文档封装对应的交易报文了,下面给出几个报文:
签到:003C600009000060210000000008000020000000C00012100002313430333230303038393833343031343930303030303500110000000100300003303030
消费:00B660000900006021000000000200302004C010C198111900000000000001000009270210 8106 010499622991150900952925D1561560500050001365013000000210101049121D000000000000D000000000000D0380270D00001409 3134303332303030 383938333430313439303030303035 00315041444C33343431312020 3635303031323132323720202030303030303023313536F02A69DD1826A4652600000000000000001122201308 0030E64D67B02CA037B8
冲正:0083600009000060210000000004003020048008C188111900000000000001000009960210816E756C6C2020202020202020313430333230303038393833343031343930303030303500315041444C33343431312020363530303132313232372020203030303030302331353626000000000000000011220000000030C9460E8028ECAEA0
这些报文从文图中可以发现对应的哪些域是存在的,从这些交易报文的返回报文的39域可以判断此次操作是否成功(00|3030)表示操作成功。
当然这些知识并不是就这几句话就能搞定的,只是列出了组包、发包和处理包时要注意的事项。只要你的报文是正确的银联的报文转发服务器就会将这些信息发送到银联卡所在银行进行交易。