1

私は現在プロジェクトに取り組んでおり、タスクの問題に直面しています。6 桁のクーポン番号をランダムに生成し、そこの API を介して課金アカウントに投稿しようとしています。クーポンの作成が成功したら、同じクーポン コードを電子メールで顧客に送信したいと考えています。

chargify のドキュメントに従って、アプリケーションからすべての詳細を chargify に送信する方法は次のとおりです。

{"subscription":{
      "product_handle":"[@product.handle]",
      "customer_attributes":{
        "first_name":"Joe",
        "last_name":"Blow",
        "email":"joe@example.com"
      },
      "credit_card_attributes":{
        "full_number":"1",
        "expiration_month":"10",
        "expiration_year":"2020"
      },
      "coupon_code":"6 digit random code"
    }}
    """

https://[@サブドメイン].chargify.com/subscriptions.json。

この方法で 6 桁のランダムな数値コードを作成できます。

rand(999999).to_s.center(6, rand(9).to_s).

しかし、これは私にとってはうまくいかないようです。どんな提案でも大歓迎です。

ありがとう

4

2 に答える 2

1

私は技術スタッフや開発スタッフの一員ではありませんが、その API 呼び出しで事前に定義されたクーポン コードしか指定できないと 99% 確信しています。Chargify 管理 Web インターフェイスでクーポン コードを定義する必要があります。上記の API 呼び出しでは、サブスクリプションにクーポンを適用できますが、管理インターフェイスでそのクーポン コードを既に定義していることを前提としています。

将来的にその機能を追加する予定ですが、具体的な日付はありません。

申し訳ありません。

--- ランス・ウォーリー --- Chargify

于 2011-07-03T00:25:44.563 に答える
0

への呼び出しで何をしようとしているのかわかりませんcenter。最も賢明なことは、クーポン コードをゼロで埋めることです。これはそれを行います:

"%06d" % rand(1000000)

これにより、「664001」や「061532」などのコードが生成されます。

rand(1000000)ではなく、が必要であることに注意してくださいrand(999999)。これは、 rand が 0 から引数より 1 少ない整数までのランダムな整数を与えるためです。 rand(999999)999998 までの乱数のみを提供します。

上記のコードには DRY (Don't Repeat Yourself) 違反があります。「06」と「1000000」はどちらもクーポン コードの長さに依存します。これに対する修正は次のとおりです。

COUPON_CODE_LENGTH = 6
"%0#{COUPON_CODE_LENGTH}d" % rand(10 ** COUPON_CODE_LENGTH)

長くなりますが、クーポン コードの長さを変更する必要がある場合に変更する必要があるのは 1 つだけです。「マジック ナンバー」を名前付き定数に置き換えることも、コードが意図を伝えるのに役立ちます。

于 2011-07-02T22:49:50.810 に答える