package wechat import "encoding/xml" // Entrust 申请签约 type Entrust struct { XMLName xml.Name `xml:"xml"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` PlanID string `xml:"plan_id"` // 协议模板id ContractCode string `xml:"contract_code"` // 签约协议号 RequestSerial int64 `xml:"request_serial"` // 商户请求签约时的序列号,要求唯一性。序列号主要用于排序,不作为查询条件 Name string `xml:"contract_display_account"` // 签约用户的名称 NotifyURL string `xml:"notify_url"` // 接受扣款结果异步回调通知的url,传输需要url encode //Ver string `xml:"ver"` // 版本号, 固定值1.0 Sign string `xml:"sign"` // 签名 Timestamp int `xml:"timestamp"` // 时间戳, 10位时间戳 IP string `xml:"clientip"` // 用户客户端的真实IP地址 // ReturnWeb int `xml:"return_web"` // 1表示返回签约页面的referrer url, 不填或获取不到referrer则不返回; 跳转referrer url时会自动带上参数from_wxpay=1 } // H5Entrust H5纯签约 func H5Entrust(config WePayConfig, order Entrust) (reply WePayReply, err error) { m := make(map[string]interface{}) m["appid"] = order.AppID m["mch_id"] = order.MchID m["plan_id"] = order.PlanID m["contract_code"] = order.ContractCode m["request_serial"] = order.RequestSerial m["contract_display_account"] = order.Name m["notify_url"] = order.NotifyURL m["ver"] = `1.0` m["timestamp"] = order.Timestamp m["clientip"] = order.IP var data []byte order.Sign = Sign(m, config.Key) if data, err = xml.Marshal(order); err != nil { return } reply, err = post(WePayHost+WePayURLPapayEntrust, data) return }