青浦网络公司网站,图床网站怎么做,广州创意设计公司,电子商务网站建设规划的论文如果把商户网站使用第三方支付平台(比如支付宝)的原理搞清楚#xff0c;那编程就变得简单多了。 整个过程大致这样#xff1a; 1、商户与支付宝签约。2、在商户网站购买商品#xff0c;填写数量#xff0c;确定购买后跳转到结账页面。结账页面可能包括订单号、定单状态(已支…如果把商户网站使用第三方支付平台(比如支付宝)的原理搞清楚那编程就变得简单多了。 整个过程大致这样 1、商户与支付宝签约。2、在商户网站购买商品填写数量确定购买后跳转到结账页面。结账页面可能包括订单号、定单状态(已支付/未支付)、收货人信息、配送方式、定单金额、配送费用、总金额、支付方式、结账按钮等等。3、当点击结账按钮会重定向到支付宝付款页面。而在后台实际上是把数据提交到支付宝一个接收支付信息的网关比如是http://www.zhifubao.com:6060/AliPay/PayGate.ashx然后再重定向到支付宝付款页面。4、付款成功后重定向到商户用来显示支付成功的一个页面该页面可以显示定单编号、总金额等信息。 其中有几个关键之处 1、明确支付宝支付网关所需要的url格式 比如类似http://www.zhifubao.com:6060/AliPay/PayGate.ashx?partner18return_urlhttp%....%这样的格式那么编程的时候应该严格按照这种格式来拼接字符串。 2、明确在支付宝支付成功后重定向到商户支付成功页的url中支付宝给我们反馈的url参数 支付宝反馈的格式类似http://localhost:1746/Shop/PayCallBack.aspx?out_trade_no222returncodeoktotal_fee400signdddddddmd5值这样我们可以使用Request[key]取出对应的部分比如定单编号定单金额等等。 3、在向支付宝网关提交数据的时候支付宝要求其中一个参数sign必须是MD5值 这个MD5值是把商户编号、支付成功显示页面、商户密匙等信息按照固定的顺序进行MD5加密获得。商户密匙一般都可以在支付宝后台设置。 4、在支付宝支付成功后重定向到商户支付成功页的url中有一个sign参数也包含了MD5值 这个MD5值是把定单编号、返回地址、总金额、商户密匙等信息按照固定的顺序进行MD5加密获得编码的时候我们需要重新根据定单编号、返回地址、总金额、商户密匙等信息按照固定的顺序进行MD5加密获得一个值两个值比较如果相等就说明没有篡改支付成功。 5、明确支付宝支付网关地址 这个地址用来接收来自商户的信息类似这样http://www.zhifubao.com:6060/AliPay/PayGate.ashx?partner18return_urlhttp%....% 支付宝接口提供的信息大致如下 支付网关地址 http://www.zhifubao.com:6060/AliPay/PayGate.ashx 支付网关参数 Partner:商户编号return_url:支付成功地址subject:商品名称body:商品描述out_trade_no:订单号由商户网站生成total_fee:总金额seller_email:卖家邮箱sign:数字签名总金额、商户编号、订单号、商品名称、商户密匙顺序连接获得的MD5值 回调商户地址 out_trade_no:订单号returncode:返回码ok或errortotal_fee:支付金额sign:数字签名订单号、返回码、支付金额、商户密匙顺序连接获得的MD5值 搞清了原理编码变得简单。 当点击支付 string md5Str SomeCommonHelper.GetMD5(总金额,商户编号,订单号,商品名称,商户密匙);
string url http://www.zhifubao.com:6060/AliPay/PayGate.ashx?partner商户编号return_url Server.UrlEncode(http://...商户支付成功显示页面) subject Server.UrlEncode(商品名称) body 商品描述 out_rade_no 商品编号 total_fee 总金额 seller_email 商户邮箱 sign md5Str;
Response.Redirect(url);支付成功显示页面 string out_trade_no Request[out_trade_no];
string returncode Request[returncode];
string total_fee Request[total_fee];
string sign Request[sign];
//自己算MD5值
string myMD5 SomeCommonHelper.GetMD5(out_trade_no returncode total_fee 商户密匙);
if(sign ! myMD5){Response.Write(支付失败);
} else{Response.Write(支付成功);
}就这样。转载于:https://www.cnblogs.com/darrenji/p/4390455.html