-
Notifications
You must be signed in to change notification settings - Fork 5
/
create.go
63 lines (57 loc) · 2.73 KB
/
create.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Package alipay https://docs.open.alipay.com/api_1/alipay.trade.create/
package alipay
import (
"encoding/json"
)
// CreateParamGoods ...
type CreateParamGoods struct {
GoodsID string `json:"goods_id"` // 商品的编号
GoodsName string `json:"goods_name"` // 商品名称
Quantity int `json:"quantity"` // 商品数量
Price string `json:"price"` // 商品单价
GoodsCategory string `json:"goods_category"` // 商品类目
Body string `json:"body"` // 商品描述信息
ShowURL string `json:"show_url"` // 商品的展示地址
}
// CreateParamExtendParams ...
type CreateParamExtendParams struct {
SysServiceProviderID string `json:"sys_service_provider_id"` // 系统商编号
}
// CreateParam ...
type CreateParam struct {
OutTradeNo string `json:"out_trade_no"` // 商户订单号
SellerID string `json:"seller_id"` // 卖家支付宝用户ID
TotalAmount string `json:"total_amount"` // 订单总金额
DiscountableAmount string `json:"discountable_amount"` // 参与优惠计算的金额
Subject string `json:"subject"` // 订单标题
Body string `json:"body"` // 订单描述
BuyerID string `json:"buyer_id"` // 买家的支付宝用户id
GoodsDetailList []*CreateParamGoods `json:" goods_detail"` // 订单包含的商品列表信息
OperatorID string `json:"operator_id"` // 商户操作员编号
StoreID string `json:"store_id"` // 商户门店编号
TerminalID string `json:"terminal_id"` // 商户机具终端编号
ExtendParams CreateParamExtendParams `json:"extend_params"` // 业务扩展参数
TimeoutExpress string `json:"timeout_express"` // 该笔订单允许的最晚付款时间
BusinessParams string `json:"business_params"` // 商户传入业务信息
}
// CreateResponse ...
type CreateResponse struct {
ResponseError
OutTradeNo string `json:"out_trade_no"` // 商户订单号
TradeNo string `json:"trade_no"` // 支付宝交易号
}
// Create ...
func (alipay *Alipay) Create(param *CreateParam) (int, *CreateResponse, error) {
statusCode, body, err := alipay.OnRequest(
param,
MethodAlipayTradeCreate,
)
if err != nil {
return 0, nil, err
}
createResponse := new(CreateResponse)
if err := json.Unmarshal(body, createResponse); err != nil {
return 0, nil, err
}
return statusCode, createResponse, nil
}