十八哥教会我们怎么下订单----.NET过程

来源:互联网 发布:华为云计算ie待遇 编辑:程序博客网 时间:2024/04/29 08:14
添加购物车一般步骤:

1查看是否有改商品
2判断当前用户是否已经将该书添加到购物车中,如果添加了只是
改变该商品的数量,否则就把该商品的信息添加到购物车表中
3怎么去查询用户是否购买了该商品呢
通过用户id和商品id
4.绑定购物车中的商品项  要获取当前用户的购物车的商品项
5当用户点击添加商品数量的时候更新文本框中的数字 和总价格
6计算商品的总价格 通过jquery.ajax发送异步请求
//总价格
var totMoney=0;
//循环遍历购物车订单数据
$("#id").each(function(){
   //获取单价的值
   var price=$(this).find(".price").text();
   //获取数量
   var count=$(this).find("input").val();
   totMoney=parseInt(count)*parsefloat(price)+ toMoney;
});
下订单创建存储过程
创建存储过程
create proc usp_OrderConfirm
@orderid nvarchar(30), 订单号
@userId varchar(20),用户编号
@address nvarchar,用户地址信息
@totalPrice money output--总金额 是计算出来的

as

declare @error int--记录错误信息
set @error=0
--计算商品的总价 当前登录用户
select @totalPrice=sum([count]*price) from cart inner join books on cart.bookid=books.id
where cart.userid=@userId
--往订单详细表中插入数据
insert into Orders(orderid,orderDate,userid,totalprice,postaddress,state)
values(@orderid,getdate(),@userid,@totalmoney,@address,0)
set @error=@error+@@error--记录错误信息
--向订单明细表中插入
insert into orderbook(orderid,bookid,quentity,price)
select @orderid,bookid,[count],price from cart inner join books on cart.bookid=books.id
where cart.userid=@userid
set @error=@error+@@error--记录错误信息
--删除购物车的商品项
delete from cart where userid=@userid
set @error=@error+@@error--记录错误信息
if(@error>0)--出错了 回滚事务
begin
  roolback tranaction--回滚事务
end
else
begin
  commit transaction--提交事务
end

进入确认购买的时候 判断购物车是否有商品
如果没有商品项禁止访问订单页面 跳转到消息界面 然后跳转到商品界面

开始支付:做这2件事
1调用存储过程
2往支付宝发送数据
收货人的地址格式问题:
string address=string.Format("收货人:{0},地址:{1},电话:{2},邮编:{3}",name,address,tel,postcode);
商城网站:
1.完成下订单
2.按照支付宝的文档要求组织数据,并对一些敏感的数据进行加密(密钥)
3将加密组织好的数据发送给支付宝通过get发送 不会不安全 因为加密了

支付宝:
4支付宝接收商城网站发送过来的数据并且校验数据是否正确
5如果数据没有串改出现支付宝的登录界面开始支付
6不管是否支付成功度会将数据返回给商城网站。

商城:
7接收从支付宝返回的数据 并且校验数据是否被串改。
8如果用户支付成功了修改订单的状态

订单号的作用:在发送给支付宝的数据中包含订单号,订单号对支付宝没有作用,所以当订单完成以后,支付宝将订单号返回给商城
商城根据返回的订单确定是哪个订单支付了

//这里要配置一下配置文件因为要加密数据给支付宝
由于这些数据如果要改动直接在配置文件中修改就可以了
<appSettings>
商户ID <add key='partner' value='1'/>
返回URL<add key='return_url' value='http:localhost/ashx/GetPay.ashx'/>
卖家邮箱<add key='sller_email' value='xx.qq.com'/>
密钥<add key='key' value='miyue@$z'/>
发送给支付宝哪个页面<add key="payGateUrl" value='zhifubao.taobao.com'/>
</appSettings>
然后写一个类存放其他数据
private string partner;//商户编号    1   --
public string Partner
{
    get { return partner; }
    set { partner = value; }
}
private string return_url;//回调商户地址(通过商户网站的哪个页面来通知支付成功!)1  --  支付宝将数据返回给这个属性所指定的我们商城网站中的某个页面。
public string Return_url
{
    get { return return_url; }
    set { return_url = value; }
}
private string subject;//商品名称
public string Subject
{
    get { return subject; }
    set { subject = value; }
}
private string body;//商品描述
public string Body
{
    get { return body; }
    set { body = value; }
}
private string out_trade_no;//订单号!!!(由商户网站生成,支付宝不确保正确性,只负责转发。)
public string Out_trade_no
{
    get { return out_trade_no; }
    set { out_trade_no = value; }
}
private decimal total_fee;//总金额
public decimal Total_fee
{
    get { return total_fee; }
    set { total_fee = value; }
}
private string seller_email;//卖家邮箱1--
public string Seller_email
{
    get { return seller_email; }
    set { seller_email = value; }
}
private string sign;//数字签名。为按顺序连接     总金额、 商户编号、订单号、商品名称、商户密钥的MD5值。(小写值)
public string Sign
{
    get { return sign; }
    set { sign = value; }
}
private string key;//密钥    --1
public string Key
{
    get { return key; }
    set { key = value; }
}
private string payGateUrl;//支付地址 1
public string PayGateUrl
{
    get { return payGateUrl; }
    set { payGateUrl = value; }
}
然后给参数赋值 通过构造函数
可以从配置文件中取出部分数据

然后把这些数据构成一个URL发送给支付宝(要MD5加密)

然后再你的页面接收支付宝回传回来的数据

然后修改订单的状态
原创粉丝点击