222 lines
5.4 KiB
Go
222 lines
5.4 KiB
Go
package jdshopapi
|
|
|
|
import (
|
|
"crypto/aes"
|
|
"crypto/cipher"
|
|
"encoding/base64"
|
|
"encoding/hex"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
)
|
|
|
|
func TestCreateShopCategory(t *testing.T) {
|
|
var CreateShopCategoryParams = []*CreateShopCategoryParam{
|
|
&CreateShopCategoryParam{
|
|
HomeShow: "0",
|
|
ID: "0",
|
|
Open: "",
|
|
OrderNo: "0",
|
|
ParentID: "",
|
|
Title: "测试1",
|
|
Type: "3",
|
|
},
|
|
}
|
|
result, _ := api.CreateShopCategory(CreateShopCategoryParams)
|
|
fmt.Println(result)
|
|
}
|
|
|
|
func TestUpdateStoreStatus(t *testing.T) {
|
|
err := api.UpdateStoreStatus(24332466, 1)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestNewInfoList(t *testing.T) {
|
|
result, err := api.NewInfoList(1)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(utils.Format4Output(result, false))
|
|
}
|
|
|
|
func Test11(t *testing.T) {
|
|
request, _ := http.NewRequest(http.MethodGet, "https://stores.shop.jd.com/stores/updateStoreStatus?storeId=24339301&storeStatus=1", nil)
|
|
c := &http.Cookie{
|
|
Name: "thor",
|
|
Value: "80FAF09E9A09B6E618A68057BDFCFCB88A0E4CE7743FBEC84F10D992F9C6A4119DF98DA3CAAE9C7F17BEB62884625B4E7BC82422A90F45F02EA293572D951B055EF0B5F603AEA568DFD4234138F841EC1AC1F67B30B48AAC9EAD5FBAE7943E1DCC99E99D8358C82F7832B71A2BCB31624E16BBF561720443DE966BDA3588406233A90224D9089710B102AA98B979B9B3",
|
|
}
|
|
request.AddCookie(c)
|
|
client := &http.Client{}
|
|
fmt.Println("test1", request.URL)
|
|
response, _ := client.Do(request)
|
|
defer response.Body.Close()
|
|
bodyData, _ := ioutil.ReadAll(response.Body)
|
|
fmt.Println("test1", string(bodyData))
|
|
}
|
|
|
|
func TestAllOrders(t *testing.T) {
|
|
result, err := api.AllOrders(&AllOrdersParam{
|
|
Current: 1,
|
|
PageSize: 1,
|
|
OrderID: "118793082128",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(utils.Format4Output(result, false))
|
|
}
|
|
|
|
func TestOrderDetail(t *testing.T) {
|
|
result, err := api.OrderDetail("125138699851")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(utils.Format4Output(result, false))
|
|
}
|
|
|
|
func TestPhoneSensltiveInfo(t *testing.T) {
|
|
result, err := api.PhoneSensltiveInfo("124396047880", "10b1707dc87755373d488a7a4f422f7d")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(utils.Format4Output(result, false))
|
|
}
|
|
|
|
func TestUpdateWaybill(t *testing.T) {
|
|
err := api.UpdateWaybill("123076499052", "1274", "88328977356545 ")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
// t.Log(utils.Format4Output(result, false))
|
|
}
|
|
|
|
func TestTryGetCookie(t *testing.T) {
|
|
result, err := api.TryGetCookie()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(utils.Format4Output(result, false))
|
|
}
|
|
|
|
func TestAAADS(t *testing.T) {
|
|
str := "AAS2QGu5EUYo35u+GIPUbcPQrI8MbLvXIHaYS47i8I6De0Fzgdpyw7TT9Iti3RiIY30="
|
|
data, _ := base64.StdEncoding.DecodeString(str)
|
|
dataStr := hex.EncodeToString(data)
|
|
fmt.Println("all:", dataStr)
|
|
fmt.Println("key ID:", dataStr[4:36])
|
|
fmt.Println("IV:", dataStr[36:68])
|
|
fmt.Println("key main:", dataStr[68:len(dataStr)])
|
|
data2, _ := base64.StdEncoding.DecodeString("/xdYPxcavDO9IpsJP1uFfbbuv7WdIyckhJ9RBe3h9r8=")
|
|
dataStr2 := hex.EncodeToString(data2)
|
|
// key := base64.StdEncoding.EncodeToString([]byte(dataStr[36:68]))
|
|
fmt.Println(SubstrByByte(dataStr[36:len(dataStr)], 16))
|
|
result, _ := AESBase64Decrypt("417381da72c3b4d3f48b62dd1888637d", dataStr2[:32], "ac8f0c6cbbd72076984b8ee2f08e837b")
|
|
fmt.Println(string(result))
|
|
}
|
|
|
|
func SubstrByByte(str string, length int) string {
|
|
bs := []byte(str)[:length]
|
|
bl := 0
|
|
for i := len(bs) - 1; i >= 0; i-- {
|
|
switch {
|
|
case bs[i] >= 0 && bs[i] <= 127:
|
|
return string(bs[:i+1])
|
|
case bs[i] >= 128 && bs[i] <= 191:
|
|
bl++
|
|
case bs[i] >= 192 && bs[i] <= 253:
|
|
cl := 0
|
|
switch {
|
|
case bs[i]&252 == 252:
|
|
cl = 6
|
|
case bs[i]&248 == 248:
|
|
cl = 5
|
|
case bs[i]&240 == 240:
|
|
cl = 4
|
|
case bs[i]&224 == 224:
|
|
cl = 3
|
|
default:
|
|
cl = 2
|
|
}
|
|
if bl+1 == cl {
|
|
return string(bs[:i+cl])
|
|
}
|
|
return string(bs[:i])
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func DecryptDESECB(d, key []byte) string {
|
|
data, err := base64.StdEncoding.DecodeString(string(d))
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
block, err := aes.NewCipher(key)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
bs := block.BlockSize()
|
|
if len(data)%bs != 0 {
|
|
return ""
|
|
}
|
|
out := make([]byte, len(data))
|
|
dst := out
|
|
for len(data) > 0 {
|
|
block.Decrypt(dst, data[:bs])
|
|
data = data[bs:]
|
|
dst = dst[bs:]
|
|
}
|
|
out = PKCS5UnPadding(out)
|
|
return string(out)
|
|
}
|
|
|
|
func PKCS5UnPadding(origData []byte) []byte {
|
|
length := len(origData)
|
|
unpadding := int(origData[length-1])
|
|
return origData[:(length - unpadding)]
|
|
}
|
|
|
|
func AESBase64Decrypt(encrypt_data string, key, iv string) (origin_data string, err error) {
|
|
var block cipher.Block
|
|
if block, err = aes.NewCipher([]byte(key)); err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
encrypt := cipher.NewCBCDecrypter(block, []byte(iv))
|
|
|
|
var source []byte
|
|
if source, err = base64.RawStdEncoding.DecodeString(encrypt_data); err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
var dst []byte = make([]byte, len(source))
|
|
encrypt.CryptBlocks(dst, source)
|
|
origin_data = string(PKCS5Trimming(dst))
|
|
return
|
|
}
|
|
|
|
func Decrypt(src, key, iv string) (data []byte, err error) {
|
|
decrypted := make([]byte, len(src))
|
|
var aesBlockDecrypter cipher.Block
|
|
aesBlockDecrypter, err = aes.NewCipher([]byte(key))
|
|
if err != nil {
|
|
println(err.Error())
|
|
return nil, err
|
|
}
|
|
fmt.Println(aesBlockDecrypter.BlockSize())
|
|
aesDecrypter := cipher.NewCBCDecrypter(aesBlockDecrypter, []byte(iv))
|
|
aesDecrypter.CryptBlocks(decrypted, []byte(src))
|
|
return PKCS5Trimming(decrypted), nil
|
|
}
|
|
|
|
func PKCS5Trimming(encrypt []byte) []byte {
|
|
padding := encrypt[len(encrypt)-1]
|
|
return encrypt[:len(encrypt)-int(padding)]
|
|
}
|