#beego版支付宝SDK!
###支付流程介绍
用户在您的网站点击支付按钮后,您的网站需要经历下述操作:
1.为该用户生成一个订单存入数据库,保存了该订单的唯一标识符,它可以是数据库的唯一id;该订单触发用户id;该订单充值用户id;充值金额;订单创建时间。上述是最基本要存储的订单数据。
2.调用此SDK让用户跳转到支付宝付款页面。
3.等待用户完成付款,此时如果用户没有关闭付款页面,大约3秒后会跳转到你网站指定的同步回调页面,如果用户关闭了网页,支付宝也会多次异步通知你的异步回调页面,这一切都是为了告诉你用户完成了付款。
4.处理订单,在同步回调页面和异步回调页面调用此SDK,获取该订单ID,在数据库中查出并给相应账号充值(之后发邮件通知等等),一定要注意防止订单重复充值,你可以标记订单的active解决此问题。
###SDK调用示例
全局初始化,您需要填写一些支付宝充值必要信息:
func init() {
//初始化支付宝插件
alipay.AlipayPartner = **********
alipay.AlipayKey = **********
alipay.WebReturnUrl = "http://www.ascode.net/someurl" //替换成你的 异步回调页面
alipay.WebNotifyUrl = "http://www.ascode.net/someurl" //替换成你的 同步回调页面
alipay.WebSellerEmail = "huangziyi@ascode.net" //替换成你的 支付宝账号邮箱
}
用户点击支付按钮后如何调用SDK
//创建订单order,生成了各种信息包括订单的唯一id
//获取支付宝即时到帐的自动提交表单
//四个参数分别是 订单唯一id(string) 充值金额(int) 实际充值的游戏币(int) 充值时给用户的描述(string)
form := alipay.CreateAlipaySign(order.Id.Hex(), int(number), order.Gain, order.AccountPay, "我酷游戏-充值代金券"+strconv.Itoa(order.Gain))
//为了更好的用户体验,可以以json方式调用,返回了json类型字符串
this.Data["json"] = form
//前台接收到字符串后直接输出即可跳转
document.write(data);
如何接收支付宝同步跳转的页面
注意这里需要解析get请求参数,为了自动获取,请传入beego的&this.Controller
/* 接收支付宝同步跳转的页面 */
func (this *ApiController) AlipayReturn() {
//错误代码(1为成功) 订单id(使用它查询订单) 买家支付宝账号(这个不错) 支付宝id(支付宝账单id)
status, orderId, buyerEmail, tradeNo := alipay.AlipayReturn(&this.Controller)
if status == 1 { //付款成功,处理订单
//处理订单
}
}
如何接收支付宝异步跳转的页面
注意这里需要解析get请求参数,为了自动获取,请传入beego的&this.Controller
/* 被动接收支付宝异步通知的页面 */
func (this *ApiController) AlipayNotify() {
status, orderId, buyerEmail, TradeNo := alipay.AlipayNotify(&this.Controller)
if status == 1 { //付款成功,处理订单
//处理订单
}
}
###结语
支付宝流程基本就四步:初始化、构造请求用户付款、同步跳转付款、异步post接收付款请求
目前此SDK在我酷游戏公司稳定使用,留了一点小小的私心,发一下公司网址 http://www.ascode.net
还有一款智益游戏也不错哦,看准颜色 http://as.baidu.com/a/item?docid=6601089