接入支付寶
支付寶開發平台登入
https://open.alipay.com/platform/home.htm
沙箱環境
- 是支付寶提供給開發者的模拟支付的環境
- 跟真實環境是分開的
- 沙箱應用:https://docs.open.alipay.com/200/105311
- 沙箱賬号:https://openhome.alipay.com/platform/appDaily.htm?tab=account
接入步驟
- 建立應用
- 配置密鑰
- 搭建和配置開發環境
- 接口調用
配置秘鑰
1. 生成應用的私鑰和公鑰
openssl
OpenSSL> genrsa -out app_private_key.pem 2048 # 私鑰RSA2
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem # 導出公鑰
OpenSSL> exit
2. 儲存應用私鑰檔案
在payment應用中建立keys目錄,用來儲存秘鑰檔案。
将應用私鑰檔案app_private_key.pem複制到payment/keys目錄下。
3. 檢視公鑰
cat app_publict_key.pem
将公鑰内容複制給支付寶
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEjN2ITN0MjMzAzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
4. 儲存支付寶公鑰
在payment/keys目錄下建立alipay_public_key.pem檔案,用于儲存支付寶的公鑰檔案。
将支付寶的公鑰内容複制到alipay_public_key.pem檔案中
同時需要在公鑰檔案中補充開始與結束标志
-----BEGIN PUBLIC KEY-----
此處是公鑰内容
-----END PUBLIC KEY-----
調用支付寶接口實作支付
class PaymentView(APIView):
"""
支付
"""
def get(self, request, order_id):
"""
擷取支付連結
"""
# 構造支付寶支付連結位址
alipay = AliPay(
appid=settings.ALIPAY_APPID,
app_notify_url=None, # 預設回調url
app_private_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/app_private_key.pem"),
alipay_public_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/alipay_public_key.pem"), # 支付寶的公鑰,驗證支付寶回傳消息使用,不是你自己的公鑰,
sign_type="RSA2", # RSA 或者 RSA2
debug=settings.ALIPAY_DEBUG # 預設False
)
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no="商品id",
total_amount=str(商品總價格),
subject="支付的商品資訊",
return_url="支付成功後跳轉的頁面",
)
# 需要跳轉到https://openapi.alipay.com/gateway.do? + order_string
# 拼接連結傳回前端
alipay_url = settings.ALIPAY_URL + "?" + order_string
return Response({'alipay_url': alipay_url})