0

私のフォームは現在次のようになっています。

<form action="https://www.dwolla.com/payment/pay" method="POST" class="form-horizontal">
    <input type="hidden" name="_csrf" value="[redacted]">
    <input type="hidden" name="key" value="[redacted]">
    <input type="hidden" name="signature" value="[redacted]">
    <input type="hidden" name="timestamp" value="1347696587496">
    <input type="hidden" name="callback" value="http://127.0.0.1:3000/donate/dwolla">
    <input type="hidden" name="redirect" value="http://127.0.0.1:3000/credits">
    <input type="hidden" name="test" value="1">
    <input type="hidden" name="destinationId" value="812-726-7978">
    <input type="hidden" name="shipping" value="0.25">
    <input type="hidden" name="tax" value="0">
    <input type="hidden" name="name" value="donation credit">
    <input type="hidden" name="description" value="donation credit">
    <!-- amount input and submit button -->
</form>

node.js を使用して、次のように署名を作成します (注文 ID は使用しないことに注意してください)。

dwolla.signature.create = function(timestamp) {
  return crypto
    .createHmac('sha1', dwolla.secret)
    .update(dwolla.key)
    .update('&')
    .update(timestamp.getTime().toString())
    .update('&')
    .digest('hex')
}

var timestamp = new Date()
var signature = dwolla.signature.create(timestamp)

[送信] をクリックすると、次のアドレスにコールバックが返されます。http://127.0.0.1:3000/credits?error=failure&error_description=Invalid+timestamp.これは、少なくともキー/シークレットと署名は有効ですが、タイムスタンプが有効でないことを意味します。

タイムスタンプの何が問題になっていますか?

4

1 に答える 1

0

Javascript の時間は秒単位ではなくミリ秒単位です -_-

于 2012-09-16T01:05:46.960 に答える