直接上代码

if options.umpay_private_key is not None and len(options.umpay_private_key) > 0:
    try:
        with open(options.umpay_private_key) as keyfile:
            keydata = keyfile.read()
        rsakey = RSA.importKey(keydata)
        _umpay_signer = PKCS1_v1_5.new(rsakey)
        #测试代码
        #digest = SHA.new()
        #sign_data ="amount=1&amt_type=RMB&charset=UTF-8&expire_time=30&goods_inf=充值支付房租&mer_date=20131009&mer_id=6379&notify_url=http://wap.zufangbao.cn/netpay/ldpaycallback.htm&order_id=111784&ret_url=http://wap.zufangbao.cn/netpay/ldpayreceive.htm&service=pay_req&version=4.0"
        #digest.update(sign_data.encode("gbk"))
        #sign = _umpay_signer.sign(digest)
        #ret = base64.b64encode(sign)
        #print ret
    except:
        log.fatal("load umpay private key failed. %s" % str(sys.exc_info()))

_umpay_verifier = None #联动优势验证器
if options.umpay_public_key is not None and len(options.umpay_public_key) > 0:
    try:
        with open(options.umpay_public_key) as keyfile:
            keydata = keyfile.read()
        from Crypto.Util.asn1 import DerSequence
        cert = DerSequence()
        cert.decode(keydata)
        tbsCertificate = DerSequence()
        tbsCertificate.decode(cert[0])
        subjectPublicKeyInfo = tbsCertificate[6]
        # Initialize RSA key
        rsakey = RSA.importKey(subjectPublicKeyInfo)
        _umpay_verifier = PKCS1_v1_5.new(rsakey)
        #测试代码
        #digest = SHA.new()
        #sign = "nyTGvSfe8AaBj2WHs4vYhr32bBvMS1UdXuSjWwmvqy4GYgpfNuKlkiadsOhxSGv6SzLfPNp+uYHQnWIvcRe8cofzPiaYHgXQn8r/hxljeCq3/L9VHAASMJOjRvHoVDNh1QbuJbWoB1wx+e+2NC4ub1RbEaJbutvHfokUIZxaEzg="
        #sign_decode = base64.b64decode(sign)
        #verify_data = "mer_date=20131009&mer_id=6379&order_id=111790&ret_code=0000&ret_msg=交易成功&token=125880604943823&trade_no=1310091656145373&trade_state=WAIT_BUYER_PAY&version=4.0"
        #digest.update(verify_data.encode("gbk"))
        #ret = _umpay_verifier.verify(digest, sign_decode)
        #print ret
    except:
        print str(sys.exc_info())
        log.fatal("load umpay public key failed. %s" % str(sys.exc_info()))

python 使用联动优势支付接口的sign与verify的更多相关文章

  1. python调用支付宝支付接口

    python调用支付宝支付接口详细示例—附带Django demo代码   项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公 ...

  2. python调用支付宝支付接口详细示例—附带Django demo代码

    项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11. ...

  3. Python支付接口汇总大全(包含微信、支付宝等)

    微信接口 wzhifuSDK- 由微信支付SDK 官方PHP Demo移植而来,v3.37下载地址 weixin_pay- 是一个简单的微信支付的接口 weixin_pay- 微信支付接口(V3.3. ...

  4. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,

    第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...

  5. 玩蛇记之用python实现易宝快速支付接口

    玩蛇记之用python实现易宝快速支付接口 现在很多这种快速支付的通道,易宝支持的通道算是很全面的,正好最近需要集成易宝的支付通道到平台中,所以写一贴来记录一下,顺便鄙视一下国内的支付平台,api的支 ...

  6. Python支付宝在线支付API

    一.蚂蚁金服开发平台申请测试账号 a. 登陆蚂蚁金服开放平台https://open.alipay.com/platform/manageHome.htm,在“开发中心”—“研发服务”下拉处选择沙箱作 ...

  7. python开发微信支付学习记录(转)

    前言 微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放,相关需求也越来越多,很多开发人员进行微信支付开发及商家申请微信支付时,面临着诸多疑惑. 要想开发顺利进行,首先要 ...

  8. python语言(六)mock接口开发、发邮件、写日志、新Excel操作

    一.urllib模块 urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. url ...

  9. Python实现微信支付(三种方式)

    Python实现微信支付(三种方式) 关注公众号"轻松学编程"了解更多. 如果需要python SDk源码,可以加我微信[1257309054] 在文末有二维码. 一.准备环境 1 ...

随机推荐

  1. Problem 1274 - 可怜的lpx

    Problem 1274 - 可怜的lpx Time Limit: 1000MS   Memory Limit: 65536KB    Description 可怜的lpx终于在别人的帮助下追上了aq ...

  2. VC++中,如何定义callback函数和它的触发事件?

    对于回调函数的编写始终是写特殊处理功能程序时用到的技巧之一.先介绍一下回调的使用基本方法与原理. 1.在这里设:回调函数为A()(这是最简单的情况,不带参数,但我们应用的实际情况常常很会复杂),使用回 ...

  3. oracle错误处理及实操-【INS-20802】

    服务器硬件要求:内存>1GB,如果是虚拟机,必须设置内存为1.5G以上. 确定好主机名,安装完成以后,不要再修改主机名,一旦修改会导致oracle启动失败,注意:使用默认的localhost.l ...

  4. tomcat下部署可以访问的文件夹

    项目名#文件夹名#文件夹名.xml <Context docBase="D:\文件夹名\r文件夹名"/> 例如: test#zhang#test1.xml <Co ...

  5. 【翻译习作】 Windows Workflow Foundation程序开发-第一章03

    1.2.2.Visual Studio 2005扩展包 微软也为Windows Workflow开发者提供了Visual Studio 2005扩展包.扩展包将许多功能集成到Visual Studio ...

  6. [drp 8]get和post的区别,以及乱码问题的解决

    导读:不管是之前做.NET还是现在做Java的项目,都有涉及到get和post请求,第一次遇到的时候,应该是在人事系统的时候,那时候说要总结,结果一直没有总结.现在,做一个初步的总结,连着总结一下提交 ...

  7. C++三种内存分配方式

    从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量.静态分配的区域的生命期是整个软件运行期,就是说从软件运行开始到软件终止退出.只 ...

  8. 【Linux】Centos部署MySQL

    将CentOS部署MySQL需要本地配置环境.本地编译MySQL,耗时较长的情况,优化为编译成型MySQL并打包,推送并按配置部署. 首先需要在一台机器配置好环境,搭个YUM源,并将所需要的包取出备用 ...

  9. Oracle笔记 十三、PL/SQL面向对象之package

    --将方法和过程用包定义 create or replace package pkg_emp as --输入员工编号查询出员工信息 procedure pro_findInfo( in_empno e ...

  10. 百度地图API示例之文本标注

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...