0

Python を使用して LinkPoint ゲートウェイへの接続を成功させようとしています。API に慣れていない方の.pemために、認証目的で使用するファイルを取得します。

このファイルを使用して、SSL 経由で安全な接続を作成するのに問題があります。

彼らの API ドキュメント (これには多くの要望が残されています) によると、構成は以下のようになるはずです。

HOST = 'secure.linkpt.net'
API_URL = 'https://secure.linkpt.net/lpc/servlet/lppay'
PORT = 1129
cert_key = my_cert_key.pem

この情報と有効なXML文字列を使用して、この接続を作成するにはどうすればよいですか?

私はHTTPPythonでの接続にかなり慣れていません。POSTwithを使用して、他の API との接続を正常に実装しましたurllib2。当然のことながら、私の最初の試みは、解決策にたどり着くことができることを期待して、同様のアプローチから始まりました.

何かのようなもの:

headers = { 'User-Agent'     : 'Rico',
            'Content-type'   : 'text/xml; charset=\"UTF-8\"',
            'Content-length' : len(self.xml_string),
          }

# POST to First Data (Link Point)
req = urllib2.Request(API_URL, self.xml_string, headers)
response = urllib2.urlopen(req)
self.handleResponse(response.read())

cert_keyまたはについて何も提供しなかったので、これがうまくいくとはほとんど期待していませんでしたPORT

この試みの後、別のスタックオーバーフロー投稿の解決策から見つけたのと同様のアプローチを使用しようとしました。残念ながら、(私が知っている)ca_certsまたはファイルを持っていないため、これをうまく進めることができませんでした。cert

リクエストを使用しようとしましたが、それを理解するためのドキュメント/例が見つかりません。

Twistedも使用してみましたが、これで何かできることを本当に望んでいましたが、鉄球でドアを開けようとしているように感じます。それは私にはやり過ぎのように感じます。単純な接続/要求/応答が必要なだけです...これは非常に複雑に思えます。

私の次の試みはPycURL でしたが、このプロセス中に十分な絶望に直面したので、これに飛び込む前に誰かが良い提案を持っているかどうかを確認するためにここに来ると思いました.

これらのツールの 1 つに再度アクセスする必要があると思われる場合は、お知らせください。私はこれらのどれにも多くの時間を費やしませんでした-足を濡らすのに十分です. また、素晴らしい例や詳細なドキュメントを教えていただければ幸いです。

また、自分で接続を構築するために標準SSLライブラリを使用したくありません。必要がなければ、車輪を再発明したくありません。

4

1 に答える 1

0

有効な接続を取得するために使用できたソリューションはhttplib、次のように使用していました。

import httplib

HOST = 'staging.linkpt.net'
API_URL = '/lpc/servlet/lppay'
PORT = 1129
CERTFILE = 'my_cert_file.pem'

headers = { 'User-Agent'     : 'Rico',
            'Content-type'   : 'text/xml; charset=\"UTF-8\"',
            'Content-length' : len(xml_str),
          }

conn = httplib.HTTPSConnection(HOST, PORT, cert_file = CERTFILE)
conn.putrequest("POST", API_URL)
conn.putheader(headers)
conn.endheaders()
conn.send(xml_str)
response = conn.getresponse()

私はまだ有効なリクエストを生成できていません。どうやら私は API ドキュメントを間違って解釈し、取得し続けていますMalformed or unrecognized request.が、少なくとも接続を確立しています。

この件に関するより有用な情報を特定できれば、この回答を更新します。

更新: リンク ポイントのカスタマー サービスの従業員から、古い API ドキュメントを使用しているとのことでした。その後、新しいバージョンで試しましたが、まだ接続できません。サーバーからの応答すら得られません。これは、この問題の可能な解決策ではなくなりました。

更新 2: 別の投稿でこの問題を解決できましたPython で .pem 証明書を使用した SSL 接続

楽しみ!

于 2012-07-20T01:34:44.377 に答える