| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package huawei
- import (
- "encoding/json"
- "net/http"
- "strings"
- "bet24.com/log"
- "bet24.com/servers/payment/db"
- "bet24.com/servers/payment/shop"
- "github.com/gin-gonic/gin"
- )
- // 下单
- func Order(c *gin.Context) {
- obj := db.NewOrder(db.SP_HuaweiPay_ORDER)
- if err := c.ShouldBind(&obj.In); err != nil {
- log.Debug("%s query params err %v", "huawei.PayOrder", err)
- c.String(http.StatusOK, "")
- return
- }
- obj.In.IpAddress = strings.Split(c.Request.RemoteAddr, ":")[0]
- // 获取产品信息
- item := shop.GetProduct(obj.In.ProductID)
- if item == nil {
- log.Error("%s query GetProduct productId=%s currency=%s is nil", "huawei.PayOrder", obj.In.ProductID, obj.In.Currency)
- c.String(http.StatusOK, "")
- return
- }
- //// 获取当前汇率信息
- //info := shop.GetExchangeRate(obj.In.Currency)
- //if info == nil {
- // log.Error("%s query GetExchangeRate obj.In.Currency=%s is nil", "huawei.PayOrder", obj.In.Currency)
- // c.String(http.StatusOK, "")
- // return
- //}
- //
- //// 计算价格
- //calPrice := info.Rate * item.Price
- //
- //// 检查价格是否篡改
- //if calPrice != obj.In.Price {
- // log.Error("%s obj.In.Price=%v info.Rate=%v calPrice=%v is invalid", "huawei.PayOrder", obj.In.Price, info.Rate, calPrice)
- // c.String(http.StatusOK, "")
- // return
- //}
- // 检查价格是否篡改
- if item.Price != obj.In.Price {
- log.Error("%s obj.In.Price=%v calPrice=%v is invalid", "huawei.PayOrder", obj.In.Price, item.Price)
- c.String(http.StatusOK, "")
- return
- }
- obj.DoAction(nil)
- if obj.Out.OrderID == "" {
- log.Debug("%s GenOrder fail obj.In=%+v", "huawei.PayOrder", obj.In)
- c.String(http.StatusOK, "")
- return
- }
- c.String(http.StatusOK, obj.Out.OrderID)
- return
- }
- // 回调
- func Notify(c *gin.Context) {
- _, err := AtDemo.GetAppAt()
- if err != nil {
- log.Error("%s GetAppAt err is %v", "huawei.Notify", err)
- return
- }
- //获取参数
- reqPurchaseData := strings.Join(c.Request.Form["inAppPurchaseData"], "")
- //log.Debug("reqPurChaseData ==> %s", reqPurchaseData)
- //解析参数
- req := purchaseData{}
- if err := json.Unmarshal([]byte(reqPurchaseData), &req); err != nil {
- log.Debug("%s Query Params reqPurchaseData Unmarshal err %v", "huawei.Notify", err)
- return
- }
- //log.Debug("解析参数:%+v", req)
- //验证token有效性
- retCode, _ := Client.VerifyToken(req.PurchaseToken, req.ProductId, 0)
- c.JSON(http.StatusOK, struct{ RetCode int }{RetCode: retCode})
- return
- }
|