支付宝(Python只需3分钟即可搭建支付宝三方支付)

为什么要用三方支付?

在没有第三方支付平台之前,当用户发起支付请求时,用户要和银行签约(转账),特别不方便。为了解决这些问题,出现了第三方支付,第三方平台完成签约,节省了用户时间。

支付宝支付流程

商家获取支付宝的公钥和自己的私钥(私钥加密和公钥解密),用私钥向支付宝请求,解密,验证,支付,支付宝将处理后的返回值传给商家。支付成功时,返回商家的订单号、金额、时间戳等消息,支付失败后也反馈给商家。

企业支付宝怎么注册

配置过程

1。获取APPID

支付宝开放平台:https://open.alipay.com/

  • 登录支付宝开放平台-->点击控制台。



  • 单击沙箱(复制APPID)



  • 2。在线生成密钥

  • 单击文档,找到开发助手,然后单击在线加密。



  • 获取私钥



  • 3。获取公钥

  • 单击应用公钥。



  • 生成公钥



  • 现在我们有了所需的公钥。

    在python项目中集成支付宝

  • 构建一个支付类

  • 从datetime导入datetimefrom Crypto。公钥导入RSAfrom Crypto。签名从加密导入PKCS1 _ v1 _。hash import sha 256 from URL lib . parse import quote _ plus from base64 import decode bytes,encodebytesimport JSON

    class pay:" "支付宝支付接口(PC支付接口)" "

    def __init__(self,appid,app_notify_url,app_private_key_path,支付宝_public_key_path,return_url,debug = False):self . appid = appid self . app _ notify _ URL = app _ notify _ notify_ _ gateway = " https://open API . AliPay dev . com/gateway . do " else:self。_ _ gateway = " https://open API . AliPay . com/gateway . do "

    def direct _ PAY(self,subject,out_trade_no,total_amount,return_url=None,* * kwargs):biz _ content = { " subject ":subject," out_trade_no": out_trade_no," total_amount": total_amount," product _ code ":" FAST _ INSTANT _ TRADE _ PAY " ,}

    biz _ content . update(kwarg" .加入(“{0}={1}”。format(k,v) for k,v in unsigned _ items)sign = self . sign(unsigned _ string . encode(" utf-8 "))quoted _ string = " & amp;" .加入(“{0}={1}”。format(k,quote_plus(v)) for k,v in unsigned _ items)

    signed _ string = quoted _ string+" & amp;sign = "+quote _ plus(sign)return signed _ string

    def ordered _ data(self,data): complex_keys = for key,value in data . items:if is instance(value,dict):complex _ keys . append(key)

    for key in complex _ keys:data[key]= JSON . dumps(data[key],分隔符=(',',':')

    return sorted([(k,v) for k解码(“utf8”)。replace("n "," ")return sign

    def _ verify(self,raw_content,signature):key = self . AliPay _ public _ key signer = PKCS1 _ v1 _ 5 . new(key)digest = sha 256 . new digest . update(raw _ content . encode(" utf8 "))if signer . verify(digest,decode bytes(signature . encode(" utf8 ")):return True return False

    def verify(self,data,signature): if "sign_type" .join (u "{} = {} "format (k,v) for k,v in unsigned _ items)返回self。_ verify(消息,签名)实例化该类。

    Def init _支付宝:#初始化支付宝支付宝=支付宝(AppID = "AppID ",app _ notify _ URL = "回调地址",return_url= "回调地址",app_private_key_path= "私钥相对路径",Pay _ public _ key _ path = "公钥相对路径",debug=True #支付环境)返回支付宝API

    asycdef get(self):
    Alipay = init _ Alipay #传递一个标题、订单号和订单价格params = alipay.direct_pay("三方广告平台",order _ no,money)URL = f " https://open API . Alipay dev . com/gateway . do?

    "回归自我。写(ret _ JSON (URL))

    #建立一个支付成功后回调的回调地址,在这里可以得到订单号(out_trade_no)、金额(total_amount)和时间戳,然后处理业务逻辑。

    摘要

    支付包有自己的接口文档,我在Python环境下配置的,可以直接使用。

    版权声明:本文为博主原创文章,版权协议遵循CC 4.0。转载请附上原出处链接和本声明。本文链接:https://blog.csdn.net/weixin _ 45394086/文章/详情/121843483

    您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友