第三方支付接口技术对接实现与样例

上传人:pu****.1 文档编号:498047599 上传时间:2023-06-17 格式:DOCX 页数:20 大小:53.90KB
返回 下载 相关 举报
第三方支付接口技术对接实现与样例_第1页
第1页 / 共20页
第三方支付接口技术对接实现与样例_第2页
第2页 / 共20页
第三方支付接口技术对接实现与样例_第3页
第3页 / 共20页
第三方支付接口技术对接实现与样例_第4页
第4页 / 共20页
第三方支付接口技术对接实现与样例_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《第三方支付接口技术对接实现与样例》由会员分享,可在线阅读,更多相关《第三方支付接口技术对接实现与样例(20页珍藏版)》请在金锄头文库上搜索。

1、B2B对接支付宝接口转接支付宝解决方案大型网上购物系统除了能让会员选择货到付款结账方式外,还应该提供一些更方 便快捷的网上支付方式。如果网上商店没有足够的实力提供会员直接在中建立 现金账户的功能,就可以将订单信息转接到支付宝,让会员从支付宝付款。当然 就算会员可以在上建立自己的现金账户,提供支付宝支付功能也不失为另一种 方便快捷的支付方式,这可以给客户提供更多可选的支付方式。首先,网上购物系统必须与支付宝公司签订合作协议,以确保从本购物上传到支付宝上的订单信息能被正确接收。当会员于购物上买下一系列商品并选择支付宝付款方式后,购物系统即将会员购 物的订单信息转发到支付宝,页面也会转到支付宝的付款

2、页面。此时,支付宝页 面会发送一个验证信息到本以确认支付宝正确收到订单信息。会员于支付宝付款完成后,页面会重新跳回本购物,同时支付宝会将已付款的订 单信息发回本以便对本购物的数据库进行必要的修改操作。另外本还需要向支 付宝发送一个返回信息,告知支付宝本系统已正确收到付款完毕的订单信息并且 已经完成对数据的处理操作。合作商户系统支付宝系统向支付宝传送订单信息时主要参数的含义:gateway :支付接口service :识别是何接口实现何功能的表示seller_emai l:商家签约时的支付宝账号,即收款的支付宝账号key:安全校验码,与partner是一组partner:商户ID,合作伙伴IDs

3、ign_type:加密类型_input_charset :编码类型show_url :展示地址,即在支付宝页面时商品名称旁边的“详情”的地址out_trade_no:会员订单编号,订单编号必须在本系统中保持唯一subject :商品名称,也可称为订单名称,该接口并不是单一的只能买一样东西, 可把一次支付当作一次下订单body :商品描述,即备注total_fee:商品价格,也可称为订单的总金额源码分析(C#):首先必须建立一个通知页面(Notify.aspx)和一个返回页面(Return.aspx)以接 受并验证从支付宝返回的信息并对数据库中相应的订单信息做修改处理操作。Notify.aspx

4、.cs代码using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Text;using System.Collections.

5、Specialized;using System.IO;using Gateway;/ /创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。/该页面称作“通知页”,是异步被支付宝服务器所调用。/当支付宝的订单状态改变时,支付宝服务器则会自动调用此页面,因此请做 好自身订单信息与支付宝上的订单的同步工作/ public partial class Alipay_Notify : System.Web.UI.Page(protected void Page_Load(object sender, EventArgs e)(string alipayNotifyURL =https:/.

6、alipay./cooperate/gateway.do?service=notify_verify;/string alipayNotifyURL =notify.alipay./trade/notify query.do?”;/此路径是在上面地址无法起作 用时替换使用。string partner = ;/partner 合作伙伴 id (必须填写)string key = ; /partner的对应交易安全校验码(必须填写)string _input_charset = utf-8;/编码类型,完全根据客户自身的 项目的编码格式而定,千万不要填错。否则极其容易造成MD5加密错误。alip

7、ayNotifyURL = alipayNotifyURL + &partner= + partner + ¬ify_id= + Request.Formnotify_id;获取支付宝ATN返回结果,true是正确的订单信息,false是无效的string responseTxt = AliPay.Get_Http(alipayNotifyURL, 120000);/*加密签名程序开始* int i;NameValueCollection coll;/Load Form variables into NameValueCollection variable. coll = Request

8、.Form;/ Get names of all forms into a string array. String requestarr = coll.AllKeys;进行排序;string Sortedstr = AliPay.BubbleSort(requestarr);/构造待md5摘要字符串;StringBuilder prestr = new StringBuilder();for (i = 0; i Sortedstr.Length; i+)(if (Request.FormSortedstri != & Sortedstri != sign & Sortedstri != si

9、gn_type)(if (i = Sortedstr.Length - 1)(prestr.Append(Sortedstri + = +Request.FormSortedstri);else(prestr.Append(Sortedstri + = +Request.FormSortedstri + &);prestr.Append(key); string mysign = AliPay.GetMD5(prestr.ToString(), _input_charset);/*加密签名程序结束*string sign = Request.Formsign;if (mysign = sign

10、 & responseTxt =true) /验证支付发过来的消息, 签名是否正确,只要成功进如这个判断里,则表示该页面已被支付宝服务器成功 调用但判断出现自身编写的程序相关错误导致通知给支付宝并不是发送 success的消息或没有更新客户自身的数据库的情况,请自身程序编写好应对措 施,否则查明原因时困难之极(if (Request.Formtrade_status = WAIT_BUYER_PAY)/判断支付状态等待买家付款(文档中有枚举表可以参考)(更新自己数据库的订单语句,请自己填写一下string strOrderNO = Request.Formout_trade_no;/订 单号s

11、tring strPrice = Request.Formtotal_fee;/金额如果你申请了商家购物卷功能,在返回信息里面请不要做金额的判断,否则会校 验通过不了。else if (Request.Formtrade_status = TRADE_FINISHED |Request.Formtrade_status = TRADE_SUCCESS) /判断支付状态_交易成功结束(文档中有枚举表可以参考)(/更新自己数据库的订单语句,请自己填写一下string strOrderNO = Request.Formout_trade_no;/订 单号string strPrice = Reque

12、st.Formtotal_fee;/金额 else/更新自己数据库的订单语句,请自己填写一下Response.Write(success);返回给支付宝消息,成功,请不要改写这个success/success与fail及其他字符的区别在于,支付宝的服务器若遇 到success时,则不再发送请求通知(即不再调用该页面,让该页面再次运行起 来),/若不是success,则支付宝默认没有收到成功的信息,则会反复 不停地调用该页面直到失效,有效调用时间是24小时以。/最好写TXT文件,以记录下是否异步返回记录。/写文本,纪录支付宝返回消息,比对md5计算结果(如不支持 写txt文件,可改成写数据库)/

13、string TOEXCELLR = MD5 结果:mysign=+ mysign + ,sign= + sign + ,responseTxt= + responseTxt;/StreamWriter fs = newStreamWriter(Server.MapPath(Notify_DATA/ +DateTime.Now.ToString().Replace(:, ) + .txt, false, System.Text.Encoding.Default);/fs.Write(TOEXCELLR);/fs.Close();else(Response.Write(fail);/最好写TXT

14、文件,以记录下是否异步返回记录。/写文本,纪录支付宝返回消息,比对md5计算结果(如不支持写txt文件,可 改成写数据库)string TOEXCELLR = MD5 结果:mysign= + mysign +,sign= + sign + ,responseTxt= + responseTxt;StreamWriter fs = newStreamWriter(Server.MapPath(Notify_DATA/ +DateTime.Now.ToString().Replace(:,)+ .txt, falseSystem.Text.Encoding.Default);fs.Write(TOEXCELLR);fs.Close();Return.aspx.cs代码using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using Sy

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号