支付宝支付
使用已有的支付宝账号即可
首次登录需要认证和设置角色,角色设置为自研开发者。
https://open.alipay.com/platform/home.htm
支付宝沙箱环境开发
沙箱环境是支付宝提供给开发者上线前调试的环境。沙箱环境更真实环境是一样的,只要沙箱环境调试通过,只需要简单修改 appid,支付宝网关,
支付宝沙箱环境说明:
蚂蚁沙箱环境(Beta)是协助开发者进行接口功能开发及主要功能联调的辅助环境。沙箱环境模拟了开放平台部分产品的主要功能和主要逻辑(当前沙箱支持产品请参考“沙箱支持产品列表”)。 在开发者应用上线审核前,开发者可以根据自身需求,先在沙箱环境中了解、组合和调试各种开放接口,进行开发调通工作,从而帮助开发者在应用上线审核完成后,能更快速、更顺利的进行线上调试和验收工作。 如何使用和配置沙箱环境请参考《沙箱环境使用说明》。
注意:
- 由于沙箱为模拟环境,在沙箱完成接口开发及主要功能调试后,请务必在蚂蚁正式环境进行完整的功能验收测试。所有返回码及业务逻辑以正式环境为准。
- 为保证沙箱稳定,沙箱环境测试数据会进行定期数据清理。Beta测试阶段每周日中午12点至每周一中午12点为维护时间。在此时间内沙箱环境部分功能可能会不可用,敬请谅解。
- 请勿在沙箱进行压力测试,以免触发相应的限流措施,导致无法正常使用沙箱环境。
- 沙箱支持的各个开放产品,沙箱使用的特别说明请参考各产品的快速接入文档或技术接入文档章节。
电脑网站支付沙箱接入注意点:
- 电脑网站支付支持沙箱接入;在沙箱调通接口后,必须在线上进行测试与验收,所有返回码及业务逻辑以线上为准;
- 电脑网站支付只支持余额支付,不支持银行卡、余额宝等其他支付方式;
- 支付时,请使用沙箱买家账号支付;
- 如果扫二维码付款时,请使用沙箱支付宝客户端扫码付款。
沙箱文档 https://docs.open.alipay.com/200/105311
支付宝开发者文档
https://openhome.alipay.com/developmentDocument.htm
电脑支付文档
https://docs.open.alipay.com/270
电脑网站支付流程
签名
发送给支付宝的所有参数都要进行签名
签名文档 https://docs.open.alipay.com/291/106118
python 第三方支付宝sdk
安装:
# 从 1.3.0升级上来的用户, 请先卸载pycrypto:
pip uninstall pycrypto
# 安装python-alipay-sdk
pip install python-alipay-sdk --upgrade
生成密钥文件
在Ubuntu下执行
openssl
OpenSSL> genrsa -out app_private_key.pem 2048 # 私钥
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem # 导出公钥
OpenSSL> exit
python sdk文档
https://github.com/fzlee/alipay/blob/master/README.zh-hans.md#alipay.trade.page.pay
快速接入
第一步:创建应用
由于我们没有办法接入真实支付,所以使用沙箱开发,沙箱已经给我们提供应用。如果正式环境开发,请参考支付宝开发文档。
第二步:配置密钥
应用公钥设置:
内容不能包括生成文件的头尾结束起始行。
下载支付宝公钥放到项目中。
将支付宝的公钥,以及我们自己生成的秘钥拷贝到项目中:
第三步:搭建和配置开发环境
from alipay import AliPay
# 构造alipay支付宝的工具对象
alipay_client = AliPay(
appid=current_app.config.get("ALIPAY_APPID"),
app_notify_url=None, # 默认通知url
# 秘钥自己的秘钥
app_private_key_path=os.path.join(os.path.dirname(__file__), "keys/app_private_key.pem"),
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_path=os.path.join(os.path.dirname(__file__), "keys/alipay_public_key.pem"),
sign_type="RSA2", # RSA 或者 RSA2
debug=True, # 默认False, 沙箱环境使用debug=True
)
# 获取支付宝链接地址
# 电脑网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do + order_string
order_string = alipay_client.api_alipay_trade_page_pay(
out_trade_no="", # 我们的订单id
total_amount= "", # 订单金额,单位元
subject="", # 展示给用户的支付页面的订单信息标题
return_url="", # 支付成功跳转页面
notify_url=None # 可选, 不填则使用默认notify url
)
alipay_url = current_app.config.get("ALIPAY_URL") + "?" + order_string