Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
package appChargeUtil
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"goutil/webUtil"
|
||||
)
|
||||
|
||||
const (
|
||||
con_SandBoxUrl = "https://sandbox.itunes.apple.com/verifyReceipt"
|
||||
con_ProductionUrl = "https://buy.itunes.apple.com/verifyReceipt"
|
||||
)
|
||||
|
||||
var (
|
||||
NetworkError = errors.New("NetWorkError")
|
||||
)
|
||||
|
||||
// 验证充值是否有效
|
||||
// bundleIdentifierList:配置的BundleIdentifier列表
|
||||
// productId:输入的ProductId
|
||||
// receiptData:订单数据
|
||||
// isSandBox:是否为沙盒模式
|
||||
// 返回值:
|
||||
// 充值收据对象
|
||||
// 是否有效
|
||||
// 错误对象(如果err==NetWorkError,则表明为网络错误)
|
||||
func ValidateCharge(bundleIdentifierList []string, productId, receiptData string, isSandBox bool) (receiptObj *Receipt, isValid bool, err error) {
|
||||
// 判断参数是否为空
|
||||
if len(bundleIdentifierList) == 0 || productId == "" || receiptData == "" {
|
||||
return
|
||||
}
|
||||
|
||||
// 获取Receipt对象
|
||||
receiptObj, err = getReceipt(receiptData, isSandBox)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if receiptObj.IsBundleIdentifierValid(bundleIdentifierList) == false {
|
||||
return
|
||||
}
|
||||
|
||||
if receiptObj.IsProductIdValid(productId) == false {
|
||||
return
|
||||
}
|
||||
|
||||
isValid = true
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func getReceipt(receiptData string, isSandBox bool) (receiptObj *Receipt, err error) {
|
||||
weburl := con_ProductionUrl
|
||||
if isSandBox {
|
||||
weburl = con_SandBoxUrl
|
||||
}
|
||||
|
||||
data := []byte(convertReceiptToPost(receiptData))
|
||||
statusCode, returnBytes, err := webUtil.PostByteData2(weburl, data, webUtil.GetFormHeader(), nil)
|
||||
if err != nil {
|
||||
err = NetworkError
|
||||
return
|
||||
}
|
||||
if statusCode != 200 {
|
||||
err = fmt.Errorf("StatusCode is wrong:%d", statusCode)
|
||||
return
|
||||
}
|
||||
|
||||
if len(returnBytes) == 0 {
|
||||
err = fmt.Errorf("返回的数据为空")
|
||||
return
|
||||
}
|
||||
|
||||
receiptObj, err = newReceipt(string(returnBytes))
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func convertReceiptToPost(receiptData string) string {
|
||||
return fmt.Sprintf("{\"receipt-data\":\"%s\"}", receiptData)
|
||||
}
|
||||
Reference in New Issue
Block a user