php支付宝在线支付接口开发教程

来源:本网整理

登录支付宝,然后有个商户版的,进入申请双功能接口, 然后下载下来的接口包文件有很多语言的源码 我们选择PHP版的UFT-8 里面包括一些文件 images文件里是支付宝相关的一些标志的图片,lib文件很重要,是整个接口的核心类文件;alipay.config.ph

s">

php支付宝在线支付接口开发教程

作者:NCZB007 字体:[增加 减小] 类型:转载 时间:2016-09-19 我要评论 这篇文章主要为大家详细介绍了php支付宝在线支付接口开发教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ">

1.什么是第三方支付

http://v.baidu.com/v?s=8&word=php%D6%A7%B8%B6%B1%A6%BC%AF%B3%C9%CA%D3%C6%B5%BD%CC%B3%CC&fr=ala11

  所谓第三方支付,就是一些和各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖家货款到达。

对方应该有sdk和demo提供的,支付接口的流程都差不多,包括支付宝,网银,财付通,paypal等流程都一样。 1、 用户下单,收集购物车内产品的总价 2、 拼装支付参数URL跳转进入支付网关进行支付(这里会用到支付网关提供的SDK) 3、 支付成功 (1

  目前提供第三方支付的机构很多,常见的有支付宝、财付通、快钱、网银在线、易宝支付、云网等各大支付平台。网站如果需要实现第三方支付首先应该向第三方支付平台申请一个账号并签署协议,协议生效后第三方支付平台将为其开通在线支付功能,通过程序将接口集成到网站中。

一般这种第三方支付功能, 是第三方支付平台提供的一种额外服务! 要使用它们的服务,首先要有他们的授权! 那支付宝来说, 首先要用你的支付宝账号登录支付宝商家服务平台, 申请相应的接口权限! 只有支付宝官网他们通过你的接口申请权限并开

  为什么要使用第三方支付?因为第三方支付平台已经与各大银行进行签约,网站主只需要在此平台申请一个账号即可支持几乎所有的种类的银行卡信用卡的交易。

支付宝官方API有接口和流程,大体就是带上参数,跳转到支付宝,在支付宝网站实现支付,支付宝会将结果和设定的回调URL跳转来自己的网站,进行校验数据就可以的。

2.第三方支付原理

1如何评价一个人不合适?没有绝对的标准去判断一个人是否合适不合适一个公司,只能判断适不适合你所需要打造的文化氛围。这一点每个成功的创业团队都有精彩的案例。我们这边比较简单:人品好不好,不好就开除,好就留下培养,培养不好就换岗位,因为我个人是希望公司的老员工多。2只是自己判断还是会与团队的其他人商量?绝大多数情况下,我们这边都是做集体商量的。有3个好处,一个是判断更加准确,避免失误;第二个这能够加强团队的协同,增加团队的凝聚力;第三点是更有效传达企业的文化标准。当然最终决策一般还是自己定。3如何实施这一过程?一般都会分步骤,除非是刚入职不久的。第一步是要找他谈话,指出他的问题,同时也要坦诚的肯定

以上简要说明了支付过程,当然其中省略了一些步骤(比如购物车,订单等),我们重点来看支付流程。

??\"黄芥末\"才是真芥末!芥末是由成熟的芥菜(Brassicajuncea)的种子碾磨成的粉状调料,一般呈黄色。就是我们吃热狗搭配的那一条黄黄的膏状物体。其实中国早在周代起宫廷里就开始食用这种芥末酱了绿色的wasabi,它的真名叫山葵?现在来看看山葵。山葵(Wasabiajaponica),从它的拉丁名里看出点什么来了吗?没错,日本料理中配寿司和生鱼片的绿色瓦沙比(wasabi)其实是山葵酱!山葵酱(wasabi)是由山葵根磨成细泥状制成的,它和由芥菜种子磨成的芥末酱(mustard)压根不是一回事儿,只是气味和味道相似然而,你平时吃到的也多半不是山葵现在你知道了,此芥末酱非彼芥末酱。再告

  2.1用户向商城网站发起确认订单的请求

关于酒精度数韩国烧酒名字虽然叫烧酒,但是酒精度却与中国白酒有着天壤之别,完全没有中国白酒那么“烧”。中国白酒最低的酒精度也要有30度以上,但是韩烧的度数却都在19.5-21.5之间,仅仅比中国的黄酒度数高那么一点。?关于香型中国人喝白酒,讲究味香,单单香型,就要分为酱香、浓香、清香等多种香型,这是传统也是习惯。对于习惯了的国人来讲,这是顺理成章的。所以家里如果喝过白酒,那么屋里头酒味三四个钟头都是不会消失的。韩烧却没有这么浓烈的酒味,不是凑到跟前,是不会闻到酒味的,并不是说韩烧不放香料,只是非常少罢了。这可能是为什么中国人喝韩烧在喝之前先闻一闻就对韩烧没有好印象的原因吧。?关于入口韩烧入口不难

  2.2商城网站接收到请求保存订单数据到数据库或其他存储介质

当初报名考驾照,真的是看别人都学,所以我就跟风报名了。交了钱,考了科目一就开始后悔。每天要上班,就周日休息,还要去练车,大太阳底下,能晒出油。所以一直不想去学,教练总打电话让我去,后来拖到冬天了,想着去练车吧,练了一个星期就去考科目二了,当时教练说,你绝对没问题,学的很快很好,结果去了四个人,就我自己没过……,死在侧方和半坡。我模拟的时候真的是都过了,考试两次机会全挂。过完年继续学,又是一个星期,教练说,这会你不会再不过了,我也这么觉得,然而…又挂了,死在直角和s弯。我都佩服我自己了,就是考试紧张啊,脑子一片懵。然后就打算放弃了。又拖到夏天,被教练催着考试,然后又练了一个星期,本来是下午考试的

  2.3返回订单确认页面,页面上应该显示订单金额等信息

  2.4用户确认支付,发起支付请求。注:支付请求是发送到支付网关(比如支付宝、网银在线)而不是发送到商城网站。

  2.5显示支付页面

  2.6用户填写认证信息(账号密码等)提交

  2.7这里有两个步骤一个是扣款成功后页面跳转到支付结果页面(展示给用户),另一个是支付通知,这两步没有先后顺序可能同时执行,商城网站接收到支付通知后根据验证规则验证信息的有效性,并作出相应的更改操作(例:有效则更改订单为已付款状态,无效则记录非法请求信息)。

  以支付宝为例:如果实现在网站中集成支付宝接口,首先要有一个支付宝账号,接下来向支付宝申请在线支付业务,签署协议。协议生效后有支付宝一方会给网站方一个合作伙伴ID,和安全校验码,有了这两样东西就可以按照支付宝接口文档开发支付宝接口了,在上图的几个步骤中只有4和7两个步骤在商城与支付网关之间有信息交互。在步骤4中指将数据发送到支付网关(支付宝),在步骤7中是的通知验证部分,验证网关请求网站某地址,网站按验证规则对信息进行验证记录并作出响应,我们几乎在开发任何支付接口时,重点是这两部分的开发,明白支付接口原理,开发支付接口就不难了。

3.支付宝接口开发

  3.1接口简介与测试

  支付宝目前提供了,担保交易、标准即时到帐、双功能等几种接口,只是在功能上有些差异,网站集成方式是一样的。以标准即时到帐接口为例,在与支付宝签署协议后,还需要几个步骤才能完成集成。

  选择“我要自助集成”接下来会看到的链接,点击下载技术文档。

  在下载后的文件中有标准支付宝交易服务接口、商家工具、接口集成指南等接文档,另外还有几种语言写的demo.我们可以根据接口文档按规则全新开发,也可以再demo基础上修改集成到网站,需要注意的是开发支付接口需要在公网(服务器必须可以通过外网访问)才可以完成整个调试过程,如果服务器在外网访问不到,则无法接收到支付通知。

  看一下demo中每个文件的作用:

  这里已经下载好了(见资源目录pay文件夹),为了便于调试增加修改了若干文件,并增加了一张数据表保存订单信息,我们修改一下配置文件完成一个测试过程。

  alipay_config.php是基础信息配置文件,我们需要将在支付宝后台获取的PID与Key写入到配置文件中。

  配置项:

  其中方框内的数据是我们需要重点修改的。支付通知地址与返回地址的区别,前面已经提到,在步骤7中有两项:支付结果页面与支付通知信息,支付结果页面是用户支付完成后会自动跳转到这个地址这里是返回地址($return_url)。

  支付通知地址同样是用户支付完成后,支付宝会请求该地址($notify_url),但是支付通知是支付宝服务器直接请求,不会被用户看到。这两个地址必须是以http开头的完整路径格式为了完成测试过程,这里已经将/pay/alipay/notify_url.php改写,将$notify_url设置为可访问到此文件的URL即可。这几项配置好后再根据数据库脚本(pay/orders.sql)创建一张数据表。并根据数据库的配置信息修改mysql_config.php.通过对支付宝提供的demo做简单修改就可以完成创建支付请求(步骤4)了,这里更改了支付首页等页面(见源码包pay目录)。我们先测试一下:

  数据库中增加了一条“订单信息”.

  如果点击“确认支付”按钮或者确认支付 链接将会跳转到支付宝页面,点击按钮时通过表单POST方式将信息提交到支付网关,由于支付请求数据无需让用户看到,这里都写在隐藏域中了。确认支付 链接是通过URL传参,因为支付宝接口允许以POST或者GET方式提交,所以两种方式都可以。把参数提交给支付网关后,页面跳转到到支付页面。我们看到如下图所示:

  我们看到支付宝为我们提供了两种支付方式,一种是通过支付宝账户支付,另一种是通过银行卡支付。例如选择使用银行卡支付,填写邮箱或手机号跳转到如下页面:

  我们开单支付宝几乎支持所有的银行卡支付,同时有信用卡和网点方式付款,选择对应的银行下一步按提示付款即可。付款完成后页面会返回到我们在配置文件中配置的$return_url地址,同时“订单状态”也会发生改变。

  注:测试时如果没有在外网测试(即支付通知地址无法在外网访问)则支付通知无法被请求到,无法自动完成订单状态的修改。

  3.2支付宝接口规范与代码分析

  支付宝接口规范可参考/pay/doc/标准支付宝交易服务接口(专用于防钓鱼网站)。Pdf,里面已经有了比较详细的说明。

  3.2.1如何创建支付请求

  在前面的测试中我们点击了“确认支付”将信息将信息提交到了支付宝的支付网关,我们可以思考一下应该发送哪些参数给支付网关。关于请求参数列表可以参考标准支付宝交易服务接口(专用于防钓鱼网站)。Pdf中的3.2.2.需要注意的是并不是我们把这些参数原封不动的提交到支付宝就可以了,为了保证数据安全支付宝目前使用的是MD5签名防止数据篡改机制。

  在提交数据前需要将需要提交的数据以一定规则(见接口文档)组装成字符串,加上安全校验码(Key)组成一个新字符串,通过MD5生成一个32字节的签名,我们提交支付请求时还需要把这个签名也提交过去。看一下表单源码

  支付宝接收到参数后会进行验证请求参数的合法性,验证无误后将显示支付页面,否则提示错误。

  3.2.2 如何验证支付通知

  在用户支付完成后,支付宝会请求网站支付通知地址(这个地址应在创建支付请求时作为参数传递过去)。返回参数列表参见标准支付宝交易服务接口(专用于防钓鱼网站)。Pdf3.3.1.支付宝的返回数据中同样有一个签名串(采取和支付请求同样的签名方式),在支付通知文件中首先要对数据进行签名验证。除了验证签名,还需要将参数中的notify_id提交到支付宝的验证网关支付宝系统这个通知的真实性,通知验证。支付宝系统判断通知是否是自己发送,如果是以字符串格式返回 true,否则返回false,我们通过验证服务器返回的数据验证请求的真实性,如果都验证通过则可以进行更改订单数据、给用户发送邮件通知等操作。关于验证签名可以看一下通知文件中的源码。带demo中将参数中的notify_id提交到支付宝是通过POST方式提交并取得返回数据,代码片段:

  这里重点就是fsockopen函数,在发送电子邮件时我们已经接触过,通过此函数打开套接字连接,类似于以前学过的fopen函数返回的是一个文件句柄,之后可以使用文件函数( fgets()、fgetss()、fputs()、fclose() feof()等)对其进行操作,代码中使用了fputs()(同fwrite())函数,写入数据来模拟表单以POST方式提交数据,最后通过fgets()函数获取返回的数据保存到数组中,最后进行验证,具体参照源码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持突袭网。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

php支付宝开发实例

我做过在线支付的项目,首先你要注册一个支付宝和财付通的帐号。

让后到支付宝和财付通的网站找到申请商家服务,填写一些基本信息后(包括网站域名),如果能打开的话,就会给你开通一个商家服务,同时你可以在支付宝和财付通得到一个接口文档,有各种主流语言,当然有PHP。在商家服务平台里会看到有接口的密钥(包括: 查询PID,查询KEY),具体的接口使用方法在文档里有详细说明的,联系客服,他们就会给你API文档,不用自己找的。而且包括了很完整的实例。

我原来就用过支付宝的支付接口。

我是如何php支付宝接口开发充值

支付宝提供PHP的SDKdemo。参考文档,配置运行可以后,再应用到自己的程序中去

php开发中app怎么接入支付宝

准备工作

APP支付接口:alipay.trade.app.pay

服务器端使用框架:TP5

登录蚂蚁金服开放平台 --> 创建应用 --> 添加App支付功能。具体查看官方文档

下载官方 SDK (PHP版本资源)——当前SDK版本:106 生成时间:2017-07-25 11:46:10

将SDK原码放置在TP5的vendor目录下的alipay文件夹(可根据实际使用框架技术进行实际调整)。

支付接口调用原理

1、APP支付系统架构

APP支付系统架构图

2、数据校验原理

数据校验原理

应用公钥(商户自身的RSA公钥):支付宝使用该公钥验证该交易是商户发起。

支付宝公钥(支付宝的RSA公钥):商户使用该公钥验证该结果是支付宝返回的。

3、系统交互流程

系统交互流程图

4、支付场景具体实现流程(最详细图解)

在集成App支付能力时,建议实现如下支付流程,创建订单并支付,根据返回的结果确定支付状态,并进行相应的异常处理,其过程如下图所示.

支付场景具体实现流程

商家APP在创建订单并且唤起支付宝APP支付,流程如上图所示,根据第2.2,3步返回的支付结果,确定支付状态,并且做相应的异常处理(必要时关闭订单)

代码实现

步骤1:商户APP端请求商户服务器接口,提交订单数据。

步骤2:商户服务器端接收数据,然后对数据进行签名,返回请求参数到商户APP端。

官方接口文档:https://docs.open.alipay.com/204/105465/

——代码如下:

//vendor();为TP5框架的方法,作用:导入第三方框架类库

vendor('alipay.aop.AopClient');

vendor('alipay.aop.request.AlipayTradeAppPayRequest');

//实例化支付接口

$aop = new \AopClient();

$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do"; //支付宝网关

$aop->appId = “应用ID,填写你的APPID”;

$aop->rsaPrivateKey = "商户私钥,您的原始格式RSA私钥()";

$aop->alipayrsaPublicKey = "支付宝公钥";

$aop->apiVersion = '1.0';

$aop->signType = "签名方式,如 RSA2 ";

$aop->postCharset = 'UTF-8';

$aop->format = "json";

//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay

$appRequest = new \AlipayTradeAppPayRequest();

//SDK已经封装掉了公共参数,这里只需要传入业务参数

$bizcontent = json_encode([

'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=*052600090779&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=http://domain.merchant.com/payment_notify&sign_type=RSA2×tamp=2016-08-25 20:26:31&version=1.0

2)再对原始字符串进行签名

app_id=*052600090779&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=http://domain.merchant.com/payment_notify&sign_type=RSA2×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=*052600090779&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:服务端异步通知处理机制(支付宝主动发起通知,该方式才会被启用)

官方接口文档:https://docs.open.alipay.com/204/105301/

注意点:

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 = new AopClient;

$aop->alipayrsaPublicKey = '请填写支付宝公钥,一行字符串';

$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2"); //验证签名

if($flag){

//校验通知数据的正确性

$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')

exit('fail');

//校验订单的正确性

if(!empty($out_trade_no)){

//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

}

exit('fail');

}

echo"fail"; //验证签名失败

步骤5:当商户APP端接收到支付宝的同步返回结果为成功时,商户APP端再请求商户服务器端API,判断订单最终支付结果,并做出最终响应。

谁有Thinkphp做支付宝接口开发怎么做,谁有视频教程,微信有的话也要。谁有可以私聊。

选择 create_direct_pay_by_user-PHP-UTF-8 这个名称的接口文件

images文件里是支付宝相关的一些标志的图片,我们暂不管他,lib文件很重要,是整个接口的核心类文件;

alipay.config.php是相关参数的配置文件

alipayapi.php 是支付宝接口入口文件

notify_url.php 是服务器异步通知页面文件;

return_url.php 是页面跳转同步通知文件;追问有没有视频啊

怎样用PHP进行支付宝手机网站支付开发

php进行支付开发,你可以看看官方提供的开发文档和案例,一般要企业账户的,demo很简单的,测试一下,主要是回调和判断是否成功。

  • 本文相关:
  • php5.2的curl-bug 服务器被php进程卡死问题排查
  • PHP简单创建压缩图的方法
  • php处理单文件、多文件上传代码分享
  • PHP中explode函数和split函数的区别小结
  • PHP页面间传递值和保持值的方法
  • PHP sleep()函数, usleep()函数
  • PHP中利用sleep函数实现定时执行功能实现代码
  • PHP 输出缓冲控制(Output Control)详解
  • php 输入输出流详解及示例代码
  • php 的反射详解及示例代码
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved