代码拉取完成,页面将自动刷新
package wxpay
import (
"bytes"
"encoding/xml"
"io/ioutil"
"net/http"
"strings"
uuid "github.com/satori/go.uuid"
)
type DownloadBillReq struct {
AppId string `xml:"appid"`
MchId string `xml:"mch_id"`
NonceStr string `xml:"nonce_str"`
Sign string `xml:"sign"`
BillDate string `xml:"bill_date"`
}
func WxDownloadBill(appId string, billDate string) (WxPayResponse, error) {
var downloadBillReq DownloadBillReq
downloadBillReq.AppId = appId
downloadBillReq.MchId = MchId
sourceUuid := uuid.NewV4()
formatUuid := strings.Replace(sourceUuid.String(), "-", "", -1)
downloadBillReq.NonceStr = formatUuid
downloadBillReq.BillDate = billDate
var mReqMap map[string]interface{}
mReqMap = make(map[string]interface{}, 0)
mReqMap["appid"] = downloadBillReq.AppId
mReqMap["mch_id"] = downloadBillReq.MchId
mReqMap["nonceStr"] = downloadBillReq.NonceStr
mReqMap["bill_date"] = downloadBillReq.BillDate
downloadBillReq.Sign = WxPayCalcSign(mReqMap, MchSecret)
xmlReq, err := xml.Marshal(downloadBillReq)
if err != nil {
return WxPayResponse{}, err
}
strReq := string(xmlReq)
strReq = strings.Replace(strReq, "DownloadBillReq", "xml", -1)
xmlReq = []byte(strReq)
request, err := http.NewRequest("POST", "https://api.mch.weixin.qq.com/pay/downloadbill", bytes.NewReader(xmlReq))
if err != nil {
return WxPayResponse{}, err
}
request.Header.Set("Accept", "application/xml")
request.Header.Set("Content-Type", "application/xml;charset=utf-8")
httpClient := http.Client{}
response, err := httpClient.Do(request)
if err != nil {
return WxPayResponse{}, err
}
responseBody, err := ioutil.ReadAll(response.Body)
if err != nil {
return WxPayResponse{}, err
}
var payResponse WxPayResponse
err = xml.Unmarshal(responseBody, &payResponse)
if err != nil {
return WxPayResponse{}, err
}
return payResponse, nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。