博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
个人支付方案(免签约)-支付宝当面付
阅读量:3986 次
发布时间:2019-05-24

本文共 2354 字,大约阅读时间需要 7 分钟。

背景

作者作为个人开发者,想接入支付功能,所以了解了下目前支付相关的方案,发现大体有以下几种(参见):

  • 支付宝和微信官方支付接口:基本都需要企业资格才能开通,最起码也要是个体工商户才可以(有营业执照)。
  • 第三方支付平台:例如,等,支持个人开发者,但是手续费太高。
  • 野路子:网上有开源方案是监听支付宝app收款通知,实现收款,例如PaysApi、绿点支付等,本质上依然是采用挂机监听的策略,但针对的是移动端支付宝或微信的收款通知消息,成本高,配置麻烦,需24小时挂台安卓手机,不免费

以上方案要么没有企业资质,要么太麻烦,要么太贵,幸好发现了支付宝(支持个人开通,但是需要门店照片,这个百度就可以)。

在这里插入图片描述
营业执照是可选的,不上传的话,限制单笔收款≤1000,单日收款≤5W,对于个人开发者足够了。
我已经使用python封装了支付宝当面付sdk,并集成到了flask中,下面是github地址

效果图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

支付宝当面付

接入流程

  • 点击进入,登陆支付宝账户选择立即接入。
  • 经营内容选择百货零售-超市-超市(非平台类)
  • 营业执照可不上传
  • 店铺招牌 百度即可
  • 提交申请后十多分钟就可收到通过通知。

开发流程

成功接入以后,可以在网页&移动应用中,看到我的应用列表中多了一个“应用2.0签约******”的应用:

在这里插入图片描述
现在我们可以开发接入了,总体分为以下几个步骤(参考,):

  • 配置当面付公钥私钥
    • 找到“应用2.0签约******”的应用,点击右侧查看详情
      在这里插入图片描述
    • 在应用信息中设置公钥
      在这里插入图片描述
      支付宝官方提供了密钥生成工具,很简单,使用工具生成应用公钥和私钥,应用公钥设置到支付宝,应用私钥保存到本地,应用公钥设置到支付宝后,支付宝会生成一个支付宝公钥,保存到本地。
  • 开发:我是使用python作为后端,使用,下面是简单代码示例:
from alipay import AliPayimport time# 密钥工具生成的私钥,和支付宝公钥(我保存在了文件中)app_private_key_string = open("app_private_key.pem").read()alipay_public_key_string = open("alipay_public_key.txt").read()print(alipay_public_key_string)'''这里打印应该是这种格式(如果支付宝密钥生成工具生成的密钥没有头尾要自己加上)私钥格式:-----BEGIN RSA PRIVATE KEY-----    base64 encoded content-----END RSA PRIVATE KEY-----公钥格式:-----BEGIN PUBLIC KEY-----    base64 encoded content-----END PUBLIC KEY-----'''alipay = AliPay(    appid="2019***********",   # 应用列表中“应用2.0签约******”的appid    app_notify_url=None,    # 默认回调url    app_private_key_string=app_private_key_string,  # 应用私钥    alipay_public_key_string=alipay_public_key_string,  # 支付宝公钥    sign_type="RSA2", # RSA 或者 RSA2(具体要看你的密钥是什么类型)    debug=False  # 默认False)out_trade_no = "out_trade_no_123"# 创建订单result = alipay.api_alipay_trade_precreate(    subject="test subject",  # 订单标题    out_trade_no=out_trade_no,  # 订单号(不可重复)    total_amount=0.1    # 订单金额,单位元)print(result)# 这里应该打印出{'code': '10000', 'msg': 'Success', 'out_trade_no': 'out_trade_no_123', 'qr_code': 'https://qr.alipay.com/bax05832mvaotxhcpjeh6074'}# 其中用qr_code生成二维码,支付宝扫描即可付款# check order statuspaid = Falsefor i in range(30):    # check every 3s, and 10 times in all    print("now sleep 3s")    time.sleep(3)    result = alipay.api_alipay_trade_query(out_trade_no=out_trade_no)    if result.get("trade_status", "") == "TRADE_SUCCESS":        paid = True        break    print("not paid...")# order is not paid in 30s , cancel this orderif paid is False:    print("支付失败,取消订单")    alipay.api_alipay_trade_cancel(out_trade_no=out_trade_no)else:    print("支付成功")

其他

转载地址:http://uaxui.baihongyu.com/

你可能感兴趣的文章
ffmpeg
查看>>
单纯的把Y通道提取出来能正确显示出灰度图来为什么我的Qt就显示不出来呢转换有问题呀?
查看>>
YUV420下各种格式的区别,老外写的
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
linux驱动分析之DS1302 RTC
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
arm-linux开机读取硬件时钟,设置系统时钟。
查看>>
ds1620混杂设备驱动
查看>>
linux spi test application
查看>>
linux spi framework
查看>>
交叉编译在x86上调试好的qt程序
查看>>
/dev/input/event0 键盘输入
查看>>
freescale github for imx6
查看>>
spi master spi driver spi device
查看>>
qt5.3.2 everywhere evdev keyboard&mouse
查看>>