• Stars
    star
    458
  • Rank 92,363 (Top 2 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 10 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

golang SDK for alipay

golang版支付宝SDK!

做最好的支付宝sdk,大家的支持就是作者最大的动力!

安装

go get github.com/ascoders/alipay

初始化

alipay := alipay.Client{
	Partner   : "", // 合作者ID
	Key       : "", // 合作者私钥
	ReturnUrl : "", // 同步返回地址
	NotifyUrl : "", // 网站异步返回地址
	Email     : "", // 网站卖家邮箱地址
}

alipay升级到2.0版本,api_v1.0依旧兼容

生成提交表单

form := alipay.Form(alipay.Options{
	OrderId:  "123",	// 唯一订单号
	Fee:      99.8,		// 价格
	NickName: "翱翔大空",	// 用户昵称,支付页面显示用
	Subject:  "充值100",	// 支付描述,支付页面显示用
})

将form输出到页面上,会自动跳转至支付宝收银台。

回调处理

回调分为同步异步,支付成功后跳转至商户页面成为同步回调,跳转地址在ReturnUrl参数中配置。支付宝每隔10 10 30 ... 秒发送一次异步请求称之为异步回调,通知地址在NotifyUrl中配置。

同步回调(依赖beego)

注意这里需要解析get请求参数,为了自动获取,请传入beego的&this.Controller

func (this *ApiController) Return() {
	result := alipay.Return(&this.Controller)
	if result.Status == 1 { //付款成功,处理订单
		//处理订单
	}
}

参数:

  • Partner // 合作者ID
  • Key // 合作者私钥
  • ReturnUrl // 同步返回地址
  • NotifyUrl // 网站异步返回地址
  • Email // 网站卖家邮箱地址

至于为什么没有给充值金额参数,因为金额不能代表问题,例如打折或者做活动,请自行查询订单表,根据业务逻辑进行处理。

同步回调(无依赖)

感谢@atnet提供的代码,让alipay支持原生http请求,脱离推框架的依赖。

func ReturnHandle(w http.ResponseWriter, r *http.Request) {
	result := alipay.NativeReturn(r)
	if result.Status == 1 { //付款成功,处理订单
		//处理订单
	}
}

异步回调(依赖beego)

func (this *ApiController) Notify() {
	result := alipay.Notify(&this.Controller)
	if result.Status == 1 { //付款成功,处理订单
		//处理订单
	}
}

异步回调的返回参数与同步回调相同。

异步回调(无依赖)

func NotifyHandle(w http.ResponseWriter, r *http.Request) {
	result := alipay.NativeNotify(r)
	if result.Status == 1 { //付款成功,处理订单
		//处理订单
	}
}

支付流程介绍

支付宝流程基本就四步:初始化、构造请求用户付款、同步跳转付款、异步post接收付款请求。

用户在您的网站点击支付按钮后,您的网站需要经历下述操作:

1.为该用户生成一个订单存入数据库,保存了该订单的唯一标识符,它可以是数据库的唯一id;该订单触发用户id;该订单充值用户id;充值金额;订单创建时间。上述是最基本要存储的订单数据。

2.调用此SDK让用户跳转到支付宝付款页面。

3.等待用户完成付款,此时如果用户没有关闭付款页面,大约3秒后会跳转到你网站指定的同步回调页面,如果用户关闭了网页,支付宝也会多次异步通知你的异步回调页面,这一切都是为了告诉你用户完成了付款。

4.处理订单,在同步回调页面异步回调页面调用此SDK,获取该订单ID,在数据库中查出并给相应账号充值(之后发邮件通知等等),一定要注意防止订单重复充值,你可以标记订单的active解决此问题。

More Repositories

1

weekly

前端精读周刊。帮你理解最前沿、实用的技术。
JavaScript
27,747
star
2

react-native-image-viewer

🚀 tiny & fast lib for react native image viewer pan and zoom
TypeScript
2,435
star
3

gaea-editor

Design websites in your browser. A smart web editor!
TypeScript
1,341
star
4

react-native-image-zoom

react native image pan and zoom
TypeScript
632
star
5

syntax-parser

Light and fast 🚀parser! With zero dependents. - Sql Parser Demo added!
TypeScript
460
star
6

blog

博客
263
star
7

avatar

avalon开源中文社区
JavaScript
41
star
8

isomorphic-react-redux-app

react react-hot-loader redux redux-devtools react-router-redux immutable isomorphic
JavaScript
16
star
9

inject-instance

powerful inject instance
TypeScript
12
star
10

dependency-inject

Powerful dependency injection tool
TypeScript
10
star
11

as

基于 martini 的 go语言框架
Go
10
star
12

gaea-render

Render engine for gaea-editor
TypeScript
8
star
13

egg-typeorm

egg plugin for typeorm
JavaScript
8
star
14

woku

我酷官网~
JavaScript
5
star
15

run-react

Integrate webpack
TypeScript
5
star
16

gaea-basic-components

gaea-basic-components
TypeScript
4
star
17

client-ssr

JavaScript
3
star
18

kingdoms

三国军争服务端源代码
Go
3
star
19

gaea-web-components

Gaea 网页端基础组件
TypeScript
3
star
20

vscode-medusa

medusa plugin for vscode
TypeScript
2
star
21

woku-react

我酷科技
JavaScript
2
star
22

rc-stream

react reactive stream
TypeScript
2
star
23

woku_old

我酷旧版
JavaScript
2
star
24

machine-learning

Demos of machine learning
TypeScript
2
star
25

typed-store

Typed React bindings for Redux
TypeScript
2
star
26

shallow-eq

shallow equal
TypeScript
1
star
27

bi-designer

TypeScript
1
star
28

ascoders-tslint-config

ascoders-tslint-config
1
star
29

monaco-editor-commonjs

commonjs monaco-editor
JavaScript
1
star