`
huangro
  • 浏览: 333406 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Python版支付宝集成插件源代码

阅读更多
之前在做一项目的时候需要集成支付宝功能,网站是用python做的,参照支付宝的官方文档,写了以下代码(调试通过,能正常工作):
# -*- coding: utf-8 -*-
#!/usr/bin/env python
# author: Robin Huang
# time  : 2009-03-30

import md5

class Alipay(object):
    def __init__(self):
        self.params = {}
        # 支付宝gateway 
        self.pay_gate_way = 'https://www.alipay.com/cooperate/gateway.do'
        # 安全码 ***处请填具体安全码
        self.security_code = '***' 
        
    #---------------------------------------------------------------------------
    # 根据订单生成支付宝接口URL
    # <<<<< Protocol Param >>>>>
    # @ input_charset: 编码方式
    # @ service: 接口名称, 有两种方式 =>
    #            1. trade_create_by_buyer (担保付款) 
    #            2. create_direct_pay_by_user (直接付款)
    # @ partner : 商户在支付宝的用户ID
    # @ show_url: 商品展示网址
    # @ return_url: 交易付款成功后,显示给客户的页面
    # @ sign_type: 签名方式
    #
    # <<<<< Business Param >>>>>
    # @ subject: 商品标题
    # @ body: 商品描述
    # @ out_trade_no: 交易号(确保在本系统中唯一)
    # @ price: 商品单价
    # @ discount: 折扣 -**表示抵扣**元
    # @ quantity: 购买数量
    # @ payment_type: 支付类型
    # @ logistics_type: 物流类型 => 1. POST (平邮) 2. EMS 3. EXPRESS (其他快递)
    # @ logistics_fee: 物流费
    # @ logistics_payment: 物流支付类型 => 
    #                      1. SELLER_PAY (卖家支付) 2. BUYER_PAY (买家支付)
    # @ seller_email: 卖家支付宝帐户email
    # 
    # @return 
    #---------------------------------------------------------------------------
    def create_order_alipay_url(self, 
                                input_charset, 
                                service, 
                                partner, 
                                show_url, 
                                return_url, 
                                sign_type,
                                subject, 
                                body, 
                                out_trade_no, 
                                price, 
                                discount, 
                                quantity, 
                                payment_type, 
                                logistics_type, 
                                logistics_fee, 
                                logistics_payment, 
                                seller_email
                                ): 
        self.params['_input_charset'] = input_charset
        self.params['service'] = service
        self.params['partner'] = partner
        self.params['show_url'] = show_url
        self.params['return_url'] = return_url
        self.params['subject'] = subject
        self.params['body'] = body
        self.params['out_trade_no'] = out_trade_no
        self.params['price'] = price
        self.params['discount'] = discount
        self.params['quantity'] = quantity
        self.params['payment_type'] = payment_type
        self.params['logistics_type'] = logistics_type
        self.params['logistics_fee'] = logistics_fee
        self.params['logistics_payment'] = logistics_payment
        self.params['seller_email'] = seller_email
        # 返回结果
        return self._create_url(self.params, sign_type)
    
    def _create_url(self, params, sign_type='MD5'): 
        param_keys = params.keys()
        # 支付宝参数要求按照字母顺序排序
        param_keys.sort()
        # 初始化待签名的数据
        unsigned_data = ''
        # 生成待签名数据
        for key in param_keys:
            unsigned_data += key + '=' + params[key]
            if key != param_keys[-1]:
                unsigned_data += '&'
        # 添加签名密钥
        unsigned_data += self.security_code
        # 计算sign值
        if sign_type == 'MD5':
            M = md5.new()
            M.update(unsigned_data)
            sign = M.hexdigest()
        else:
            sign = ''
        request_data = self.pay_gate_way + '?'
        for key in param_keys:
            request_data += key + '=' + params[key].decode('utf8').encode(params['_input_charset'])
            request_data += '&'
        request_data += 'sign=' + sign + '&sign_type=' + sign_type
        # 返回结果
        return request_data
    


希望对大家有所帮助,如需转载请标明出处:http://huangro.iteye.com/admin/blogs/382133
分享到:
评论
2 楼 ipconfiger 2010-04-26  
为什么没有return url里面验证签名的方法呢?
1 楼 fengsage 2009-09-09  
谢谢分享~~

相关推荐

    微信或者支付宝打赏功能源代码

    本资源提供的"微信或者支付宝打赏功能源代码"就是一个实现这一功能的插件,它允许用户通过微信或支付宝这两种广泛使用的支付方式进行打赏。下面将详细探讨相关知识点。 1. **微信小程序打赏功能**: 微信小程序是...

    whmcs国内支付宝插件

    **WHMCS与支付宝集成详解** WHMCS(Web Hosting Manager Complete Solution)是一款广泛应用于主机商的自动化管理平台,它提供了订单处理、客户管理、账单结算等功能。在这个场景中,我们将关注的重点放在了"whmcs...

    51商城管理Python源代码

    综上所述,51商城管理Python源代码涵盖了Web开发的多个方面,包括Python基础知识、Web框架的运用、数据库操作、用户认证、支付接口集成、订单处理等多个关键技术点。通过学习和理解这套源代码,开发者可以提升在...

    房贷计算器python源码.zip

    【标题】"房贷计算器python源码.zip"是一个包含Python编程语言实现的房贷计算软件的源代码文件。这个软件主要用于帮助用户计算房屋贷款的月供、总利息和贷款期限内的还款总额,是理解个人金融管理和Python编程实践的...

    毕业设计 Python源代码+开发文档说明 51商城的程序

    【标题】"毕业设计 Python源代码+开发文档说明 51商城的程序"涉及的核心知识点主要涵盖Python编程语言、软件开发流程以及电商平台的构建。在毕业设计中,学生通常需要运用所学理论知识,结合实际项目,进行完整系统...

    WHMCS 微信支付宝QQ支付插件

    至于【whmcs_spay】这个压缩包文件,它是该支付插件的安装包,通常包含插件的源代码、配置文件、安装指南等相关文件。在使用前,管理员需要按照指导将插件上传至WHMCS系统的指定目录,并在后台进行相应的设置,如...

    支付宝快捷支付phonegap插件demo

    这通常涉及到将插件的源代码添加到项目中,然后通过PhoneGap命令行工具或配置文件(config.xml)进行安装。安装完成后,开发者需要配置相关的支付宝商户信息,包括商户ID、应用ID、私钥等,这些都是从支付宝开放平台...

    magento支付宝收款插件

    "code"用于存放扩展的源代码,"design"包含主题相关的模板文件,"etc"则存储配置文件,比如模块的配置XML。因此,"app"目录内的内容将直接影响到Magento系统如何理解和执行支付宝收款插件的功能。 支付宝收款插件的...

    会员消费管理系统源代码

    9. **安全性保障**:源代码不含恶意插件,意味着系统的安全性得到保证。用户应关注数据加密、权限控制等方面,防止数据泄露或被非法利用。 10. **可扩展性**:由于提供源代码,用户可以根据业务发展需要添加新功能...

    uchome支付插件源代码

    本文将详细解析"UCHOME支付插件源代码",并指导如何安装和配置,以及安全地使用支付宝等支付接口。 一、源代码结构与功能概览 "UCHOME支付插件"的核心在于其源代码,它由PHP编写,遵循UCHOME的插件开发规范。主要...

    基于PHP的Discuz!免签约支付宝积分充值插件php版源码.zip

    由于没有更多信息,我们可以推测这可能是插件的主要源代码文件或者是安装、配置指南等。 【相关知识点】 1. PHP编程:了解PHP的基础语法、函数库和面向对象编程,这对于理解和修改插件的源码至关重要。 2. Discuz!...

    二手交易平台网站源代码

    标题 "二手交易平台网站源代码" 暗示我们讨论的主题是关于一个二手交易网站的源代码,这通常指的是用于构建在线市场平台的编程代码。二手交易平台允许用户买卖各种物品,从电子产品到家具,书籍到服装,几乎无所不包...

    33hao商城源代码

    【33hao商城源代码】是一个开源的电子商务平台,专为在线商家提供全面的解决方案。这个系统的设计理念是开放、灵活和可扩展,旨在帮助商家快速构建自己的网上商店,实现商品销售、订单管理、支付集成、物流追踪等...

    yii2 支付宝扩展插件

    这个"yii2-alipay-master"可能就是一个Git仓库的名称,通常包含源代码、配置文件、README文档和其他必要的资源。在实际项目中,开发者需要将这个插件添加到Yii2的组件配置中,以便在应用中使用。 这个扩展插件可能...

    打赏代码jQuery点击弹出支付宝微信二维码打赏源代码

    本资源提供了一种利用jQuery实现的打赏功能,使得网站能够方便地集成支付宝和微信的二维码打赏功能,而无需安装额外的插件,简化了开发流程。 首先,我们来深入理解jQuery这一JavaScript库。jQuery是一个轻量级、高...

    Java开发优雅的轻量级支付模块集成支付对接支付整合全能第三方支付对接源代码

    Alipay SDK:支付宝提供了Java版的SDK,可以帮助我们快速集成支付宝支付功能。通过Alipay SDK,我们可以实现支付宝的即时到账、手机网站支付、扫码支付等功能。2. Wechat Pay SDK:微信支付也提供了Java版的SDK,...

    最新2019版Discuz 免签约支付宝微信购买积分插件

    在压缩包中的文件"nciaer_buycreditdz"很可能包含了该插件的所有源代码和配置文件。通常,Discuz插件的安装步骤包括解压文件,将其中的文件上传至服务器的特定目录,然后在Discuz后台进行安装和配置。安装完成后,...

    Typecho付费阅读自媒体插件源码

    1. `json.bat`:通常这是一个批处理文件,可能用于自动化处理JSON文件,但在这个插件中具体作用需要查看源代码才能明确。 2. `.gitattributes`:这是一个Git配置文件,用于定义项目中各文件的属性,如文本编码、合并...

    支付宝商城小程序源码.rar

    支付宝商城小程序是一款基于支付宝平台开发的轻量级应用,它集成了商城的主要功能,包括首页、分类、购物车和用户中心等模块,并且具备完整的支付接口,方便用户进行在线交易。这款小程序源码的可用性很高,因为它...

    毕业设计-集成支付网络商城解决方案(源代码).zip

    集成支付网络商城解决方案(源代码)是一份全面而强大的毕业设计资源,专为构建集商品展示、在线交易与多样化支付功能于一体的网络商城而设计。该解决方案不仅提供了丰富的商城前端界面,支持商品分类浏览、搜索筛选...

Global site tag (gtag.js) - Google Analytics