微信和支付宝接口

Django微信支付介绍

微信支付平台,对支付的要求,相当严格。(不支持个人开通,支持个体工商户、企业、其他组织等)

微信支付开通地址

https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2Findex.php

支付产品:

付款码:超市扫码使用。

JSAPI支付

 

查看开发文档:

 

 

接入微信支付(首页)

微信承认的组织,必须是国家承认,必须有证书

我们现在放弃微信,但是微信的步骤和支付宝相识。

Django支付宝支付实施

  1. 开通开发者权限

https://open.alipay.com/platform/home.htm

研发中心,有网页移动应用(生产环境,需要自己创建app应用)。沙箱环境(测试环境,已经创建好了app应用)

2.进入沙箱环境

3.编写接口请求的代码

需要设置应用公钥,点进去有下面的查看密钥生成方法。

查看生成公钥和私钥的方式。

双击

会将生成的公钥和私钥自动的保存到RSA密钥中,但是不能使用,因为保存的是.txt格式,而上传应用证书使用的是.crt格式,因此会报错。

支付宝严格要求公钥和私钥的格式,直接读入公钥和私钥会报格式错误

然后我们回到沙箱设置的页面,将公钥设置好

 

公钥和私钥要生成自己服务器。

支付流程:

    支付逻辑

                                                                                                   

首先查看电脑网站支付的步骤案例

https://docs.open.alipay.com/270

我们作为网站开发方,需要的步骤

  1. 接收订单
  2. 跳转请求支付宝,发起的支付请求
  3. 提供支付宝返回支付码的调用页面
  4. 等待确认收款的状态

同步 等待的途中不干其他的事情,进入阻塞状态

异步 等待的同时可以进行其他操作

                                                                                                                                                              

         我们着重研究一下支付宝支付接口。

         支付宝支付接口有完整的文档和案例,但是没有python的案例,所以我们有两个选择

  1. 自己编写
  2. 调用三方的api

自此之前,我们看一下支付宝关于支付的接口要求

然后查看api接口规范

https://docs.open.alipay.com/api_1/alipay.trade.pay

查看签名

https://docs.open.alipay.com/api_1/alipay.trade.pay

https://docs.open.alipay.com/291/105974

https://docs.open.alipay.com/54/103419 使用官方的sdk

Github demo

https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

 

安装sdk的模块:

首先获取沙箱应用的应用id

然后获取沙箱应用的网管

from alipay import AliPay

      
#例如
alipay_public_key_string = '''-----BEGIN PUBLIC KEY-----

   MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsLDofX93PGVStfpI4/R3mX22p7EWct0b9TutpGrj/XnukV+ZtkBUez7t6IKa13nBOuMM1RMeUw06FHAX6xhoHK/Uf4HRZmV718M/********JTodrsucEKe9OUNDcOPIjPoo/XRLcZFK8yasEDNoCj7W6UPdwBnCvTCpPLOur+lNmgPTEGQRo+5qvcNEKYKJHeZEOzwGTUzyT+fT3LIISLgAK/vKjNg9m2mMlKuT47M1nNpOnaI4sp2SV*********zQ6Lx/STg301SOmxyvVFM2Uq4hksyIw1xdVa0rDH5vBU+C/M0AfYx8rOOkDB6TyechoDOqOPAXKZ22Zk/Ms/alJxAwIDAQAB

-----END PUBLIC KEY-----'''



app_private_key_string = '''-----BEGIN RSA PRIVATE KEY-----

    MIIEpAIBAAKCAQEAsLDofX93PGVStfpI4/R3mX22p7EWct0b9TutpGrj/XnukV+ZtkBUez7t6IKa13nBOuMM1RMeUw06FHAX6xhoHK/Uf4HRZmV718M/JTodrsucEKe9OUNDcOPIjPooqLim2W6m7FW/XRLcZFK8yasEDNoCj7W6UPdwBnCvTCpPLOur+lNmgPTEGQRo+5qvcNEKYKJHeZEOzwGTUzyT+fT3LIISLgAK/vKjNg9**************************7fgpC11hWYz0IyCCUL2wbZuJVS4OMmZWr+b9cH8rE97ZT44zNAceJ6Ciotck4WV/JjgCeKugoLdpmTuUW6CYAqvQhsr6ssu+jGVXUiufTjoBrzeTJGp0pluzAiyKsVMIEAw2KPICDuuc1nUcAmrHHs/YAyV45kw0H210clEbKfhWTmHj0nIV08++gos7S4QmNJc0Gn/hEvOcwmU4aU8jx4cNxzrYAO22UcSIjFnuO********nC7tS+VAPtCVnMr4dcaNKhJZPCkTdvTN8gLZSszFpx+i7yV2pGvUFhX945/iIUjJSgS/rM7zzywANM8VyFsh4GEcpkWOxlliU0KEUkCnTYIVcEx1CX6qqKgXks0UqmtmrxGo+UZ8OjKbMa0qqhxOJTrirddG4prB2E/7xZaS2I3HY36PL2xy7omYt7gBHeu0leUT7QuRuqVOCQYDxD9c0gCe10zu2BVDi699V73Gq2Gud0poR9cCgYEAxxiPC9O93MykrRBWei9+NJJyKbz/5Q404VE4696dIqmib/PjgR0g2tSdXVZaeYnmESOfH5DWaC3WMbMa1BEfp0iwP/7XBOpzCdmvqqGMz3PgM2QrVl8tblH2RLrc/dNoJluOw+aAGpZhnsVfW0gaw05+cSRsYmjCPGqcg0xYyrUCgYEAl9rkzru42ggY+EKfWUTpwB216VJLv4oxOYhyhf5E2FTXAyZfo1r6rjJdjzURqZSoYkoDG8AwXUXQIehrLWFQWxSv7sL/eYF8o8yYcnNch4lIhRJphpsx++rZaLuWhwINpSDquPNRPzJO+3s4sJYWq04DOPHSqPwLN/BxqgCNFT8CgYBotTbODo8**************************BiJZThtwWy9j3j14/Bg+XVCbhk3svmaO/tYWP+c40Fa5YWpuEGtt+8mSYKIwnI2GGaFdLHM1OO/e17PP3nZA7hgYWUp4MSyoFr9+v14r50VCddh2rQeyRJOJzgZInQKBgQCRw8QK5vxexmFVF70y9p37agvioyfeiu5SStOKPAh9+2XlfFymgZiSpl9WrSL/JQSVXJzn6WoU8yQuHK41ovjrBTuzbra/6b+kgGNi1Laqt3Xmq0im3Q9Sxf5nrHpPpQyuRu0eyQ2VIcb3r0zdxdHvu3ywTx7SaE8gW6XQGrE+xg==

-----END RSA PRIVATE KEY-----'''



#如果在Linux下,我们可以采用AliPay方法的app_private_key_path和alipay_public_key_path方法直接读取.emp文件来完成签证

#在windows下,默认生成的txt文件,会有两个问题

    #1、格式不标准

    #2、编码不正确 windows 默认编码是gbk



#实例化应用

alipay = AliPay(

    appid="*******300566666", #支付宝app的id

    app_notify_url=None, #会掉视图

    app_private_key_string = app_private_key_string, #私钥字符

    alipay_public_key_string = alipay_public_key_string, #公钥字符

    sign_type="RSA2", #加密方法

)

#发起支付

order_string = alipay.api_alipay_trade_page_pay(

        out_trade_no="11111111", # 订单号

        total_amount=str(0.01),  # 将Decimal类型转换为字符串交给支付宝

        subject="商贸商城",

        return_url=None,

        notify_url=None  # 可选, 不填则使用默认notify url

    )

    # 让用户进行支付的支付宝页面网址

print("https://openapi.alipaydev.com/gateway.do?"+order_string)

猜你喜欢

转载自blog.csdn.net/HobbitX/article/details/88562409