




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
支付宝,隐藏异步通知 关于支付宝的接口集成气死是很简单,目前大概有3种类型,即时到帐、双功能、担保交易,只需要集成一次担保交易,其他的比如即时到帐集成很容易,担保交易的状态有几种,比如:是否支付成功,卖家是否发货,买家确认收获等。而即时到帐只有一种,就是是否已付款!最多还有个退款的功能。一般都没用到。 通过之前做项目:配资平台,有个预付费的功能,用到了支付宝的双功能收款,其实就是提供两种付款方式,即时到帐和担保交易。一般买家谨慎会选择担保。 下面说下具体的集成过程,第一:下载对应的集成接口包,比如即时到帐就下载即时到帐,担保下载担保,非常不建议将即时到帐修改成担保或者反之。案例中我下载的双功能接口文件,utf8-php接口。 下载来的文件都大同小异,即时到帐和担保的文件也相差不大,反正可以肯定的说,只要配置一次担保支付宝接口,就能配置即时到帐。 我们需要修改的文件有如下:alipay.config.php配置文件,只是用于修改配置接口开发者id和key alipayapi.php主调文件,将需要发送的post数据交给该文件,然后负责跳转到支付页面 index.phpdemo演示页面,可以不做修改,但是其中传递的参数名陈需要看懂notify_url.php返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过post方式接受。 return_url.php返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过GET方式。 具体过程: 第一步,修改配置信息: 1$alipay_configpartner=xxx8511073xxxxxxxx; 2 3 4/安全检验码,以数字和字母组成的32位字符$alipay_configkey=xxxxxxxxnow07oajbflskxxxxxxxxxx; 第二:拼post数据,一般只需要修改请求参数 01/*请求参数*/ 02/支付类型 03$payment_type=1; 04/必填,不能修改 05/服务器异步通知页面路径 06$notify_url=你的域名/alipay/notify_url.php;07/需格式的完整路径,不能加?id=123这类自定义参数 08 09/页面跳转同步通知页面路径 10$return_url=你的域名/alipay/return_url.php;11/需格式的完整路径,不能加?id=123这类自定义参数,不能写成 localhost/ 12 13/卖家支付宝帐户 14$seller_email=$_POSTWIDseller_email;/demoindex.php传过 来的 15/必填 16 17/商户订单号 18$out_trade_no=$_POSTWIDout_trade_no;/传过来的19/商户网站订单系统中唯一订单号,必填 20 21/订单名称 22$subject=$_POSTWIDsubject;/同上 23/必填 24 25/付款金额 26$price=$_POSTWIDprice;/传过来的,是你的表单中填写的值27/必填 28 29/商品数量 30$quantity=1; 31/必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品32/物流费用 33$logistics_fee=0.00; 34/必填,即运费 35/物流类型 36$logistics_type=EXPRESS; 37/必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) 38/物流支付方式 39$logistics_payment=SELLER_PAY; 40/必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)41/订单描述 42 43$body=$_POSTWIDbody; 44/商品展示地址 45$show_url=$_POSTWIDshow_url; 46/需以开头的完整路径,如: 47 48/收货人姓名 49$receive_name=萤火; 50/如:张三 51 52/收货人地址 53$receive_address=$_POSTWIDreceive_address;54/如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号 55 56/收货人邮编 57$receive_zip=$_POSTWIDreceive_zip; 58/如:123456 59 60/收货人电话号码 61$receive_phone=$_POSTWIDreceive_phone; 62/如63 64/收货人手机号码 65$receive_mobile=$_POSTWIDreceive_mobile; 66/如三:数据构造完成后就可以在页面上付款,测试能不能正确的打开支付页面。如果能打开,这时候就可以进行付款了,但是买家付款的状态我们还无法获知,比如有没有成功付款,卖家是否已经发货等。那么接下来开始做返回状态的业务逻辑处理。 打开return_url.php文件,根据提示修改,做对因的处理。 01/请根据您的业务逻辑来编写程序(以下代码仅作参考) 02/获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表03 04/商户订单号$out_trade_no=$_GETout_trade_no; 05 06/支付宝交易号$trade_no=$_GETtrade_no; 07 08/交易状态 09$trade_status=$_GETtrade_status; 10 11 12if($_GETtrade_status=WAIT_SELLER_SEND_GOODS)/状态为 成功 13/处理自己网站的业务逻辑 14if(!$orderstatus)/判断本地数据库中的订单是否已经处理 1db_update(stx_recharge,array(status=1),array(oi5d=$_GET 16 17out_trade_no);/如果没处理就将状态改成已经处理。 18/金钱的增加 19$zd= db_line(stx_terminal,array(id=$orderztid); 2db_update(stx_terminal,array(money=$zdmoney+0$order 21 22money),array(id=$orderztid);/增加余额到该用户的账户上。23 24 25elseif($_GETtrade_status=TRADE_FINISHED)26/判断该笔订单是否在商户网站中已经做过处理 27/如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统28 29中查到该笔订单的详细,并执行商户的业务程序 30/如果有做过处理,不执行商户的业务程序 31 32else 33echotrade_status=.$_GETtrade_status; 34 35 36echo验证成功; 37echotrade_no=.$trade_no;notify_url.php也是一样,根据状态来编写对应的代码!notify_url.php文件中的状态要多一些。 01/请根据您的业务逻辑来编写程序(以下代码仅作参考) 02 03/获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 04 05/商户订单号 06 07$out_trade_no=$_POSTout_trade_no; 实验要求:阅读并分析给出的支付宝支付接口程序,画出处理流程图,并回答实验思考题。实验目的:了解和熟悉支付宝支付接口程序开发,分析其处理流程。 实验内容与步骤: 1、仔细阅读后面给出的支付宝支付接口程序; 2、根据支付宝支付接口程序,画出相应的处理流程图; 3、回答实验思考题。 【实验思考题】 假设你是一家电子商务网站的经营者,你准备如何将支付宝支付接口程序嵌入你的网站,以实现向客户提供支付功能?请给出你的步骤。 实验内容与结果: 假设你是一家电子商务网站的经营者,你准备如何将支付宝支付接口程序嵌入你的网站,以实现向客户提供支付功能?请给出你的步骤。 答:1.在支付宝论坛接口专区下载支付宝接口资料,根据自身网站的情况来修改模板 2.index,卖家支付宝帐户,商户订单号,订单名称,付款金额,订单描述,默认网银,这些参数都为必填,商品展示地址需以开头的完整路径,例如:/myorder.htm 3.alipayapi支付类型 payment_type=1 必填,不能修改 服务器异步通知页面路径 notify_url= /create_direct_pay_by_user-ASP-UTF-8/notify_url.asp 需格式的完整路径,不能加?id=123这类自定义参数 页面跳转同步通知页面路径 return_url= /create_direct_pay_by_user-ASP-UTF-8/return_url.asp 需格式的完整路径,不能加?id=123这类自定义参数,不能写成localhost/ 卖家支付宝帐户 seller_email=Request.Form(WIDseller_email)必填 商户订单号 out_trade_no=Request.Form(WIDout_trade_no) 商户网站订单系统中唯一订单号,必填 订单名称 subject=Request.Form(WIDsubject) 必填 付款金额 total_fee=Request.Form(WIDtotal_fee) 必填 订单描述 body=Request.Form(WIDbody) 默认支付方式 paymethod=bankPay 必填 默认网银 defaultbank=Request.Form(WIDdefaultbank)必填,银行简码请参考接口技术文档 商品展示地址 show_url=Request.Form(WIDshow_url) 需以开头的完整路径,例如: /myorder.html 防钓鱼时间戳 anti_phishing_key= 若要使用请调用类文件submit中的query_timestamp函数 客户端的IP地址 exter_invoke_ip= 非局域网的外网IP地址,如:221.0.0.1 4.notify-URL(支付宝服务器异步通知页面)和return-URL同样按照支付宝提供的代码进行修改 5.进行调试 支付宝接口运作流程 以联通话费充值为例 1.调用联通页面Action 2.对请求参数进行处理(gateway网关参数和sign_tyep签名类型参数先排除在外),经过去null、去空值、按规则排序、MD5加密并且最后赋值给sign签名参数,然后加入gateway和sign_type参数后用”& “符号链接组合成一个链接,然 后再程序后台跳转到这个url即页面自动跳转。 3.支付宝服务器得到商户的数据后进行处理并跳转到支付页面。 4.付款口支付宝服务添加订单Id到参数中成为n_map 5.通知返回:根据传过去的参数return_url和notify_url分别进行同步和异步的验证,防止掉单情况的发生,支付宝在正常处理完成的情况下访问return_url,再订单状态改变的情况下访问notify_url,并传回一个加入了支付宝生成的一个id的n_map,验证成功后,访问return_url请求跳转到支付成功页面,访问 notify_url的请求返回给支付宝一个”suess”字符串,支付宝不在请求,否则支付宝会不断的继续发送请求知道48小时之后。 7.这就是返回Suess的步奏 8联通页面显示支付成功。 流程图 详细过程 一.接入部分原理 在用户点击确认支付按钮后,会调用联通内部服务的action。 1.结合支付宝官方技术接口文档参数模版规范,选定传递给支付宝服务器的参数。如必传项 Service:接口名称,这个是用来区别需要用的是哪个接口,String类型,绝对不能修改,对应值如trade_create_by_buyer。 Partner:合作者身份ID,签约的支付宝账号对应的支付宝唯一用户号,用来鉴别是哪个商家与支付宝签约,String类型,对应值如208810xx070565。 seller_email:卖家支付宝账号,String类型,对应值如zhaoli_selleralitest.。Sign:签名,String类型,对应值如oifjaoihge2348509895jfsjf。 sign_type:签名方式,DSA、RSA、MD5三个之可选,必须大写,String类型,对应值如MD5。 out_trade_no:商户的交易号,这个是我们自己网站的订单系统里的唯一订单号,而非支付宝的,必须是唯一的,支付宝要根据这个订单号来判定这笔订单对于商家是否是唯一的。String类型,对应值如33453636363636. Price:商品的总金额,Number类型,对应值如35。 Quantity:商品的数量,Number类型,对应值如3。 Subject:商品名称,更准确写,这个参数是这笔交易的名称,String类型,对应值如订单编号:44844641848. payment_type:支付类型,直接设置成1,无需改动。 最少一组的物流信息参数三个: logistics_type:物流类型,第一组物流类型,String类型,对应值如POST。logistics_fee:物流费用,第一组物流运费,String类型,对应值如10。 logistics_payment:物流支付类型,第一组物流支付类型,String类型,对应值如BUYER_PAY。 服务器通知notify_url:服务器异步通知页面路径,支付宝主动通知商户网站里指定的页面路径。 页面跳转通知return_url:页面跳转同步通知页面路径,支付宝处理完请求后,当前页面自动跳转到商户网站里页面指定的路径。 选填项body、Discount、show_url等。 2.将参数封装到一个参数数组中,如下示例: 对数组里面的每一个值去null去空值后按a-z的规则进行排序(不包括网关参数即:stringgateway=s:/cooperate/gateway.do?;),若遇到相同首字母,则看第二个字母,以此类推,排序完成后再把所有数组值以”&“字符链接起来,如下图示例: 这个字符串就是待签名字符串,下面做签名字符串是会用到。 3.在MD5签名时,需要私钥参与签名。商户可登录相关网站查看私钥。在拿到请求时待签名字符串和私钥后,直接把私钥拼接在待签名字符串的后面,形成新的字符串,利用MD5签名函数对这个新的字符串进行签名运算,得到32位签名字符串,把它直接赋给上文中的签名参数sign。 4.我们已经拿到了各个参数、参数所属的值以及加密得出的加密字符串,那么手上现在的所有参数信息的格式,应当都是一组一组的,如service=” trade_create_by_buyer”这种格式的字符串,拼接的话,则依靠循环的方式遍历所有的这种字符串,因为这次的拼接是要成URL链接,所以之前排除在外的网关gateway和加密类型参数sign_type也都会被拼接进来,那么,连
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模似电子技术试题及答案
- dsp技术课程考试题及答案
- 辅警培训公共知识书刊课件
- 建设银行2025小语种岗笔试题及答案湖南地区
- 农业银行2025合肥市秋招面试典型题目及参考答案
- 农业银行2025舟山市秋招结构化面试经典题及参考答案
- 交通银行2025石嘴山市秋招笔试专业知识题专练及答案
- 2025行业政策影响分析报告
- 邮储银行2025张家界市小语种岗笔试题及答案
- 工商银行2025衢州市金融科技岗笔试题及答案
- 粘膜免疫 2课件
- 电子课件-《可编程序控制器及其应用(三菱-第三版)》-A04-1724-课题一-可编程序控制器基础知识
- 统计业务知识(统计法规)课件
- 实验计划样表
- 三阶魔方入门教程课件
- 艾滋病个案流行病学调查表
- 广告策划与创意课件-2
- 地质勘察任务书模板
- 全国中心血站上岗证考试题库
- 环境社会学整本书课件完整版电子教案全套课件最全教学教程ppt(最新)
- 计算机组装与维护完整版课件(全)
评论
0/150
提交评论