资讯专栏INFORMATION COLUMN

PHP接入支付宝 即时到帐接口

stormgens / 535人阅读

摘要:如果还不知道如何签约,请查看支付宝即时到帐签约教程完成签约后,需要把项目导入自己的项目中安装方法,请参考项目简介。跳转支付宝通过上一步返回的是请求支付宝的。本次支付宝的即时到帐接口到这里就完成了调用。

payment 项目2.0版本

特别声明:

以下文档均针对 payment 2.0 以上版本,并且PHP需要5.5以上(含)。
代码中所有编码均使用 utf-8 。

通过几天的时间,终于把payment 2.0的基本结构搭好了。今天刚完成支付宝 即时到帐 接口的开发。赶紧把使用文档给补上。请大家一定仔细查看文档,实在还不行就来问我吧!(我期待你问我,反正我收钱的,哈哈)

即时到帐 接口签约

在你使用这个接口时,请先确认你是否在支付宝商户中心签约了该接口。

在商户中心,看到 即时到帐(已添加),说明你已签约该接口,可正常使用。如果还不知道如何签约,请 查看支付宝即时到帐签约教程

OK!完成签约后,

需要把 payment项目导入自己的项目中 安装方法,请参考Payment项目简介。

调用示例

在项目的 examples 文件夹中,我已提供完整的示例。为了便于大家理解,这里对代码再进行说明。

支付宝的配置文件

在1.x版本中,配置文件被固定写在了sdk中,这种做法太流氓了。为了不继续流氓下去,在2.x版本中,将配置信息独立出来,让大家可以根据自己的实际情况自定义,灵活程度大大增加。

调用时,仅需要提供给我如下的一个数组,至于配置信息写在哪里,完全由你自己决定。

我在示例中,是将配置信息写在 examples/aliconfig.php 中,然后使用 require_once 包含进来。你完全可以写cache中、db中。

return [
    "partner"   => "2088xxxxxxxxxxx",
    "md5_key"   => "xxxxxxxxxxxxxxxxxx",
    "rsa_private_key"   => "./rsa_private_key.pem",
    "notify_url"    => "http://test.helei.com/pay-notify.html",
    "return_url"    => "http://test.helei.com/return-url.html",
    "time_expire"    => "14",
];

参数介绍

参数 参数名 参数说明 是否必须
partner 合作者身份ID 签约的支付宝账号对应的支付宝唯一用户号。以2088开头的16位纯数字组成。 必须
md5_key MD5密钥 点击这里 必须
rsa_private_key RSA私钥 点击这里 必须
notify_url 服务器异步通知URI 支付宝服务器主动通知商户网站里指定的页面http路径。(建议使用https) 可选
return_url 页面跳转同步通知页面路径 支付宝处理完请求后,当前页面自动跳转到商户网站里指定页面的http路径。 可选
time_expire 超时时间 设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。单位默认为分钟 可选

特别说明:

如果上述配置文件必须的key的值为空,会抛出 PayException 异常

如果 notify_url 为空,虽然可支付成功,但是客户端将无法收到支付宝的回调结果。

建议采用https协议

调用支付

项目中的示例代码,参见 examples/charge.php

//  生成订单号 便于测试
function createPayid()
{
    return date("Ymdhis", time())
            .substr(floor(microtime()*1000),0,1)
            .rand(0,9);
}

// 订单信息
$orderData = [
    "orderTradeNo"    => createPayid(),
    "totalFee"    => "1",
    "clientIp"    => "127.0.0.1",
    "subject"    => "我是即时到帐",
    "body"    => "支付测试即时到帐接口",
    "extraCommonParam"    => "",
];

$aliconfig = require_once __DIR__ . "/aliconfig.php";


// 实例化支付环境类,进行支付创建
$charge = new ChargeContext();

try {
    $charge->initCharge(Config::ALI_CHANNEL_WEB, $aliconfig);
    $url = $charge->charge($payData);
} catch (PayException $e) {
    echo $e->errorMessage();exit;
}

// 请求alipay
header("Location:{$url}");

以上代码就完成了即时到帐的全部调用,下面分步骤来说明下代码含义:

订单信息

此部分的key部分,必须采用以下值,否则SDK无法识别。

// createPayid(); 函数是为了演示方便,随手写的一个生成订单号的函数

$orderData = [
    "order_no"    => createPayid(),
    "amount"    => "1",// 单位为元
    "client_ip"    => "127.0.0.1",
    "subject"    => "测试支付",
    "body"    => "支付接口测试",
    "extra_param"    => "",
];

参数说明

参数 参数名 参数说明 是否必须
order_no 订单号 平台根据规则生成的订单号,最长64位,要在商户数据库中唯一 必须
amount 交易总金额 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 必须
client_ip 客户端IP 用户在创建交易时,该用户当前所使用机器的IP。 必须
subject 商品名称 商品的标题/交易标题/订单标题/订单关键字等。该参数最长为128个汉字。 必须
body 商品描述 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 必须
extra_param 公用回传参数 如果用户请求时传递了该参数,则返回给商户时会回传该参数。 可选

签名数据

以下是真正实现数据签名的地方,返回的数据可直接用于发起支付宝支付。大家可以对比下支付宝自身信息,是不是已经大大简化了?
当然简化带来的另外一个意思就是:放弃了很多我们正常情况下用不到的功能,比如:花呗分期

// 实例化支付环境类,进行支付创建
$charge = new ChargeContext();

try {
    $charge->initCharge(Config::ALI_CHANNEL_WEB, $aliconfig);
    $url = $charge->charge($payData);
} catch (PayException $e) {
    echo $e->errorMessage();exit;
}

这里对于调用者,仅仅需要知道 ChargeContext 这一个类,这里使用了 策略模式 + 简单工厂模式 两种方法来进行调用的简化。这种方式也非常方便后期进行扩展,对于客户端与复杂的逻辑进行了隔离。

跳转支付宝

通过上一步返回的是请求支付宝的url。由于在页面上可能需要通过js调用支付宝或者还有其他逻辑,因为我并没有直接重定向到支付宝,而把控制权交到了客户端手中。

以下代码,示例的是简单的利用返回的url,重定向到支付宝,完成支付。

header("Location:{$url}");

本次支付宝的即时到帐接口到这里就完成了调用。下一节把回调通知部分完成,这样一个基本的支付流程就完成了。

技术支持

如果需要协助集成到项目,可付费获得我的服务!

微信:helei543345

邮箱: dayugog@gmail.com

支持我:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21014.html

相关文章

  • PHP接入支付手机网站支付、移动支付接口

    摘要:目前常量的含义及时到账接口,主要用于网站支付手机网站支付接口,主要用于手机浏览器移动支付接口,主要用于原生调用方式非常统一,传入的参数也被最大程度的统一化。 payment 项目2.0版本 前面已经说完了 PHP接入支付宝 即时到帐接口 回调接口也已经完成。这篇主要讲 手机网站支付 、 移动支付 接口的调用。调用方式与即时到帐 基本一样。 关于代码部分的详细解释,请 参看 PHP接入...

    xzavier 评论0 收藏0
  • PHP接入支付接口实现打赏功能并记录打赏信息及订单

    摘要:接入支付宝接口实现打赏功能并记录打赏信息及订单,这样网站可以统计打赏的用户信息,并对打赏多的文章根据收入进行热门排行。 PHP接入支付宝接口实现打赏功能并记录打赏信息及订单,这样网站可以统计打赏的用户信息,并对打赏多的文章根据收入进行热门排行。 一、需求 网站需要实现文章打赏功能,这样更能增加博主写博客的动力。 二、打赏方式 目前实现打赏的功能有两种方式: 第一种是直接贴个博主的支付...

    willin 评论0 收藏0
  • 个人支付h5支付源码!即时到帐!不用申请接口也可以开发支付支付

    摘要:首页收款页面后台管理服务端软件源码打包下载开发包作者补充上面已经失效了下面是新的个人免签约支付宝微信支付解决方案 首页 showImg(https://segmentfault.com/img/bVbcCCl?w=389&h=244); 收款页面 showImg(https://segmentfault.com/img/bVbcCCo?w=643&h=710); 后台管理 showIm...

    Jaden 评论0 收藏0
  • 微信支付个人免签约即时到帐接口开发附demo

    摘要:支付界面扫码界面支付成功后可以跳转到你程序指定的地址手机版支付宝支付演示源码安装使用教程学习交流微信 支付界面: showImg(https://segmentfault.com/img/bVbh0HO?w=451&h=394); 扫码界面: showImg(https://segmentfault.com/img/bVbh0HW?w=653&h=634); 支付成功后可以跳转到你程序...

    red_bricks 评论0 收藏0
  • 不用申请服务号就可以开发微信支付/支付/QQ钱包支付!附:直接可用的代码+demo

    摘要:我们知道,开发微信支付需要申请服务号并且需要一系列的资料才可以开通。怪麻烦的,现在我们可以用第三方开放的免签约微信支付接口,支付宝接口和钱包接口,实现实时到帐的微信支付开发。 我们知道,开发微信支付需要申请服务号并且需要一系列的资料才可以开通。怪麻烦的,现在我们可以用第三方开放的免签约微信支付接口,支付宝接口和QQ钱包接口,实现实时到帐的微信支付开发。 我们只需要在第三方的微信支付免签...

    Zhuxy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<