Djangoでコイン投げ決済をバインド


今回のプロジェクトでは、既存の支払い方式から脱し、コカソカードとトスカードを貼るよう要求された.公式文書では30分しかかからないと言っていたのに、なぜ2日もかかったのか後記しています.ここです。に入ると、すべてのエラーコードが表示されますが、どのように解決するかについては説明されていません.私と直面した間違いは解決方法をまとめた.
注:このドキュメントはdjangoを使用したバックエンドの角度から作成されています.
私が出会った間違い
1.必須パラメータが見つかりません.
解決方法1:ディック・シャナ形式の本体をstringに分割し,要求を送信する.str()でディクシャナリーに送りたかったのですが、strが文字と数字の変換しかサポートしていないことを忘れてしまいました.json.dumpsを使用して送信に成功しました.
2.403-UNTHAUTORICZED KEY認証されていない秘密鍵またはクライアント鍵.
解決策1:base 64符号化.
def encode_key(secret_key: str) -> str:
    secret_key_bytes = secret_key.encode('ascii')
    secret_key_base64 = base64.b64encode(secret_key_bytes)
    secret_key_base64_str = secret_key_base64.decode('ascii')
    return secret_key_base64_str
3.「コード」:「INVALID API KEY」、「メッセージ」:無効な秘密鍵バインド情報.
解決方法1:秘密鍵にコロンを付ける.

解決方法2:この支払いを実施するクライアント鍵とペアをなす秘密鍵を使用する.この支払いイベントには固有のpaymentKeyがあり、どのクライアントキーが使用されているかの情報が含まれているようです.したがって、テストクライアント鍵を用いて支払イベントが生成されると、テストSecret鍵を用いて支払が完了し、リアルタイムクライアント鍵を用いて支払イベントが生成されると、リアルタイムSecret鍵を用いて支払が完了する.
4: Remote end closed connection without response site

解決方法:
  • ちょっと...とても悲しいから実サーバーでは正常に決済できますが、STATINGで発生したエラー...
  • httpだったんですね.クライアントはインタフェースを直接閉じる必要があります.次はTosからの直接の例です:
    import http.client
    
    conn = http.client.HTTPSConnection("api.tosspayments.com")
    
    payload = "{\"amount\":15000,\"orderId\":\"JAL3FBfXGCHIZnczb0whc\"}"
    
    headers = {
        'Authorization': "Basic dGVzdF9za19YakV4UGVKV1lWUWJkV0d6YlpvcjQ5UjVndk5MOg==",
        'Content-Type': "application/json"
        }
    
    conn.request("POST", "/v1/payments/5zJ4xY7m0kODnyRpQWGrN2xqGlNvLrKwv1M9ENjbeoPaZdL6", payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    正式な書類を見るとres.read()と書いてconn.close()と書いてあります.だから貼っておけばいいんだ~ということで