質問編集履歴

2

実装箇所の記載修正

2020/07/22 00:36

投稿

keiniketani
keiniketani

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,57 +1,3 @@
1
- ■該当箇所のみ抜粋
2
-
3
- (略)
4
-
5
- let itemName = '';
6
-
7
- if (itemId === 'XXX') {
8
-
9
- itemName = 'YYY';
10
-
11
- } else {
12
-
13
- itemName = 'ZZZ';
14
-
15
- }
16
-
17
- (略)
18
-
19
- itemName = Encoding.convert(itemName, 'SJIS');
20
-
21
-
22
-
23
- let result = merchantId
24
-
25
- + A
26
-
27
- + B
28
-
29
- + itemName
30
-
31
- + D;
32
-
33
-
34
-
35
- (略)
36
-
37
- postData='';
38
-
39
- postData='<?xmlversion="1.0"encoding="Shift_JIS"?>';
40
-
41
- (略)
42
-
43
- postData+='<item_name>' + btoa(unescape(encodeURIComponent(itemName))) + '</item_name>';
44
-
45
- postData+='<tax>'+tax+'</tax>';
46
-
47
- postData+='<amount>'+amount+'</amount>';
48
-
49
- (略)
50
-
51
-
52
-
53
- (作成したpostDataを対象にPOST)
54
-
55
1
  ### 前提・実現したいこと
56
2
 
57
3
  画面上から取得した値(UTF-16)をSJISに変換し、ハッシュコード変換して使用。
@@ -87,6 +33,8 @@
87
33
 
88
34
 
89
35
  ### 該当のソースコード
36
+
37
+ ```javascript
90
38
 
91
39
  // 画面の設定値取得(hoge1,2は英数字、itemNameのみ全半角混合)
92
40
 
@@ -142,6 +90,8 @@
142
90
 
143
91
  (外部システムにpostDataをPOST)
144
92
 
93
+ ```
94
+
145
95
 
146
96
 
147
97
  ```ここに言語名を入力

1

テンプレートを使用して質問を書き直しました。

2020/07/22 00:36

投稿

keiniketani
keiniketani

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,17 +1,3 @@
1
- 画面上から取得した値(UTF-16)をSJISに変換し、ハッシュコード変換して使用。
2
-
3
- BASE64変換を行い、再度使用(外部システムにPOST)
4
-
5
- 最終的に外部システム側で受け取った値が???になってしまいます。
6
-
7
- SJIS変換箇所やBASE64の変換箇所でおかしいところがあればご指摘を頂きたく。
8
-
9
-
10
-
11
- 配列で変換を行う等のトライ&エラーを行ってみたのですが、どうしても正常に変換ができない状態です。
12
-
13
-
14
-
15
1
  ■該当箇所のみ抜粋
16
2
 
17
3
  (略)
@@ -65,3 +51,117 @@
65
51
 
66
52
 
67
53
  (作成したpostDataを対象にPOST)
54
+
55
+ ### 前提・実現したいこと
56
+
57
+ 画面上から取得した値(UTF-16)をSJISに変換し、ハッシュコード変換して使用。
58
+
59
+ BASE64変換を行い、再度使用(外部システムにPOST)
60
+
61
+ 最終的に外部システム側で受け取った値が???になってしまいます。
62
+
63
+ SJIS変換箇所やBASE64の変換箇所でおかしいところがあればご指摘を頂きたく。
64
+
65
+
66
+
67
+ 配列で変換を行う等のトライ&エラーを行ってみたのですが、どうしても正常に変換ができない状態です。
68
+
69
+ SJIS変換にGitHubのencoding.js、
70
+
71
+ ハッシュ値生成にcrypt.jsを使用しています。
72
+
73
+
74
+
75
+ ### 発生している問題・エラーメッセージ
76
+
77
+ SJIS変換またはBASE64変換が正常に行われない。
78
+
79
+ ```
80
+
81
+ エラーメッセージ
82
+
83
+ ```
84
+
85
+ エラーメッセージの出力はなし
86
+
87
+
88
+
89
+ ### 該当のソースコード
90
+
91
+ // 画面の設定値取得(hoge1,2は英数字、itemNameのみ全半角混合)
92
+
93
+ let hoge1 = 'hoge1';
94
+
95
+ let hoge2 = 'hoge2';
96
+
97
+ let itemName = '商品名称(にほんごめい)'
98
+
99
+
100
+
101
+ // SJIS変換(encoding.jsを外部jsとして使用)
102
+
103
+ hoge1 = Encoding.convert(hoge1 , 'SJIS');
104
+
105
+ hoge2 = Encoding.convert(hoge2 , 'SJIS');
106
+
107
+ itemName = Encoding.convert(itemName, 'SJIS');
108
+
109
+
110
+
111
+ // SJIS変換後の全項目を連結
112
+
113
+ let result = hoge1 + hoge2 + itemName;
114
+
115
+
116
+
117
+ // 連結後の値をハッシュ値に変換(crypto-jsを外部jsとして使用)
118
+
119
+ let spsHashcode = new CryptoJS.SHA1(result)
120
+
121
+
122
+
123
+ // 外部システムにxml形式でpostする必要があるため、作成
124
+
125
+ // 全角含む項目はBASE64変換を行い、送付する必要あり
126
+
127
+ let postData='';
128
+
129
+ postData = '<?xml version="1.0" encoding="Shift_JIS"?>';
130
+
131
+ postData += '<request id="XXXXX">';
132
+
133
+ postData+='<hoge1 >'+hoge1 +'</hoge1 >';
134
+
135
+ postData+='<hoge2 >'+hoge2 +'</hoge2 >';
136
+
137
+ postData+='<item_name>' + btoa(unescape(encodeURIComponent(itemName))) + '</item_name>';
138
+
139
+ postData += '<sps_hashcode>' + spsHashcode + '</sps_hashcode>';
140
+
141
+
142
+
143
+ (外部システムにpostDataをPOST)
144
+
145
+
146
+
147
+ ```ここに言語名を入力
148
+
149
+ javascript
150
+
151
+
152
+
153
+ ### 試したこと
154
+
155
+ https://tacamy.hatenablog.com/entry/2019/07/04/152104
156
+
157
+ https://qiita.com/weal/items/3b3ddfb8157047119554
158
+
159
+ 上記を参考に、変換対象を配列に置き換える等試しましたが、うまくいかず。。。
160
+
161
+
162
+
163
+ ### 補足情報(FW/ツールのバージョンなど)
164
+
165
+
166
+
167
+ ここにより詳細な情報を記載してください。