分享
  1. 首页
  2. 文章

Golang支付宝支付代码

cowkeys · · 11394 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

说明

之前的项目有涉及到支付接口,包括微信和支付宝支付, 现在记录一下
github地址:Golang-Payment

使用到的库

go get github.com/ascoders/alipay

这是github上一个不错的支付宝接口,一般来说直接import进项目就行了,不过我在项目中需要使用到更多的参数,因此改了小部分源码。

注意,里面用到了beego的库。

代码有两个部分

  1. /payment/vendor/alipay/ alipay
  2. /payment/controller/alipay.go alipay.go

/payment/controller/alipay.go:

package Payment
import (
 "alipay"
 "strconv"
 "strings"
 "github.com/astaxie/beego"
)
type AlipayController struct {
 beego.Controller
}
func newClient() *alipay.Client {
 return &alipay.Client{
 Partner: beego.AppConfig.String("alipartner"), // 合作者ID
 Key: beego.AppConfig.String("alikey"), // 合作者私钥
 ReturnUrl: "http://" + beego.AppConfig.String("domainurl") + "/alipay/return", // 同步返回地址
 NotifyUrl: "http://" + beego.AppConfig.String("domainurl") + "/alipay/notify", // 网站异步返回地址
 Email: beego.AppConfig.String("aliemail"), // 网站卖家邮箱地址
 }
}
func (this *AlipayController) Native() {
 orderNo := this.GetString("orderNo") //获取自己的订单号
 schemestr := this.Ctx.Input.Site() 
 alipayClient := newClient()
 fee, _ := strconv.ParseFloat("100.5")//价格转换
 ots := alipay.Options{
 OrderId: orderNo,
 Fee: float32(fee),
 NickName: "ricky",
 Subject: "某某订单" + orderNo,
 Extra_common_param: schemestr, //加上自己需要用到的参数
 }
 form := alipayClient.Form(ots)
 res := map[string]interface{}{"form": form}
 this.Data["json"] = res
 this.ServeJSON()
}
func (this *AlipayController) Return() {
 alipayClient := newClient()
 result := alipayClient.Return(&this.Controller)
 //beego.Debug("notify", result)
 if result.Status == 1 { //付款成功,处理订单
 //处理订单
 if result.Extra_common_param != "" {
 url := typestr[1] + "/order/detail/" + result.OrderNo
 this.Ctx.Redirect(302, url)
 }
 } else {
 res := map[string]interface{}{"msg": "来源验证失败"}
 this.Data["json"] = res
 this.ServeJSON()
 }
}
func (this *AlipayController) Notify() {
 alipayClient := newClient()
 result := alipayClient.Notify(&this.Controller)
 timetest := this.GetString("gmt_payment")
 if result.Status == 1 { //付款成功,处理订单
 sendData := make(map[string]interface{})
 sendData["id"] = result.OrderNo
 sendData["trade_no"] = result.TradeNo
 sendData["paid_time"] = timetest
 sendData["payment_type"] = "alipay"
 sendData["payment_amount"] = result.TotalFee
 //这里处理自己的业务逻辑
 if result.Extra_common_param != "" {
 //your method 例如修改数据库中订单的状态为付款。。
 }
 }
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:cowkeys

查看原文:Golang支付宝支付代码

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
11394 次点击
1 回复 | 直到 2019年06月25日 21:21:20
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏