天天看點

Django實作使用支付寶支付接入支付寶

接入支付寶

支付寶開發平台登入

https://open.alipay.com/platform/home.htm

沙箱環境

  • 是支付寶提供給開發者的模拟支付的環境
  • 跟真實環境是分開的
  • 沙箱應用:https://docs.open.alipay.com/200/105311
  • 沙箱賬号:https://openhome.alipay.com/platform/appDaily.htm?tab=account

接入步驟

  1. 建立應用
  2. 配置密鑰
  3. 搭建和配置開發環境
  4. 接口調用

配置秘鑰

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
           

将公鑰内容複制給支付寶

Django實作使用支付寶支付接入支付寶

4. 儲存支付寶公鑰

在payment/keys目錄下建立alipay_public_key.pem檔案,用于儲存支付寶的公鑰檔案。

将支付寶的公鑰内容複制到alipay_public_key.pem檔案中

Django實作使用支付寶支付接入支付寶

同時需要在公鑰檔案中補充開始與結束标志

-----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})