项目作者: tiantour

项目描述 :
trade for alipay,mchpay,umspay,wxpay with go
高级语言: Go
项目地址: git://github.com/tiantour/trade.git
创建时间: 2016-09-08T07:40:07Z
项目社区:https://github.com/tiantour/trade

开源协议:MIT License

下载


trade

trade for alipay,wxpay with go

Alipay

sign

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/tiantour/tempo"
  6. "github.com/tiantour/trade/alipay"
  7. )
  8. func main() {
  9. sign, err := sign(alipay.Request{
  10. Body: "测试商品详情",
  11. Subject: "测试商品名称",
  12. OutTradeNo: "1234567812345678",
  13. TotalAmount: 0.02,
  14. ProductCode: "QUICK_WAP_PAY",
  15. })
  16. fmt.Println(sign, err)
  17. }
  18. func sign(args alipay.Request) (string, error) {
  19. body, err := json.Marshal(args)
  20. if err != nil {
  21. return "", err
  22. }
  23. // 签名
  24. sign, err := alipay.NewTrade().Sign(alipay.Sign{
  25. AppID: "your appid",
  26. Method: "your method",
  27. ReturnURL: "your return url",
  28. Charset: "utf-8",
  29. SignType: "RSA2",
  30. TimeStamp: tempo.NewNow().String(),
  31. Version: "1.0",
  32. NotifyURL: "your notify url",
  33. BizContent: string(body),
  34. }, "your private key")
  35. if err != nil {
  36. return "", err
  37. }
  38. return fmt.Sprintf("%s?%s",
  39. "your gateway",
  40. sign,
  41. ), nil
  42. }

notify

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/tiantour/trade/alipay"
  5. )
  6. func main() {
  7. args := alipay.Notice{}
  8. err := alipay.NewTrade().Verify(args, "your public key")
  9. fmt.Println(err)
  10. }

Wxpay

sign

  1. package main
  2. import (
  3. "fmt"
  4. "strconv"
  5. "github.com/tiantour/imago"
  6. "github.com/tiantour/tempo"
  7. "github.com/tiantour/trade/wxpay"
  8. )
  9. func main() {
  10. args := wxpay.Request{
  11. Body: "测试商品详情",
  12. Detail: "商品名称",
  13. ProductID: "商品编号",
  14. OutTradeNo: "1234567812345678",
  15. TotalFee: 1,
  16. }
  17. sign, err := sign(args)
  18. fmt.Println(sign, err)
  19. }
  20. func sign(args wxpay.Request) (wxpay.Defray, error) {
  21. sign := wxpay.Sign{
  22. AppID: "your appid",
  23. MchID: "your machid",
  24. NonceStr: imago.NewRandom().Text(16),
  25. TradeType: "JSAPI",
  26. SpbillCreateIP: "user ip address",
  27. NotifyURL: "your notify url",
  28. OpenID: "user openid",
  29. Request: args,
  30. }
  31. str, err := wxpay.NewTrade().Sign(sign, "your api key")
  32. if err != nil {
  33. return wxpay.Defray{}, err
  34. }
  35. sign.Sign = str
  36. prepay, err := wxpay.NewTrade().Prepay(sign)
  37. if err != nil {
  38. return wxpay.Defray{}, err
  39. }
  40. defray := wxpay.Defray{
  41. AppID: "your app id",
  42. Package: "prepay_id=" + prepay,
  43. NonceStr: imago.NewRandom().Text(16),
  44. TimeStamp: strconv.FormatInt(tempo.NewNow().Unix(), 10),
  45. SignType: "MD5",
  46. }
  47. str, err = wxpay.NewTrade().Sign(defray, "your api key")
  48. if err != nil {
  49. return wxpay.Defray{}, err
  50. }
  51. defray.PaySign = str
  52. return defray, nil
  53. }

notify

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/tiantour/trade/wxpay"
  5. )
  6. func main() {
  7. args := wxpay.Notice{}
  8. err := wxpay.NewTrade().Verify(args, "your api key")
  9. fmt.Println(err)
  10. }