首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >接收消费请求通知并发送消费信息

接收消费请求通知并发送消费信息
EN

Stack Overflow用户
提问于 2021-11-01 08:33:34
回答 1查看 73关注 0票数 1

如果用户开始退款,苹果将向商家服务器发送Consumption_Request通知。当我试图处理消费请求通知并调用发送消费信息界面将用户消费信息发送到苹果服务器时,我得到了两种形式的响应。

案例1:

当我的param错误时,这样的反应是:在这里输入图像描述

案例2:

如果我的param是正确的,响应代码是401,如下所示:在这里输入图像描述

我发现401意味着未经授权。所以也许我的JWT检查失败了。

因此,我的问题是,如何生成JWT令牌?有什么演示吗?以及如何获得秘密密钥文件( .p8文件)。我怀疑我拿错文件了)?

EN

回答 1

Stack Overflow用户

发布于 2021-12-09 08:13:20

如何生成JWT令牌?

这是戈朗的一个样本

代码语言:javascript
运行
复制
func readPrivateKeyFromFile(keyFile string) (*ecdsa.PrivateKey, error) {
    bytes, err := ioutil.ReadFile(keyFile)
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(bytes)
    if block == nil {
        return nil, errors.New("appstore private key must be a valid .p8 PEM file")
    }

    key, err := x509.ParsePKCS8PrivateKey(block.Bytes)
    if err != nil {
        return nil, err
    }

    switch pk := key.(type) {
    case *ecdsa.PrivateKey:
        return pk, nil
    default:
        return nil, errors.New("appstore private key must be of type ecdsa.PrivateKey")
    }

}

func generateToken(privateKey *ecdsa.PrivateKey) (string, error) {
    token := jwt.NewWithClaims(jwt.SigningMethodES256, jwt.MapClaims{
        "iss":   "issuerId,
        "isa":   time.Now().Unix(),
        "exp":   expireTIme,
        "aud":   "appstoreconnect-v1",
        "nonce": "uuid",
        "bid":   "bid",
    })

    token.Header["kid"] = "keyId"
    token.Header["alg"] = "ES256"
    token.Header["typ"] = "JWT"

    return token.SignedString(privateKey)
}

如何获得秘密密钥文件( .p8文件)。我怀疑我拿错文件了)?

请参阅主修博士

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69794384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档