支付宝沙箱

支付宝沙箱
支付宝支付

## 支付宝的沙箱环境

-   [密钥生成文档](https://opendocs.alipay.com/open/291/105971): 公钥(给别人,方便其他人验证某个信息是否为自己发送) 和私钥(需要自己保存,对信息加密,不能泄露)
-   根据文档,生成一对密钥: 公钥和私钥,将 公钥 添加到 支付宝的 [沙箱应用](https://openhome.alipay.com/platform/appDaily.htm)中

支付宝沙箱

支付宝沙箱

支付宝沙箱
-   根据自己的APP公钥,生成的  支付宝公钥,需要 保存本地

> 支付宝接口: 不再自己写接口,而是 使用 python-alipay-sdk工具去请求支付宝接口
>
> pip install pyhton-alipay-sdk

## 支付接口

### django

> 需要将 生成的 私钥 和 根据自己的公钥生成的 支付宝公钥,保存到文件,放到项目中

支付宝公钥(aliapy_pbulic_key.pem

python </code></pre> <p>自己的APP私钥 (<code>app_private_key.pem</code>)</p> <pre><code class="language-python"></code></pre> <h4>支付宝的相关方法</h4> <blockquote> <p>不需要记。以后参考文档</p> </blockquote> <pre><code class="language-python">import os from alipay import AliPay 配置地址, 为了确定 公钥和私钥的 位置 private_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "key/app_private_key.pem") public_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "key/alipay_public_key.pem") 获取公私钥字符串 app_private_key_string = open(private_path).read() alipay_public_key_string = open(public_path).read() def get_alipay(): """生成支付宝的客户端""" alipay = AliPay( appid="2016092400585976", # 收款的商家支付宝的 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", # 加密方式 debug=True, # 上线则改为False , 沙箱True ) return alipay def get_alipay_url(order_id, order_amount, subject, return_url): """ 根据订单信息,生成支付地址 """ # 进行alipay初始化 alipay = get_alipay() # 调用支付接口 # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string order_string = alipay.api_alipay_trade_page_pay( out_trade_no=order_id, # 订单id,需要支付的订单id total_amount=str(order_amount), # 订单总金额 subject=subject, # 付款标题信息 return_url=return_url, # 付款成功回调地址(可以为空, 当前项目,应该回调到Vue页面) notify_url=None # 付款成功后异步通知地址(可以为空) ) pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string return pay_url # 将这个url复制到浏览器,就会打开支付宝支付页面 </code></pre> <h4>视图</h4> <ul> <li>获取前端发送的订单id</li> <li>查询订单id对应的订单信息</li> <li>利用第三方包生成一个支付宝客户端</li> <li>传入订单号、支付金额、回调参数、主题,生成一个支付接口</li> <li>将生成的支付接口返回给Vue</li> </ul> <pre><code class="language-python">class PaymentAPIView(APIView): authentication_classes = [JSONWebTokenAuthentication] permission_classes = [IsAuthenticated] def get(self, request, order_id): # 查询要支付的订单 user = request.user try: order = Order.objects.get(id=order_id, user=user) except Exception as e: return Response({'msg': '订单信息错误'}, status=404) alipay_url = get_alipay_url( order_id=order_id, order_amount=order.amount, subject="美多商城%s" % order_id, # 支付成功,跳转到Vue的支付成功页面 return_url='http://127.0.0.1:8080/#/pay_success/' ) return Response({'alipay_url': alipay_url}) </code></pre> <p>Vue</p> <ul> <li>对 支付 按钮,绑定方法</li> <li>在方法中,发送请求,接收响应地址, 也就是支付宝的支付地址</li> <li>跳转到支付宝支付页面</li> <li>等待用户支付成功</li> </ul> <pre><code class="language-vue"> </code></pre> <p>

Original: https://www.cnblogs.com/gaogang/p/14680426.html
Author: 小高、
Title: 支付宝沙箱

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586048/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球