control.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package apple
  2. import (
  3. "encoding/base64"
  4. "net/http"
  5. "strconv"
  6. "strings"
  7. "bet24.com/log"
  8. "bet24.com/servers/coreservice/client"
  9. "bet24.com/servers/payment/db"
  10. "github.com/gin-gonic/gin"
  11. )
  12. func Verify(c *gin.Context) {
  13. //获取参数
  14. userDBID := strings.Join(c.Request.Form["userDBID"], "")
  15. userId, err := strconv.Atoi(userDBID)
  16. if err != nil {
  17. log.Error("apple.Verify get UserDBID fail %v", err)
  18. return
  19. }
  20. szReceipt := strings.Join(c.Request.Form["szReceipt"], "")
  21. szReceipt = base64.StdEncoding.EncodeToString([]byte(szReceipt))
  22. if szReceipt == "" {
  23. log.Error("apple.Verify get szReceipt is null")
  24. return
  25. }
  26. ipAddress := strings.Split(c.Request.RemoteAddr, ":")[0]
  27. objLog := db.NewAddLog()
  28. objLog.In.UserID = userId
  29. objLog.In.ReceiptBuffer = szReceipt
  30. objLog.In.IPAddress = ipAddress
  31. objLog.DoAction(nil)
  32. isSandBox := 0
  33. receipt, err, receiptData := VerifyReceipt(szReceipt, false)
  34. goiapErr, ok := err.(ErrorWithCode)
  35. if ok && goiapErr.Code() == SandboxReceiptOnProd {
  36. isSandBox = 1
  37. receipt, err, receiptData = VerifyReceipt(szReceipt, true)
  38. }
  39. if err != nil {
  40. log.Error("%+v", err)
  41. }
  42. log.Debug("Got receipt %+v", receipt)
  43. // 新版appstore带BL_前缀
  44. productId := strings.Replace(receipt.ProductId, "BL_", "", -1)
  45. objSuccess := db.NewAddSuccessLog()
  46. objSuccess.In.UserID = userId
  47. objSuccess.In.TransactionID = receipt.TransactionId
  48. objSuccess.In.ProductID = productId
  49. objSuccess.In.Memo = receiptData
  50. objSuccess.In.IPAddress = ipAddress
  51. objSuccess.In.IsSandBox = isSandBox
  52. objSuccess.DoAction(nil)
  53. //操作成功,给道具
  54. if objSuccess.Out.RetCode == 1 {
  55. //充值
  56. resp := client.Recharge(userId, productId)
  57. log.Debug("%s 充值成功 %+v", "apple.Verify", resp)
  58. }
  59. c.String(http.StatusOK, strconv.Itoa(objSuccess.Out.RetCode))
  60. return
  61. }