質問編集履歴
2
実装箇所の記載修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,30 +1,3 @@
|
|
1
|
-
■該当箇所のみ抜粋
|
2
|
-
(略)
|
3
|
-
let itemName = '';
|
4
|
-
if (itemId === 'XXX') {
|
5
|
-
itemName = 'YYY';
|
6
|
-
} else {
|
7
|
-
itemName = 'ZZZ';
|
8
|
-
}
|
9
|
-
(略)
|
10
|
-
itemName = Encoding.convert(itemName, 'SJIS');
|
11
|
-
|
12
|
-
let result = merchantId
|
13
|
-
+ A
|
14
|
-
+ B
|
15
|
-
+ itemName
|
16
|
-
+ D;
|
17
|
-
|
18
|
-
(略)
|
19
|
-
postData='';
|
20
|
-
postData='<?xmlversion="1.0"encoding="Shift_JIS"?>';
|
21
|
-
(略)
|
22
|
-
postData+='<item_name>' + btoa(unescape(encodeURIComponent(itemName))) + '</item_name>';
|
23
|
-
postData+='<tax>'+tax+'</tax>';
|
24
|
-
postData+='<amount>'+amount+'</amount>';
|
25
|
-
(略)
|
26
|
-
|
27
|
-
(作成したpostDataを対象にPOST)
|
28
1
|
### 前提・実現したいこと
|
29
2
|
画面上から取得した値(UTF-16)をSJISに変換し、ハッシュコード変換して使用。
|
30
3
|
BASE64変換を行い、再度使用(外部システムにPOST)
|
@@ -43,6 +16,7 @@
|
|
43
16
|
エラーメッセージの出力はなし
|
44
17
|
|
45
18
|
### 該当のソースコード
|
19
|
+
```javascript
|
46
20
|
// 画面の設定値取得(hoge1,2は英数字、itemNameのみ全半角混合)
|
47
21
|
let hoge1 = 'hoge1';
|
48
22
|
let hoge2 = 'hoge2';
|
@@ -70,6 +44,7 @@
|
|
70
44
|
postData += '<sps_hashcode>' + spsHashcode + '</sps_hashcode>';
|
71
45
|
|
72
46
|
(外部システムにpostDataをPOST)
|
47
|
+
```
|
73
48
|
|
74
49
|
```ここに言語名を入力
|
75
50
|
javascript
|
1
テンプレートを使用して質問を書き直しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,10 +1,3 @@
|
|
1
|
-
画面上から取得した値(UTF-16)をSJISに変換し、ハッシュコード変換して使用。
|
2
|
-
BASE64変換を行い、再度使用(外部システムにPOST)
|
3
|
-
最終的に外部システム側で受け取った値が???になってしまいます。
|
4
|
-
SJIS変換箇所やBASE64の変換箇所でおかしいところがあればご指摘を頂きたく。
|
5
|
-
|
6
|
-
配列で変換を行う等のトライ&エラーを行ってみたのですが、どうしても正常に変換ができない状態です。
|
7
|
-
|
8
1
|
■該当箇所のみ抜粋
|
9
2
|
(略)
|
10
3
|
let itemName = '';
|
@@ -31,4 +24,61 @@
|
|
31
24
|
postData+='<amount>'+amount+'</amount>';
|
32
25
|
(略)
|
33
26
|
|
34
|
-
(作成したpostDataを対象にPOST)
|
27
|
+
(作成したpostDataを対象にPOST)
|
28
|
+
### 前提・実現したいこと
|
29
|
+
画面上から取得した値(UTF-16)をSJISに変換し、ハッシュコード変換して使用。
|
30
|
+
BASE64変換を行い、再度使用(外部システムにPOST)
|
31
|
+
最終的に外部システム側で受け取った値が???になってしまいます。
|
32
|
+
SJIS変換箇所やBASE64の変換箇所でおかしいところがあればご指摘を頂きたく。
|
33
|
+
|
34
|
+
配列で変換を行う等のトライ&エラーを行ってみたのですが、どうしても正常に変換ができない状態です。
|
35
|
+
SJIS変換にGitHubのencoding.js、
|
36
|
+
ハッシュ値生成にcrypt.jsを使用しています。
|
37
|
+
|
38
|
+
### 発生している問題・エラーメッセージ
|
39
|
+
SJIS変換またはBASE64変換が正常に行われない。
|
40
|
+
```
|
41
|
+
エラーメッセージ
|
42
|
+
```
|
43
|
+
エラーメッセージの出力はなし
|
44
|
+
|
45
|
+
### 該当のソースコード
|
46
|
+
// 画面の設定値取得(hoge1,2は英数字、itemNameのみ全半角混合)
|
47
|
+
let hoge1 = 'hoge1';
|
48
|
+
let hoge2 = 'hoge2';
|
49
|
+
let itemName = '商品名称(にほんごめい)'
|
50
|
+
|
51
|
+
// SJIS変換(encoding.jsを外部jsとして使用)
|
52
|
+
hoge1 = Encoding.convert(hoge1 , 'SJIS');
|
53
|
+
hoge2 = Encoding.convert(hoge2 , 'SJIS');
|
54
|
+
itemName = Encoding.convert(itemName, 'SJIS');
|
55
|
+
|
56
|
+
// SJIS変換後の全項目を連結
|
57
|
+
let result = hoge1 + hoge2 + itemName;
|
58
|
+
|
59
|
+
// 連結後の値をハッシュ値に変換(crypto-jsを外部jsとして使用)
|
60
|
+
let spsHashcode = new CryptoJS.SHA1(result)
|
61
|
+
|
62
|
+
// 外部システムにxml形式でpostする必要があるため、作成
|
63
|
+
// 全角含む項目はBASE64変換を行い、送付する必要あり
|
64
|
+
let postData='';
|
65
|
+
postData = '<?xml version="1.0" encoding="Shift_JIS"?>';
|
66
|
+
postData += '<request id="XXXXX">';
|
67
|
+
postData+='<hoge1 >'+hoge1 +'</hoge1 >';
|
68
|
+
postData+='<hoge2 >'+hoge2 +'</hoge2 >';
|
69
|
+
postData+='<item_name>' + btoa(unescape(encodeURIComponent(itemName))) + '</item_name>';
|
70
|
+
postData += '<sps_hashcode>' + spsHashcode + '</sps_hashcode>';
|
71
|
+
|
72
|
+
(外部システムにpostDataをPOST)
|
73
|
+
|
74
|
+
```ここに言語名を入力
|
75
|
+
javascript
|
76
|
+
|
77
|
+
### 試したこと
|
78
|
+
https://tacamy.hatenablog.com/entry/2019/07/04/152104
|
79
|
+
https://qiita.com/weal/items/3b3ddfb8157047119554
|
80
|
+
上記を参考に、変換対象を配列に置き換える等試しましたが、うまくいかず。。。
|
81
|
+
|
82
|
+
### 補足情報(FW/ツールのバージョンなど)
|
83
|
+
|
84
|
+
ここにより詳細な情報を記載してください。
|