《支付宝接入教程以及服务端给app写支付接口入门》由会员分享,可在线阅读,更多相关《支付宝接入教程以及服务端给app写支付接口入门(14页珍藏版)》请在金锄头文库上搜索。
1、关于支付宝接入的几点说明和解释在实际的开发中,我们看到开放平台密钥和合作伙伴密钥的时候,有没有直接就懵逼了的赶脚?反正我是的有。因为不是每个人都经常去开发支付功能,更不会有事儿没事儿去调这些个密钥,毕竟跟钱相关的东西,谁都会冷静三分!鉴于此,我简略说两点。1.官方答复说,合作伙伴密钥适用于合作伙伴密钥常被适用于 API 1.0 版本的支付和移动支付(手机网页支付),而开放平台密钥是作为 APP 支付设定的。经实际测试:合作伙伴密钥和开放平台密钥在移动支付(手机网页支付)和 APP 支付中都是没有问题的!2.支付分为两种形式:一是 demo 接入方式(API 1.0 的接入方式),一种是 sdk
2、 调用API(此为 API 2.0 的接入方式)下面是分别对两种接入的解释说明:1 demo 接入方式(API 1.0 的接入方式中(官方答复)1.0 的支付 api service 为:$alipay_configservice = alipay.wap.create.direct.pay.by.user;服务端程序 demo 地址为:https:/ demo 当中的配置文件 alipay.config.php 能看到Parenter 是合作身份 PID。这个只要进行了支付宝签约就能看到,签约流程可以在https:/ seller_id 在官方的 demo 中可以看出 seller_id 是
3、 partner,实际上 seller_id 也可以是商家的支付宝账号。从上面的配置中能看到私钥和支付宝公钥是直接写进去的。这有个要注意的地方,就是私钥和支付宝公钥必须一行存放,不能复制工具里面生成的文件中的 begin 和 end 注释行。当然此处也是可以写私钥和公钥的文件路径的,那么这个时候去掉注释和带着注释不影响总体结果,但是这个时候要注意的是支付宝的公钥必须是 64 个字符为一行,需要手动换行。建议大家用官方 demo 给的配置方式。直接复制私钥内容进行手动删除回车,直接复制支付宝公钥。(注意:支付宝的公钥需要换取的,也就是说用 openssl 工具生成的有两个密钥,一个是私钥,一个是
4、公钥。这个公钥是要上传到合作伙伴密钥来换取支付宝公钥的。换言之,配置中的支付宝公钥是用生成的公钥换的。不是本身有的。)生成的公钥自己手动删除回车然后点击“查看开发者公钥”进行设置修改。设置成功后,点击查看支付宝公钥,并且复制到配置中(如果要复制到文件中就要自己手动每 64 个字符一行进行回车换行)一定要注意:公私钥是成对的,私钥存放本地,公钥要上传换取支付宝公钥!2 SDK 调用 API(此为 API 2.0 的接入方式)此时用到的密钥为开放平台密钥,官方答复说此为 APP 支付而设定。实际上并不是。(在第 1 条中有说明)SDK 的下载地址为:https:/ API 地址为:https:/
5、sdk 接入就要考虑到集成(请略过官方的集成说明)了。先看官方文档中的前两条说明准备工作做好,APP_ID(支付时候为基础应用的 APPID) ,公私钥(用工具再次生成一个,当然也可以用 demo 过程中生成的公钥私钥,然后用公钥上传到开放平台密钥的基础应用下面的查看应用公钥,进行换取此处的支付宝公钥)集成的步骤是在你付款时候提交的 action 的 php 中 include_once(SDK 入口文件 AopSdk.php);接下来就是接收付款的 form 信息具体写法看https:/ 中对文件中存放私钥和支付宝公钥的格式说明。)此时需要注意的是$aop = new AopClient (
6、);$aop-gatewayUrl = https:/ = your app_id;$aop-rsaPrivateKeyFilePath = merchant_private_key_file;$aop-alipayPublicKey=alipay_public_key_file;$aop-apiVersion = 1.0;$aop-postCharset=GBK;$aop-format=json;上面的参数也可以这么写$aop = new AopClient();$aop-gatewayUrl = https:/ = APP_ID;$aop-rsaPrivateKey = APP_PRIVA
7、TE_KEY;$aop-format = json;$aop-charset= CHARSET;$aop-alipayPublicKey = ALIPAY_PUBLIC_KEY;标红地方的格式必须是这样类型的。对双引号进行转义。如果有变量的话这样写:此格式固定写法!有一点要说明,sdk 传参是只要参入业务参数即可!如果想修改 returnUrl 或者 notifyUrl 的时候直接$aop-returnUrl=”正式的同步通知网址” 或者$aop-notifyUrl=”正式的异步通知网址 ”,两者选择一个即可!;对参数的修改可以看 AlipayTradeWapPayRequest 类中的方法。
8、以上是对 demo 和 sdk 调试的基本用法,不尽或者有误的地方,大家可以测试雅正!、下面讲讲如何给 APP 写支付接口!服务端给客户端写接口须知:1.要明确服务端要做的事情:私钥和支付宝公钥必须放在服务端,签名过程必须放在服务端。2.在请求参数列表中,除去 sign、sign_type 两个参数外,其他需要使用到的参数皆是要签名的参数。3.在同步通知、服务器异步通知参数列表中,除去 sign、 sign_type 两个参数外,凡是通知返回回来的参数皆是要验签的参数。4.sign 值要做 utf-8 URLencode。正式接入开始:文档地址:https:/ demo移动支付的 demo 中
9、有服务端 demo 代码(以 php 为例)首先看服务器 demo 示例的配置文件 alipay.config.php好,我们此时看下请求参数文档会发现一个配置项是 demo 中缺少的!请求参数文档地址:https:/ 的示例中少了 seller_id 这个必要参数!大家自己加上。seller_id 的值是商家的支付宝账号!在配置文件中,有两个参数需要注意 private_key 和 alipay_public_key 这个应该是最近修正的写法。你会发现在之前的写法中是也就是说,这个地方可以写公私钥的路径也可以写具体的公私钥内容,再次要注意的是:公私钥的格式!用官方提供的 openssl 工具
10、进行生成的私钥是保存到本地的,公钥用于上传并换取支付宝公钥,且存到本地,上传修改的位置是合作伙伴密钥(之前有讲过!)如果曾经在网页上有支付宝支付,那么当时的私钥和支付宝公钥是可以再次使用的!无需修改!配置项要说明的基本也就是这些,其他的都无需变动!接下来就是服务端要集成 demo 的重头戏了,那就是生成签名操作之前官方并没有给出明确的文档,说的也是相当模糊,写此文时候官方已经有文档解释。附录文档地址:https:/ orderid 就可以知道此订单的购物情况。那么接下来要进行的签名过程,和要给客户端发送的数据请严格按照下列代码进行!/先根据部分参数(订单信息 )获取签名$signParamet
11、er = array(partner = .$alipay_configpartner.,seller_id=. $alipay_configseller_id.,out_trade_no = .$orderArrorder_sn.,subject=.$orderArrgoods_name.,body=.$orderArrgoods_name.,total_fee= .$orderArrpay_fee.,notify_url=.$alipay_confignotify_url.,service =. $alipay_configservice.,payment_type =. $alipay_
12、configpayment_type.,_input_charset =.$alipay_configinput_charset.);/获取预签名字符串$strSign=createLinkstring($signParameter);/调用 RAS 加密函数获取加密串$result=rsaSign($strSign,$alipay_configprivate_key_path);/将完整的信息发给客户端$parameter = array(partner = .$alipay_configpartner.,seller_id=. $alipay_configseller_id.,out_trade_no = .$orderArrorder_sn.,subject=.$orderArrgoods_name.