最近研究个人支付宝,微信收款原理,
原来很简单,
就是搞个APP,监听手机支付宝,微信收款推送消息,然后提取其中的金额,来回调到服务端更新该订单状态,再回调用户端接口。
假如你想个人收款码收款。
1.你先得准备多个微信,或支付宝收款码。
2.安装监听的APP
3.然后服务端程序回调接口。
流程完成。
问题来了,如何知道哪个订单是哪个人支付的呢。
这里就要做处理了,以5分钟为一个单位,5分钟内支付的金额必须是唯一的。当然,这个单位也可以更短,可以2,3,4分钟。都可以,总之就是在这期间内,金额必须唯一。
比如,有人要支付1元,系统要检查这5分钟内,是否有人支付1元的订单,如果有,这个人,你就给他加0.01,让支付1.01元即可。支付成功后,就根据这个1.01来找到那个订单。
大致原理就是这样。
var l = DateTime.Now;
var pt = l.AddMinutes(-5);
var ef = l.AddMinutes(5);
//5分钟内支付金额不能重复
var realcoin = mod.coin;
while (this._pay.Exists(p => p.logid == mod.mid && p.statu == (int)EnumOrder.未支付 && p.efftime >= pt && p.meth == mod.meth && p.realcoin == realcoin))
{
realcoin += 0.01m;
}
var data = new Personal_Payinfo
{
keyid = StringHelper.GetKeyID(),
logid = mid.id,
logname = mid.logname,
coin = mod.coin,
meth = mod.meth,
payno = mod.payId,
realcoin = realcoin,
extion = mod.extion,
createtime = l,
efftime = ef,
returnUrl = mod.returnUrl,
notifyUrl = mod.notifyUrl
};