关于支付宝接入的几点说明和解释
在实际的开发中,我们看到开放平台密钥和合作伙伴密钥的时候,有没有直接就懵逼了的赶脚?反正我是的有。因为不是每个人都经常去开发支付功能,更不会有事儿没事儿去调这些个密钥,毕竟跟钱相关的东西,谁都会冷静三分!鉴于此,我简略说两点。
1.官方答复说,合作伙伴密钥适用于合作伙伴密钥常被适用于API 1.0版本的支付和移动支付(手机网页支付),而开放平台密钥是作为APP支付设定的。经实际测试:合作伙伴密钥和开放平台密钥在移动支付(手机网页支付)和APP支付中都是没有问题的!
2.支付分为两种形式:一是demo接入方式(API 1.0的接入方式),一种是sdk调用API(此为API 2.0的接入方式)下面是分别对两种接入的解释说明:
一.demo接入方式(API 1.0的接入方式
中(官方答复)
1.0的支付api service为:$alipay_config['service'] = "ate.direct.pay.by.user";
服务端程序demo地址为:    doc.open.alipay/doc2/detail?treeId=60&articleId=103564&docType=1   
文档地址为:doc.open.alipay/docs/doc.htm?spm=a219a.7629140.0.0.Wp8Ll3&treeId=60&articleId=104424&docType=1
打开demo当中的配置文件fig.php能看到
Parenter 是合作身份PID。这个只要进行了支付宝签约就能看到,签约流程可以在b.alipay/中到,不再进行说明。值得注意的是seller_id在官方的demo中可以看
出seller_id 是partner,实际上seller_id 也可以是商家的支付宝账号。
从上面的配置中能看到私钥和支付宝公钥是直接写进去的。这有个要注意的地方,就是私钥和支付宝公钥必须一行存放,不能复制工具里面生成的文件中的begin和end注释行。
当然此处也是可以写私钥和公钥的文件路径的,那么这个时候去掉注释和带着注释不影响总体结果,但是这个时候要注意的是支付宝的公钥必须是64个字符为一行,需要手动换行。建议大家用官方demo给的配置方式。直接复制私钥内容进行手动删除回车,直接复制支付宝公钥。(注意:支付宝的公钥需要换取的,也就是说用openssl工具生成的有两个密钥,一个是私钥,一个是公钥。这个公钥是要上传到合作伙伴密钥来换取支付宝公钥的。换言之,配置中的支付宝公钥是用生成的公钥换的。不是本身有的。)
生成的公钥自己手动删除回车然后点击“查看开发者公钥”进行设置修改。设置成功后,点击查看支付宝公钥,并且复制到配置中(如果要复制到文件中就要自己手动每64个字符一行进行回车换行)
一定要注意:公私钥是成对的,私钥存放本地,公钥要上传换取支付宝公钥!
二.SDK调用API(此为API 2.0的接入方式)
此时用到的密钥为开放平台密钥,官方答复说此为APP支付而设定。实际上并不是。(在第1条中有说明)
SDK的下载地址为:doc.open.alipay/docs/doc.htm?spm=a219a.7629140.0.0.MG6YFx&treeId=54&articleId=103419&docType=1#s4
文档地址为:doc.open.alipay/docs/doc.htm?spm=a219a.7386797.0.0.dNeARD&treeId=203&articleId=105285&docType=1#s3
手机支付API地址为:doc.open.alipay/docs/doc.htm?spm=a219a.7629140.0.0.n5wlGc&treeId=203&articleId=105287&docType=1
首先看到sdk接入就要考虑到集成(请略过官方的集成说明)了。
先看官方文档中的前两条说明
准备工作做好,APP_ID(支付时候为基础应用的APPID) ,公私钥(用工具再次生成一个,当然也可以用demo过程中生成的公钥私钥,然后用公钥上传到开放平台密钥的基础应用下面的查看应用公钥,进行换取此处的支付宝公钥)
集成的步骤是在你付款时候提交的action的php中include_once(SDK入口文件AopSdk.php);
接下来就是接收付款的form信息
具体写法看doc.open.alipay/doc2/detail.htm?treeId=203&articleId=105463&docType=1
中写法
示例中给的私钥和支付宝公钥都是文件存放的方式。(文件存放的格式说明请按照对demo中对文件中存放私钥和支付宝公钥的格式说明。)
此时需要注意的是
$aop = new AopClient ();
$aop->gatewayUrl = 'openapi.alipay/gateway.do';
$aop->appId = '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 = "openapi.alipay/gateway.do";
$aop->appId = APP_ID;
$aop->rsaPrivateKey = APP_PRIVATE_KEY;
$aop->format = "json";
$aop->charset= CHARSET;
$aop->alipayPublicKey = ALIPAY_PUBLIC_KEY;
标红地方的格式必须是这样类型的。对双引号进行转义。
如果有变量的话这样写:
此格式固定写法!!
有一点要说明,sdk传参是只要参入业务参数即可!
如果想修改returnUrl或者notifyUrl的时候直接$aop->returnUrl=”正式的同步通知网址”或者$aop->notifyUrl=”正式的异步通知网址”,两者选择一个即可!;
对参数的修改可以看AlipayTradeWapPayRequest类中的方法。
以上是对demo和sdk调试的基本用法,不尽或者有误的地方,大家可以测试雅正!、
下面讲讲如何给APP写支付接口!
服务端给客户端写接口须知:
1.要明确服务端要做的事情:私钥和支付宝公钥必须放在服务端,签名过程必须放在服务端。
2.在请求参数列表中,除去sign、sign_type两个参数外,其他需要使用到的参数皆是要签名的参数。
3.在同步通知、服务器异步通知参数列表中,除去sign、sign_type两个参数外,凡是通知返回回来的参数皆是要验签的参数。
4.sign值要做utf-8 URLencode。
正式接入开始:
网页app
文档地址:doc.open.alipay/doc2/detail?treeId=59&articleId=103563&docType=1
下载demo
移动支付的demo中有服务端demo代码(以php为例)
首先看服务器demo示例的配置文件fig.php
好,我们此时看下请求参数文档会发现一个配置项是demo中缺少的!
请求参数文档地址:doc.open.alipay/doc2/detail?treeId=59&articleId=103663&docType=1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。