

Pay.jpのカスタムフォームを実装しようとしています。  
フォームから各種値を取得してcreateTokenしていますが、「Invalid expiration
year」となってトークンが取得できません。コードは以下のとおりです。

[code]

      $(function() {
        $('#checkout_form_payment').submit(function() {
          var card, cvc, exp_month, exp_year, expire, number;
          number = $('#card_number').val();
          cvc = $('#card_code').val();
          expire = $('#card_expiry').val();
          exp_month = expire.substr(0, 2);
          exp_year = expire.substr(5, 2);
    
          card = {
            number: number,
            cvc: cvc,
            exp_month: exp_month,
            exp_year: exp_year
          };
          alert(JSON.stringify(card));
          Payjp.createToken(card, function(s, response) {
            var token;
            if (response.error) {
              alert(response.error.message);
              return false;
            } else {
              alert("res=" + response.id);
              token = response.id;
              $('#checkout_form_payment').append($('<input type="hidden" name="payjpToken" />').val(token));
              $('#checkout_form_payment').submit();
            }
            return
    
[/code]

入力しているのは以下の値です。

[code]

          number = '4242424242424242';
          cvc = '123';
          expire = '12 / 20';
    
[/code]

なのでexp_yearは２０です。どこが問題でしょうか？  
一応フォームのソースは長いので割愛します。それぞれ値が取れているところまでは確認しています。


CC BY-SA 4.0
2019-05-05T09:24:50.753
54738
2019-05-05T10:05:26.577
4784
question
jquery
Pay.jpでトークン取れない


このAPIリファレンス [Token
(トークン)](https://pay.jp/docs/api/#token-%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3)
によると、有効期限年の情報は、西暦4桁のようです。  
頭に"20"を補って指定してみてください。

curlでの例

>
[code]

>     curl https://api.pay.jp/v1/tokens \
>     -u sk_test_c62fade9d045b54cd76d7036: \
>     -H "X-Payjp-Direct-Token-Generate: true" \
>     -d "card[number]=4242424242424242" \
>     -d "card[cvc]=123" \
>     -d "card[exp_month]=02" \
>     -d "card[exp_year]=2020"
>  
[/code]

Nodeでの例

>
[code]

>     var payjp = require('payjp')('sk_test_c62fade9d045b54cd76d7036');
>     payjp.tokens.create(
>         query = {
>           card: {
>             number: 4242424242424242,
>             cvc: 123,
>             exp_month: 2,
>             exp_year: 2020
>             },
>           },
>         headers = {
>          'X-Payjp-Direct-Token-Generate': 'true'  
>         }  
>     );
>  
[/code]


CC BY-SA 4.0
2019-05-05T09:44:09.997
54739
2019-05-05T10:05:26.577
2019-05-05T10:05:26.577
26370
26370
54738
answer