python 3 python-alipay-sdk(支付宝支付)
记录一下支付宝支付整个流程和第三方sdk的使用
1.应用申请及配置流程
- 使用支付宝支付的前提是必须要应用。 申请链接: 创建应用
- 配置应用参数(获取公钥,私钥,appid)
1.选择网页&移动应用,创建应用,网址URL填写服务器地址
2.创建完点击应用进去详情页,添加能力-添加手机网站支付,我这里已经添加过了,所以没有显示,添加完成出来就点签约,填写资料,之后需要去商家中心绑定appid。
绑定appid
3.在应用信息里面,设置好秘钥,ip白名单,回调地址, 如何生成秘钥
填写生成之后的公钥进去
2.python python-alipay-sdk操作
python-alipay-sdk 文档
安装 python-alipay-sdk
pip install python-alipay-sdk
公钥和私钥我是保存在pem文件里的
from alipay import AliPay
#支付宝官方支付参数配置
# 进行alipay初始化
# # 配置地址
private_path = os.path.join(os.path.join(BASE_DIR,'certificate'), 'alipay_private_key.pem')
public_path = os.path.join(os.path.join(BASE_DIR,'certificate'), 'alipay_public_key.pem')
#获取公私钥字符串
app_private_key_string = open(private_path).read()
alipay_public_key_string = open(public_path).read()
notify_url = 'https://zhpayapi.agait.cn/pay/alipay/notify' #回调url
#实例化支付宝支付sdk
alipay = AliPay(
appid="appid",
app_notify_url=notify_url, # 默认回调url
app_private_key_string=app_private_key_string,
alipay_public_key_string=alipay_public_key_string,
sign_type="RSA2",
debug=False, # 上线则改为False , 沙箱True
)
#创建支付订单
'''
out_trade_no = 订单号
total_amount = 价钱(元为单位)
subject = 备注
front_url = 支付成功跳转的前端地址
refund_amount = 退款金额数
'''
order_string = alipay.api_alipay_trade_wap_pay(
out_trade_no = order_sn,
total_amount=str(orderObj.total_pay),
subject=remark,
front_url = front_url
)
# 拼接应答地址
#pay_url = 'https://openapi.alipaydev.com/gateway.do?' + order_string #沙箱地址
pay_url = 'https://openapi.alipay.com/gateway.do?' + order_string #线上地址
#订单退款
result = alipay.api_alipay_trade_refund(out_trade_no=order_sn,refund_amount = str(orderObj.total_pay))
print(result)
转账,需要在app应用添加能力
#转账
result = alipay.api_alipay_fund_trans_toaccount_transfer(
datetime.now().strftime("%Y%m%d%H%M%S"),
payee_type=payee_type, # 收款方账户类型
payee_account=payee_account, # 收款方账户
amount=amount, # 转账金额
payee_real_name=payee_real_name, # 收款方姓名(可选,若不匹配则转账失败)
remark=remark, # 转账备注
payer_show_name=payer_show_name # 付款方姓名
)
更多API请看文档使用,差不多都是这样用的了,沙箱环境能本地测试,不然就得在线上服务器了~