package llpay import ( // "crypto" // "crypto/md5" // "crypto/rand" // "crypto/rsa" // "crypto/sha1" // "crypto/sha256" // "crypto/x509" // "encoding/base64" "encoding/json" "strconv" // "encoding/pem" "fmt" // "sort" // "strings" // "time" "github.com/astaxie/beego" // "github.com/astaxie/beego/httplib" "fohow.com/libs/tool" ) const ( RETURN_CODE_SUCCESS = "0000" RETURN_CODE_NO_RECORD = "8901" ) //银行卡信息 type BankCardBin struct { RetCode string `json:"ret_code"` RetMsg string `json:"ret_msg"` SignType string `json:"-"` Sign string `json:"-"` BankCode string `json:"bank_code"` BankName string `json:"bank_name"` CardType string `json:"card_type"` } //用户已签约的银行卡 type UserAgreeBankCards struct { AgreementList []struct { NoAgree string `json:"no_agree"` // 银通协议编号 no_agree 否 String 银行卡签约的唯一编号 CardNo string `json:"card_no"` // 银行卡号后4 位 card_no 否 String 银行卡号后4 位 BankCode string `json:"bank_code"` // 所属银行编号 bank_code 否 String BankName string `json:"bank_name"` // 所属银行名称 bank_name 否 String CardType int `json:"card_type"` // 银行卡类型 card_type 否 String 2-储蓄卡 3-信用卡 BindMobile string `json:"bind_mobile"` // 绑定手机号码 bind_mobile } `json:"agreement_list"` //结果集,返回按签约时间倒叙的结果集 RetCode string `json:"ret_code"` // 交易结果代码 ret_code 是 String(4) 0000 RetMsg string `json:"ret_msg"` // 交易结果描述 ret_msg 是 String(100) 交易成功 SignType string `json:"sign_type"` // 签名方式 sign_type 是 String RSA 或者 MD5 Sign string `json:"sign"` //签名 sign 是 String RSA 加密签名,见安全签名机制 UserId int64 `json:"user_id"` // 商户用户唯一编号,该用户在商户系统中的唯一编号,要求是该编号在商户系统中唯一标识该用户 Count int64 `json:"count"` //总记录条数 count 是 Int 本次返回的总记录条数 } // 获取银行卡信息 // "{\"bank_code\":\"01040000\",\"bank_name\":\"中国银行\",\"card_type\":\"2\",\"ret_code\":\"0000\",\"ret_msg\":\"交易成功\",\"sign\":\"SC6nh3/JN/MdV6icMd5mKIMGb3NoKx4kyevMLYNwyRKcxAmcjqwNf6dzj4YTixfRlqqnnMJJ3ulw5KueC9rw6FLRROcRTgvlxDdsxNYz1VeNKOpo401Nx4PZCynSZSjjqnblRI7FE5hEm5zARRiROcD4lIEBgIpjc4iPJuw6VD8=\",\"sign_type\":\"RSA\"}" func GetBankCardBin(cardNo string) *BankCardBin { params := map[string]string{ "oid_partner": beego.AppConfig.String("LianLianPayOidPartner"), "sign_type": beego.AppConfig.String("LianLianPaySignType"), //MD5 || RSA "card_no": cardNo, } params["sign"] = Signature(params) url := "https://queryapi.lianlianpay.com/bankcardbin.htm" resp := tool.PostJSON(url, params) bankCardBin := new(BankCardBin) json.Unmarshal([]byte(resp), &bankCardBin) return bankCardBin } //获取绑定的银行卡列表 func GetBankcardBindList(uId int64, offset, cardNo, platform, noAgree string) UserAgreeBankCards { params := map[string]string{ "oid_partner": beego.AppConfig.String("LianLianPayOidPartner"), "user_id": strconv.FormatInt(uId, 10), "offset": offset, "pay_type": "D", "sign_type": beego.AppConfig.String("LianLianPaySignType"), //MD5 || RSA "card_no": cardNo, } params["sign"] = Signature(params) url := "https://queryapi.lianlianpay.com/bankcardbindlist.htm" resp := tool.PostJSON(url, params) // beego.BeeLogger.Error("GetBankcardBindList resp=[%s]", resp) var userAgreeBankCards UserAgreeBankCards err := json.Unmarshal([]byte(resp), &userAgreeBankCards) if err != nil { fmt.Println("error:", err) } return userAgreeBankCards } //解绑银行卡 type UnbindBankCard struct { RetCode string `json:"ret_code"` // 交易结果代码 ret_code 是 String(4) 0000 RetMsg string `json:"ret_msg"` // 交易结果描述 ret_msg 是 String(100) 交易成功 SignType string `json:"sign_type"` // 签名方式 sign_type 是 String RSA 或者 MD5 Sign string `json:"sign"` //签名 sign 是 String RSA 加密签名,见安全签名机制 } func BankCardUnbind(uId int64, noAgree string) *UnbindBankCard { params := map[string]string{ "oid_partner": beego.AppConfig.String("LianLianPayOidPartner"), "sign_type": beego.AppConfig.String("LianLianPaySignType"), //MD5 || RSA // "card_no": cardNo, "pay_type": "D", "user_id": strconv.FormatInt(uId, 10), "no_agree": noAgree, } params["sign"] = Signature(params) url := "https://yintong.com.cn/traderapi/bankcardunbind.htm" resp := tool.PostJSON(url, params) unbindBankCard := new(UnbindBankCard) json.Unmarshal([]byte(resp), &unbindBankCard) return unbindBankCard }