大家好,今天来为大家分享api怎么接入交易平台的一些知识点,和php开发中app怎么接入支付宝的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
本文目录
一、游戏API接口接入新手知识
首先API全称(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。
对于很多产品小白或求职者而言,API接口是一个产品和研发领域的专业术语,大家可能在文章或者PRD中都已经有接触过API接口的概念。
实际上,接口的应用已经非常广泛和成熟,这个概念主要活跃在公司内部的各系统之间的衔接和对接以及公司间合作的场景。如果你可以认真看完这篇文章,我相信你们对API接口的认识会更深入,甚至超过90%的小白和求职者。
为什么我们需要游戏APIAPI接口?
我们来以一个常见的数学公式理解API,比如y=x+2,当x=2的时候,y=4,对么?
那此时,我们把y=x+2称为接口,x=2称为参数,y=4称为返回结果,那这个接口的功能就是能把我们输入的数加上2(注意:这里你可以发现接口自身是带有逻辑的)。
类比地,我们来理解一个常见的场景,比如现在有一个可以把经纬度转化为城市的接口,那当我输入经度是55°,纬度是88°的时候,接口通过自己的逻辑运算,返回结果告诉我:杭州市。
这样你就可以清晰地了解百度百科的官方解释了,接口就是预先定义的函数逻辑,他是供其他系统请求,然后返回结果的一个东西。
背景:我们的业务系统涉及多方多面,如果要一个公司或者一个系统把所有业务都做完,那未免工作量太大了吧?并且如果其他系统或公司有更好的运算逻辑,那我们在设计功能的时候可以考虑利用接口进行开发。
核心需求:利用现有接口可以降低开发成本,缩短开发成本。
举个例子:比如我是做游戏的APP,现在我需要在我的页面上展现游戏的功能,对于我司而言,新做开发能未免成本过太过于高,那我们可以在NGAPI接口商开放平台提供的API进行接入,这样的话我们只需要申请API接口开户,部署调用 NGAPI接口 API,这样就可以快速在我们页面上线丰富的游戏平台了。
对于小白而言,初看API文档可能是一头雾水的——从哪里看,怎么看,看什么是摆在面前的问题。
其实对于产品经理而言,我们应该更关注这个公司可以提供什么样的API接口服务,比如我知道高德可以提供地图API,规划路线的API,这样的话在我们设计功能和工作中就可以想到调用他们的服务或者参考。
所以产品小白们看不懂也不用过于担心,未来工作中你也会更深入了解清楚,因为看懂并不复杂,以下是API接口的核心点,所有的说明文档离不开这5个核心点。
以下说明均以微信开放平台为例说明,文末有各开放平台的地址,大家有空可以去学习。好了,事不宜迟,现在我们来建立一个场景。
我们现在有一个APP,需要用户在购买的时候调起微信支付的API,完成购买。请各位自动进入这个场景,把自己当作一位产品经理。
现在Now,用户点击付款,我们需要告诉微信,我们要调起你们的收银台啦!但,去哪里告诉呢?这就需要接口地址了,也就相当于向微信的这条链接传输指定的数据。
一个链接地址不是我们理解的一个页面,你可以理解是一个电话号码,小白们要改变这个观念。
此时我们可以看到接口文档告诉我们链接是如下这条,那我们现在已经拨通微信的电话了。
我们现在需要告诉微信,你想调用收银台对吧。那我们需要写下来,此时生成的叫做报文,也就是你想告诉这个接口的内容是什么?相当于前文函数的输入x=2。
一般来说,报文的格式和内容都是按接口文档规定的。如下文就是微信开放平台对调起收银台的报文要求。
我们先来看前2个参数,你现在跟微信在对话,是不是应该先告诉微信,你是谁?这里微信的文档告诉你应该要用应用ID+商户号来确定你的身份,什么意思呢?
比如你是A商户,下面有a,b,c三个APP,所以微信要知道你是哪个商家,下面的哪个APP要用收银台。这是非常重要的,微信后面要把收到的钱打到对应的账户以及统计数据等。
那我们就在报文里面写下这两句话:
<appid>wx2421b1c4370ec43b</appid>(我的应用ID是wx2421…….)
<mch_id>10000100</mch_id>(我的商户号是10000…….)
好了,现在微信知道你是谁了,那你要告诉微信,你需要微信支付帮你收多少钱对吧?这里定义了货币类型和总金额,也就是收什么货币,收多少钱。
这里你看,货币类型的必填写了否,也就是说你也可以不告诉微信支付货币类型是什么,因为他在后面备注了默认是人民币。
<free_type>CNY</ free_type>(我要收人民币)
<total_fee>1</total_fee>(我要收1元)
好了,现在微信知道你是谁,也知道要收多少钱了,那接下来微信支付要把收钱结果告诉你呀,因为你得知道用户是成功支付了才能继续发货,服务啊等等的。所以这里我们用到通知地址,就是告诉微信,等下完事了他去哪里告诉你支付结果。那我们把地址写好:
<notify_url>;
刚刚微信支付已经去收款了,现在他要在我们留下的通知地址中,告诉我们结果了。结果无非是两种:成功收款?收款不成功?
很顺利,现在用户成功付钱了,并且微信也把成功的消息告诉我们了,并且他还把用户支付的一些信息也告诉我们。
那这里就是微信支付成功收款后告诉我们的信息。
应用APPID,商户号:告诉你我成功扣款的是哪家商户的哪个APPID的交易。
在产品设计的时候,我们往往很关注失败的情况,当收款失败的时候,微信同时会告诉你失败的原因,如下图很好理解,失败的原因有很多很多种,我们在设计的时候往往要分析每种失败的原因,为每个失败的原因设计页面和用户提示,以确保用户能理解。
以上就是API接口基本运作模式的理解,下面我将继续更新API接口的一些更为深入和细节的关键元素,如请求方式/签名/加解密等等。
二、php开发中app怎么接入支付宝
APP支付接口:alipay.trade.app.pay
登录蚂蚁金服开放平台-->创建应用-->添加App支付功能。具体查看官方文档
下载官方 SDK(PHP版本资源)——当前SDK版本:106生成时间:2017-07-25 11:46:10
将SDK原码放置在TP5的vendor目录下的alipay文件夹(可根据实际使用框架技术进行实际调整)。
应用公钥(商户自身的RSA公钥):支付宝使用该公钥验证该交易是商户发起。
支付宝公钥(支付宝的RSA公钥):商户使用该公钥验证该结果是支付宝返回的。
4、支付场景具体实现流程(最详细图解)
在集成App支付能力时,建议实现如下支付流程,创建订单并支付,根据返回的结果确定支付状态,并进行相应的异常处理,其过程如下图所示.
商家APP在创建订单并且唤起支付宝APP支付,流程如上图所示,根据第2.2,3步返回的支付结果,确定支付状态,并且做相应的异常处理(必要时关闭订单)
步骤1:商户APP端请求商户服务器接口,提交订单数据。
步骤2:商户服务器端接收数据,然后对数据进行签名,返回请求参数到商户APP端。
官方接口文档:
//vendor();为TP5框架的方法,作用:导入第三方框架类库
vendor('alipay.aop.AopClient');
vendor('alipay.aop.request.AlipayTradeAppPayRequest');
$aop->gatewayUrl="";//支付宝网关
$aop->appId=“应用ID,填写你的APPID”;
$aop->rsaPrivateKey="商户私钥,您的原始格式RSA私钥()";
$aop->alipayrsaPublicKey="支付宝公钥";
$aop->apiVersion='1.0';
$aop->signType="签名方式,如 RSA2";
$aop->postCharset='UTF-8';
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$appRequest= new\AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
'body'=>'余额充值',//订单描述
'subject'=>'充值',//订单标题
'timeout_express'=>'30m',
'out_trade_no'=>‘20170125test01’,//商户网站唯一订单号
'total_amount'=>'0.01',//订单总金额
'product_code'=>'QUICK_MSECURITY_PAY',//固定值
$appRequest->setNotifyUrl($url);//设置异步通知地址
$appRequest->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response=$aop->sdkExecute($appRequest);
//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
echo htmlspecialchars($response);//就是orderString可以直接给客户端请求,无需再做处理。
//如果最后有问题可以尝试把htmlspecialchars方法去掉,直接返回$response
说明:sdkExecute()方法,作用生成签名,详细步骤如下:
将请求参数组装分下列3步,以最后第三步获取到的请求为准。
1)将请求参数的键按字典排序,然后按照key=value&key=value方式拼接,得到未签名原始字符串如下:
app_id=2015052600090779&biz_content={"timeout_express":"30m","product_code":"QUICK_MSECURITY_PAY","total_amount":"0.01","subject":"1","body":"我是测试数据","out_trade_no":"IQJZSRC1YMQB5HU"}&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=×tamp=2016-08-25 20:26:31&version=1.0
app_id=2015052600090779&biz_content={"timeout_express":"30m","product_code":"QUICK_MSECURITY_PAY","total_amount":"0.01","subject":"1","body":"我是测试数据","out_trade_no":"IQJZSRC1YMQB5HU"}&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=×tamp=2016-08-25 20:26:31&version=1.0&sign=cYmuUnKi5QdBsoZEAbMXVMmRWjsuUj+y48A2DvWAVVBuYkiBj13CFDHu2vZQvmOfkjE0YqCUQE04kqm9Xg3tIX8tPeIGIFtsIyp/M45w1ZsDOiduBbduGfRo1XRsvAyVAv2hCrBLLrDI5Vi7uZZ77Lo5J0PpUUWwyQGt0M4cj8g=
3)最后对请求字符串的所有一级value(biz_content作为一个value)进行encode,编码格式按请求串中的charset为准,没传charset按UTF-8处理,获得最终的请求字符串:
app_id=2015052600090779&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22IQJZSRC1YMQB5HU%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fdomain.merchant.com%2Fpayment_notify&sign_type=RSA2×tamp=2016-08-25%2020%3A26%3A31&version=1.0&sign=cYmuUnKi5QdBsoZEAbMXVMmRWjsuUj%2By48A2DvWAVVBuYkiBj13CFDHu2vZQvmOfkjE0YqCUQE04kqm9Xg3tIX8tPeIGIFtsIyp%2FM45w1ZsDOiduBbduGfRo1XRsvAyVAv2hCrBLLrDI5Vi7uZZ77Lo5J0PpUUWwyQGt0M4cj8g%3D
步骤3:商户APP接收从商户服务器端返回的请求参数,然后调起支付宝支付面板。
若用户支付成功,支付宝会同步给商户APP端返回一个支付结果。相应地,支付宝也会通过异步通知给商户服务器端返回一个支付结果。
注意:由于同步通知和异步通知都可以作为支付完成的凭证,且异步通知支付宝一定会确保发送给商户服务端。为了简化集成流程,商户可以将同步结果仅仅作为一个支付结束的通知(忽略执行校验),实际支付是否成功,完全依赖服务端异步通知。
步骤4:服务端异步通知处理机制(支付宝主动发起通知,该方式才会被启用)
官方接口文档:
1)必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
2)支付宝是用POST方式发送通知信息,因此该页面中获取参数的方式,如:$_POST[‘out_trade_no’];
3)程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);
4)当商户收到服务器异步通知并打印出success时,服务器异步通知参数notify_id才会失效。
$aop->alipayrsaPublicKey='请填写支付宝公钥,一行字符串';
$flag=$aop->rsaCheckV1($_POST, NULL,"RSA2");//验证签名
$out_trade_no=$_POST[‘out_trade_no'];//商户订单号
$trade_no=$_POST[‘trade_no'];//支付宝交易号
$trade_status=$_POST[‘trade_status'];//交易状态trade_status
$total_amount=$_POST[‘'total_amount'];//订单的实际金额
$app_id=$_POST[‘app_id'];
if($app_id!=$this->config['app_id']) exit('fail');//验证app_id是否为该商户本身
//只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。
if($trade_status!='TRADE_FINISHED'&&$trade_status!='TRADE_SUCCESS')
//1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;
//2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);
//3、校验通知中的seller_id(或者seller_email)是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)。
//上述1、2、3有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。
//校验成功后在response中返回success,校验失败返回failure
步骤5:当商户APP端接收到支付宝的同步返回结果为成功时,商户APP端再请求商户服务器端API,判断订单最终支付结果,并做出最终响应。
三、如何对接海外银行api
调用第三方平台接口需要进行系统间的通信,目前常用的协议是http和https;简单理解https是http的加密版,可以将用户到服务端请求的信息进行加密,避免因明文传输被截获而获知用户信息。基于http协议的接口具有轻量级、跨平台、和跨语言的特点,为了适应不同的开发者,目前各个第三方平台都会提供基于各种常用语言的接口形式,因此大多采用http或https协议;举例,百度、科大讯飞:笔者查阅了百度、腾讯、旷视、阿里的云平台发现在视觉方面均都采用的是https协议;对于视觉,图片数据本身包含的信息就很丰富,尤其是人脸,因此采用https还是有利于保护用户隐私信息的。
接口的请求方式了解接口的请求方式有助于了解用户端和服务端间的交互方式,基于http协议的常用请求方式是post和get;两者的主要区别如下:(1)直观区别:get请求方式是将请求参数放到url中,post是将参数放到requstbody中,所带来的的直接影响是get的请求参数存在长度限制,post无限制;其次是get将参数放到url中安全性弱于post;(2)深度区别:get请求方式用户端和服务端只产生一次交互,post请求方式用户端会和服务端产生两次交互,举例:快递小哥是用户端,你是服务端,则get就像常来你们小区和你认识的快递员直接将快件送到你家,你跟他说声谢谢;post就像新来的快递员先打个电话问下你在家吗?你告诉他你在家呢,过了5分钟他将快递送到你家了,你跟他说声谢谢;目前百度、腾讯、旷视的图像识别接口均采用的是post请求方式。
3、接口响应机制最后了解接口的响应机制:同步接口和异步接口;简单理解同步接口即实时返回消息给调用方,异步接口就是可以延迟返回消息给调用方;实时性要求高的且只能线性工作的需要采用同步接口,其他可以优先使用异步接口;当然不同的场景,同样的服务接口会被要求同步或异步;以人脸识别中的人脸注册为例:(1)刷脸支付:以支付宝为例,使用之前需要按照步骤采集人脸,后台会调用人脸注册将当前人脸注册进人脸库并和该支付宝账号信息绑定,这一步人脸注册通常是同步接口,因为不会要求用户在APP前等待太久,需要及时返回注册成功信息;(2)客流系统:现在商超使用的客流系统一般已经采用人脸识别取代头肩模型,这样不仅可以统计人数还可以统计人次,其中对于首次识别的陌生人脸通常需要注册进陌生人脸库,这里的人脸注册一般为异步接口,因为大型商超每天数十万客流且对于陌生人无会员信息,所以不需要实时注册,只要进入队列能在当日24小时内注册完即可;
【消费金融-信贷产品】API全流程对接
授信分为两种,预授信和正常授信:
预授信:借贷平台依托本身庞大的用户基数和积累下来的用户数据,比如行为数据、成交数据(信贷平台--借款订单贷后数据,电商--成交订单数据,支付工具--支付交易数据),不需要用户额外提交资料,即可在平台自身风控引擎的计算策略下,评估用户的资质,并预先授予用户额度。但是,这种方式,也只有像蚂蚁借呗依托支付宝国民级应用、卡牛贷款业务依托卡牛信用管家工具才能采集到用户足够多的用于风控的数据,绝大多普通的信贷产品还是无法有效走预授信方式的。
常规授信:目前普遍的方式还是用户提交各项资料项,信贷产品根据用户提交的资料项进行评估,获得借款额度。
下面主要讲的也就是常规授信这种方式。
作为一家API全流程接入的助贷平台,一般都有自己的标准化API流程,用于与信贷机构对接,一般都是在确认合作意向后会将接口文档先甩给信贷机构,但能不能完请全按着接口文档进行开发,自然是需要持续性沟通。按照标准API文档,对提供接口文档的一方而言,有一个明显的好处,那就是省时省事。
常见的授信环节,基本都含以下几个基本认证步骤:
(1)实名认证:指的实名二要素认证,即姓名身份证号,为了证明借贷人非黑户(在公安局有留底记录);
(2)运营商认证:通过用户授权,抓取用户所填手机号在手机运营商处的数据,可能涉及运营商基本信息、手机套餐、账单数据、通话清单、短信清单、充值清单、积分清单、上网清单、亲情短号等;
(3)个人基本信息认证:包含3个部分,①个人信息(学历、婚姻状态等);②职业信息(所在行业、公司基本情况);③联系人信息(通过授权手机通讯录获取借款人填写)。这里说一下,①②一般都是可以随便填的,毕竟是真的没法怎么验证;③一般都通过强制授权手机通讯录抓取,用户再填写紧急联系人(一般用于借款人恶意逾期后催收用途),若是联系人不是自己的通讯录好友,且备注与所选关系不符(可能会有人工审核),一般是过不了初步筛选的;
(4)身份证OCR和活体识别: 包含2个流程(均使用第三方服务),①通过 [眨眼张嘴点头摇头]几个动作,检测当前申请的借款人是否活体;②将上传的身份证正反面照片识别出关键字(主要是身份证号和姓名),连接第三方身份信息数据源(公安局)获得比对人脸照,再将活体识别的照片与比对人脸照进行人脸比对,达到一定的置信度阈值(即相似度),则可通过,主要是防止借款人使用从网络或者黑产购买的他人照片)。
除以上基本流程外,其他的认证项,则根据各家信贷产品风控不同,需要的用户数据不同,决定需要相应的哪些产品流程,相应还有如下差异化的资料认证项:
(1)信用卡网银数据:用户手动授权导入获取;
(2)信用卡数据:用户填写信用卡,并进行信用卡四要素认证(身份证号、姓名、银行、银行预留手机号);
(3)电商-淘宝支付宝数据:用户手动授权导入获取;
用户需要授权或者填写的资料项越多,流失率会越高,所以有些借款机构对非必须的资料项,会放置在提款环节,比如绑定储蓄卡等。
借贷人填写完所有信息,提交申请授信,等待风控处理。一般而言,稍微有点风控能力的助贷平台都会先过一遍风控初筛(用户数据协助逐步训练风控模型),也有利于后续的自营。
风控审核通过后,信贷机构会给予用户一定的借款额度,常见的额度分两种:
(1)循环额度模式,给予用户一定的借款额度,只要剩余额度大于单笔借款起借限制,用户即可在有效期内(一般是1年)内,将该额度内的钱提现至储蓄卡,并且还清一笔后,剩余额度将恢复已清该笔借款的额度。eg:批额¥10,000,借一笔¥1,000,再借一笔¥1,000,还清第一笔¥1,000,则剩余额度为¥9,000。但事实上,若是提现多笔,其中有逾期,尽管额度有剩余,仍然无法进行提现。
(2)单次单批模式,给予用户一定的借款额度,用户只能选择将当前额度全部提现,或者不提现,授额的有效期比较短(一般是7~15天),部分信贷产品允许适当降额。eg:批额¥10,000,只能借一笔¥10,000,不能只借¥1,000。在签约提现后或者签约提现有效期失效后,若需要再次借款,则需要再次发起授信申请(当然,若已填写的数据认证项未超过有效期,是不需要再次填写的)。
讲了2种方式的提款,再讲一下API借款过程中比较常见的问题:
(1)绑定储蓄卡:有的信贷产品会将这个流程置于授信环节,其实没多大必要,如果用户审核被拒,压根就不需要用到该银行卡信息,多加一个环节多一步流失。在信贷产品给用户授额后,用户手动提款至自己的储蓄卡时,再去走一个绑卡流程,是比较合理的。绑卡流程需要考虑到以下问题:
理论上来说,借款人在借款时系统试算的还款计划和后面用户实际该笔借款成功后的还款计划,应该是一致。
借款利率在年化利率36%以下,才是合规的。实际上,一些中大型信贷机构的明利率上加管理费、服务费等其他费用,也还在36%以内,但现在整个行业处于洗牌期,同时获客成本及运营费用日趋升高,保持合规的年化利率,对于部分信贷机构而言,对不同资质用户的差异化利率尽管能解决部分问题,但上限就摆在那里,还是有一些压力的,所以一些现金贷乃至超利贷算起来其实已经远远超过36%,这当然有暴利收割之意,也不乏无奈之举。
对于用户的贷后数据,信贷机构其实是比较敏感的。但助贷平台一般都会聚合用户在各个信贷机构的借款记录,方便用户还款,因此订单同步是必须的。如下图:
订单数据可以同步,但订单数据中详细的还款计划情况(用户每一期的还款计划与每一期还款的状态),部分信贷机构是不会同步,因此助贷平台拿不到此数据,一般都是用户要还款,必须得前往该信贷机构的还款H5进行操作。
就是指银行卡ocr图像识别、验证、查询类的接口。
图片识别类接口主要是用作图片识别银行卡图片上的文字要素,验证类接口基本用作涉及到银行卡信息验证的业务场景,验证用户提供的银行、名字、身份证号码、手机号码等基本信息是不是一致,查询类接口则是用作研究用户银行卡的消_特点,进而制定客户的消费需求模型。
API(ApplicationProgrammingInterface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。API版本是接口的变更或增减后的新接口。
南京银行api接口是一种通过聚合数据等符合条件的API接口供应商与银联的数据库进行身份验证。这种身份验证在支付平台、电商平台、交易平台等平台上都有广泛的应用。根据不同的安全标准,平台会对用户提供的信息进行认证,保证其真实性和有效性,从而避免后续的法律风险,提高用户的使用体验。随着新世纪的到来,网络的应用越来越多,银行卡识别api接口就像是一条巨大的水渠,将海量的数据传输到各个领域,现在的金融行业,银行卡识别api接口的应用非常广泛,根据需要,开发出了不同的接口。
跟第三方支付公司接银行api接口有什么用,这个api接口是什么?
这个接口就是银行对外通讯的一个接口。举个例子。支公司申请付款就是通过这个接口,只要传过来的参数有身份证号,手机号,手机验证码是正确的手机验证码,银行就允许他支付。
好了,文章到这里就结束啦,如果本次分享的api怎么接入交易平台和php开发中app怎么接入支付宝问题对您有所帮助,还望关注下本站哦!
声明:本文内容来自互联网不代表本站观点,转载请注明出处:https://www.41639.com/15_296252.html
