【发布时间】:2021-01-18 08:07:19
【问题描述】:
尝试实施,基于 razorpay 网站中的official documentation 代码:
11 func indexpageGet(c *gin.Context) {
12
13 client := razorpay.NewClient("rzp_test_zlsYshjhjhjln", "9LtUy4qhghghgh2asp59es")
14
15 data := map[string]interface{}{
16 "amount": 1234,
17 "currency": "INR",
18 "receipt_id": "some_receipt_id",
19 }
20 body, err := client.Order.Create(data)
21 if err != nil {
22 fmt.Println(err)
23 }
24
25 fmt.Println(body)
编译错误:
./main.go:20:34: not enough arguments in call to client.Order.Create
have (map[string]interface {})
want (map[string]interface {}, map[string]string)
我的观察: 函数 client.Order.Create(data) 需要两个参数,我从 razorpay 库确认了它(参见函数定义部分)。所以解决方案是我也需要传递第二个参数(extraHeaders)。
// Create creates a new order for the given data
func (order *Order) Create(data map[string]interface{}, extraHeaders map[string]string) (map[string]interface{}, error) {
return order.Request.Post(constants.ORDER_URL, data, extraHeaders)
}
我卡住的点是extraHeaders是什么,我需要传递什么值?
【问题讨论】:
-
可能只是额外的 HTTP 标头与 post 请求一起发送。为什么不直接发送一张空地图?
-
@pacuna,正如你所建议的,尝试使用空映射
client.Order.Create(data,map[string]string{}),然后它正在编译,但运行时错误Error method: runtime error: invalid memory address or nil pointer dereference) -
您传递的是 empty 地图还是
nil地图?它们不是一回事。 -
是的,使用 hsh := make(map[string]string) 并发送
-
我认为他们的整合
sample code有一些小故障。我在后面,会在这里更新..