Paypal 转到贝宝RESTAPI请求

Paypal 转到贝宝RESTAPI请求,paypal,go,Paypal,Go,所以我现在正在使用Go,我正在尝试为Paypal创建一个支付系统,我一直在尝试这个代码 payer := &Payer{"paypal"} amount := &Amount{"EUR", "12"} trans := &Transactions{amount, "A super test"} uris := &Redirect_urls{"http://localhost", "http://localhost"} p :

所以我现在正在使用Go,我正在尝试为Paypal创建一个支付系统,我一直在尝试这个代码

    payer := &Payer{"paypal"}
    amount := &Amount{"EUR", "12"}
    trans := &Transactions{amount, "A super test"}
    uris := &Redirect_urls{"http://localhost", "http://localhost"}
    p := &Payment{"sale", payer, trans, uris}
    response, err := json.Marshal(p)
    if err != nil {
        log.Println("Error at PaypalPayment - buy controller")
        log.Fatal(err)
    }
    log.Println(string(response))

    client := &http.Client{}
    buf := bytes.NewBuffer(response)
    req, err := http.NewRequest("POST", "https://api.sandbox.paypal.com/v1/payments/payment", buf)
    if err != nil {
        log.Println("Error at PaypalPayment - buy controller - 2")
        log.Fatal(err)
    }
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "Bearer " + token.Access_token)
    resp, err := client.Do(req)
    if err != nil {
        log.Println("Error at PaypalPayment - buy controller - 3")
        log.Fatal(err)
    }
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println("Error at PaypalPayment - buy controller - 4")
        log.Fatal(err)
    }
    log.Println(string(body))
我已经得到了访问令牌,问题是我在响应体上得到了这个错误(最后一行)

格式错误的请求

Im使用的请求如下(从println开始)

在我看来,这似乎是一个很好的要求。。。不知道我错过了什么

正如@jcbwlkr所指出的,您的套管与文档中的套管不匹配。如果类型上没有json标记,则必须添加它们。您必须将属性名保持大写,因为它将字段标记为导出。如果您不熟悉这一点,请搜索“未报告与导出的golang字段”

例如,您的
Payment
structs定义需要如下所示

type Payment struct {
     Amount *Amount `json:"amount"`
     Transactions *Transactions `json:"transactions"`
     RdUrls *Redirect_urls `json:"redirect_urls"`
}
另外,仅供参考,您可以在声明付款的地方使用嵌套声明,这样您就不必为了进行声明而将
金额
交易
重定向URL
分配给本地实例

就像,

p := &Payment{"sale", payer, &Transactions{amount, "A super test"}, uris}

问题是事务需要是一个数组。我多瞎啊

Transactions []*Transactions `json:"transactions"`

我不知道这是个问题,但使用localhost作为重定向url可能是不允许的。大多数服务器都会因为可能暴露安全漏洞而导致发送请求失败。你能链接到这个请求的文档吗?为了判断它是好是坏,我必须能够将它与API所期望的进行比较。此外,来自响应机构的状态代码和任何其他信息通常也会有所帮助。这就是请求的样子——至于如何使用localhost,问题不在那里(我猜),因为它说它的格式不正确paypal文档上的错误格式错误的请求说传入的JSON请求没有映射到API请求,这意味着请求的url是错误的,但我认为不是这样的。你的身体看起来很好。您是否能从该服务器的任何其他请求中获得良好的响应?文档显示小写的
付款人
,但您有
付款人
。它可能会死在这个案子上difference@AlvaroCarvajalNakosmai您是否在所有类型中递归地应用了它?请注意,它们的所有属性名称都是小写的。如果是这样的话,我看不出你的模式和他们示例中实现的模式有什么区别。是的,在所有结构上。不知道还能做什么do@AlvaroCarvajalNakosmai我的点子快用完了。两件事,首先在他们的文档中,错误字符串显示为
格式错误的请求\u错误
,这不是你在问题中发布的内容。那是你的错吗?从他们的API返回的值是否与记录的值不同?您能否验证响应是否来自PayPal,而不是Akamai这样的中介服务?如果你得到的错误是记录在案的错误,并且回复直接来自PayPal,我唯一剩下的建议就是直接联系他们getting@AlvaroCarvajalNakosmai当我有时间的时候,我会关注他们返回的链接。这种反应肯定不是在更广泛的文档位置记录的,所以我很怀疑PayPal是否坚持他们的交易目的。
Transactions []*Transactions `json:"transactions"`