PHP实现支付宝即时到账功能

2025-05-29 0 44

本文实例为大家分享了php支付宝即时到账功能的实现代码,供大家参考,具体内容如下

首先需要下载即时到账交易接口,传送门https://doc.open.alipay.com/doc2/detail?treeid=62&articleid=103566&doctype=1

选择(create_direct_pay_by_user)

然后解压,选择md5签名版本的文件

此文件夹里有个叫create_direct_pay_by_user-php-utf-8的文件,我们就用这个文件~

接着打开文件后如图

PHP实现支付宝即时到账功能

并把文件夹lib里面的四个php文件重命名

alipay_core.function.php重命名为:corefunction.php;

alipay_md5.function.php重命名为:md5function.php;

alipay_notify.class.php重命名为:notify.php;

alipay_submit.class.php重命名为:submit.php;

最后在thinkphp\\library\\vendor目录下新建文件夹命名为alipay,把以上四个php文件复制进去如图所示

PHP实现支付宝即时到账功能

然后,打开submit.php文件,把以下代码去掉;

require_once("alipay_core.function.php");
require_once("alipay_md5.function.php");

同样,打开notify.php文件,把以下两段代码去掉;

require_once("alipay_core.function.php");
require_once("alipay_md5.function.php");

接下来可以写代码了(注意img文件夹里的图片地址需要修改)

html代码:(这个代码其实就是index里面的代码,复制如下)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353
<!doctype html>

<html lang="en">

<head>

<meta charset="utf-8">

<title>支付宝即时到账交易接口</title>

</head>

<style>

html,body {

width:100%;

min-width:1200px;

height:auto;

padding:0;

margin:0;

font-family:"微软雅黑";

background-color:#242736

}

.header {

width:100%;

margin:0 auto;

height:230px;

background-color:#fff

}

.container {

width:100%;

min-width:100px;

height:auto

}

.black {

background-color:#242736

}

.blue {

background-color:#0ae

}

.qrcode {

width:1200px;

margin:0 auto;

height:30px;

background-color:#242736

}

.littlecode {

width:16px;

height:16px;

margin-top:6px;

cursor:pointer;

float:right

}

.showqrs {

top:30px;

position:absolute;

width:100px;

margin-left:-65px;

height:160px;

display:none

}

.shtoparrow {

width:0;

height:0;

margin-left:65px;

border-left:8px solid transparent;

border-right:8px solid transparent;

border-bottom:8px solid #e7e8eb;

margin-bottom:0;

font-size:0;

line-height:0

}

.guanzhuqr {

text-align:center;

background-color:#e7e8eb;

border:1px solid #e7e8eb

}

.guanzhuqr img {

margin-top:10px;

width:80px

}

.shmsg {

margin-left:10px;

width:80px;

height:16px;

line-height:16px;

font-size:12px;

color:#242323;

text-align:center

}

.nav {

width:1200px;

margin:0 auto;

height:70px;

}

.open,.logo {

display:block;

float:left;

height:40px;

width:85px;

margin-top:20px

}

.divier {

display:block;

float:left;

margin-left:20px;

margin-right:20px;

margin-top:23px;

width:1px;

height:24px;

background-color:#d3d3d3

}

.open {

line-height:30px;

font-size:20px;

text-decoration:none;

color:#1a1a1a

}

.navbar {

float:right;

width:200px;

height:40px;

margin-top:15px;

list-style:none

}

.navbar li {

float:left;

width:100px;

height:40px

}

.navbar li a {

display:inline-block;

width:100px;

height:40px;

line-height:40px;

font-size:16px;

color:#1a1a1a;

text-decoration:none;

text-align:center

}

.navbar li a:hover {

color:#00aaee

}

.title {

width:1200px;

margin:0 auto;

height:80px;

line-height:80px;

font-size:20px;

color:#fff

}

.content {

width:100%;

min-width:1200px;

height:660px;

background-color:#fff;

}

.alipayform {

width:800px;

margin:0 auto;

height:600px;

border:1px solid #0ae

}

.element {

width:600px;

height:80px;

margin-left:100px;

font-size:20px

}

.etitle,.einput {

float:left;

height:26px

}

.etitle {

width:150px;

line-height:26px;

text-align:right

}

.einput {

width:200px;

margin-left:20px

}

.einput input {

width:398px;

height:24px;

border:1px solid #0ae;

font-size:16px

}

.mark {

margin-top: 10px;

width:500px;

height:30px;

margin-left:80px;

line-height:30px;

font-size:12px;

color:#999

}

.legend {

margin-left:100px;

font-size:24px

}

.alisubmit {

width:400px;

height:40px;

border:0;

background-color:#0ae;

font-size:16px;

color:#fff;

cursor:pointer;

margin-left:170px

}

.footer {

width:100%;

height:120px;

background-color:#242735

}

.footer-sub a,span {

color:#808080;

font-size:12px;

text-decoration:none

}

.footer-sub a:hover {

color:#00aeee

}

.footer-sub span {

margin:0 3px

}

.footer-sub {

padding-top:40px;

height:20px;

width:600px;

margin:0 auto;

text-align:center

}

</style>

<body>

<div class="header">

<div class="container black">

<div class="qrcode">

<div class="littlecode">

<img width="16px" src="img/little_qrcode.jpg" id="licode">

<div class="showqrs" id="showqrs">

<div class="shtoparrow"></div>

<div class="guanzhuqr">

<img src="img/guanzhu_qrcode.png" width="80">

<div class="shmsg" style="margin-top:5px;">

请扫码关注

</div>

<div class="shmsg" style="margin-bottom:5px;">

接收重要信息

</div>

</div>

</div>

</div>

</div>

</div>

<div class="container">

<div class="nav">

<a href="https://www.alipay.com/" class="logo"><img src="img/alipay_logo.png" height="30px"></a>

<span class="divier"></span>

<a href="http://open.alipay.com/platform/home.htm" class="open" target="_blank">开放平台</a>

<ul class="navbar">

<li><a href="https://doc.open.alipay.com/doc2/detail?treeid=62&articleid=103566&doctype=1" target="_blank">在线文档</a></li>

<li><a href="https://cschannel.alipay.com/portal.htm?sourceid=213" target="_blank">技术支持</a></li>

</ul>

</div>

</div>

<div class="container blue">

<div class="title">支付宝即时到账(create_direct_pay_by_user)</div>

</div>

</div>

<div class="content">

<form action="{:u('home/pay/alipayapi')}" class="alipayform" method="post" target="_blank">

<div class="element" style="margin-top:60px;">

<div class="legend">支付宝即时到账交易接口快速通道 </div>

</div>

<div class="element">

<div class="etitle">商户订单号:</div>

<div class="einput"><input type="text" name="widout_trade_no" id="out_trade_no"></div>

<br>

<div class="mark">注意:商户订单号(out_trade_no).必填(建议是英文字母和数字,不能含有特殊字符)</div>

</div>

<div class="element">

<div class="etitle">商品名称:</div>

<div class="einput"><input type="text" name="widsubject" value="test商品123"></div>

<br>

<div class="mark">注意:产品名称(subject),必填(建议中文,英文,数字,不能含有特殊字符)</div>

</div>

<div class="element">

<div class="etitle">付款金额:</div>

<div class="einput"><input type="text" name="widtotal_fee" value="0.01"></div>

<br>

<div class="mark">注意:付款金额(total_fee),必填(格式如:1.00,请精确到分)</div>

</div>

<div class="element">

<div class="etitle">商品描述:</div>

<div class="einput"><input type="text" name="widbody" value="即时到账测试"></div>

<br>

<div class="mark">注意:商品描述(body),选填(建议中文,英文,数字,不能含有特殊字符)</div>

</div>

<div class="element">

<input type="submit" class="alisubmit" value ="确认支付">

</div>

</form>

</div>

<div class="footer">

<p class="footer-sub">

<a href="http://ab.alipay.com/i/index.htm" target="_blank">关于支付宝</a><span>|</span>

<a href="https://e.alipay.com/index.htm" target="_blank">商家中心</a><span>|</span>

<a href="https://job.alibaba.com/zhaopin/index.htm" target="_blank">诚征英才</a><span>|</span>

<a href="http://ab.alipay.com/i/lianxi.htm" target="_blank">联系我们</a><span>|</span>

<a href="#" id="international" target="_blank">internationalbusiness</a><span>|</span>

<a href="http://ab.alipay.com/i/jieshao.htm#en" target="_blank">about alipay</a>

<br>

<span>支付宝版权所有</span>

<span class="footer-date">2004-2016</span>

<span><a href="http://fun.alipay.com/certificate/jyxkz.htm" target="_blank">icp证:沪b2-20150087</a></span>

</p>

</div>

</body>

<script>

var even = document.getelementbyid("licode");

var showqrs = document.getelementbyid("showqrs");

even.onmouseover = function(){

showqrs.style.display = "block";

}

even.onmouseleave = function(){

showqrs.style.display = "none";

}

var out_trade_no = document.getelementbyid("out_trade_no");

//设定时间格式化函数

date.prototype.format = function (format) {

var args = {

"m+": this.getmonth() + 1,

"d+": this.getdate(),

"h+": this.gethours(),

"m+": this.getminutes(),

"s+": this.getseconds(),

};

if (/(y+)/.test(format))

format = format.replace(regexp.$1, (this.getfullyear() + "").substr(4 - regexp.$1.length));

for (var i in args) {

var n = args[i];

if (new regexp("(" + i + ")").test(format))

format = format.replace(regexp.$1, regexp.$1.length == 1 ? n : ("00" + n).substr(("" + n).length));

}

return format;

};

out_trade_no.value = 'test'+ new date().format("yyyymmddhhmmss");

</script>

</html>

php控制代码(其实就是把alipay.config和alipayapi代码集合在一起)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115
<?php

/**

* created by phpstorm.

* user: administrator

* date: 2016/12/7 0007

* time: 下午 3:30

*/

namespace home\\controller;

use think\\controller;

use vendor\\alidayu;

class paycontroller extends controller

{

public function alipayapi() {

vendor('alipay.corefunction');

vendor('alipay.md5function');

vendor('alipay.notify');

vendor('alipay.submit');

/***************************请求参数******************************************/

//商户订单号,商户网站订单系统中唯一订单号,必填

$out_trade_no = $_post['widout_trade_no'];

//订单名称,必填

$subject = $_post['widsubject'];

//付款金额,必填

$total_fee = $_post['widtotal_fee'];

//商品描述,可空

$body = $_post['widbody'];

/*******************************构造配置来自alipay.config******************************************/

//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

//合作身份者id,签约账号,以2088开头由16位纯数字组成的字符串,查看地址:https://b.alipay.com/order/pidandkey.htm

$alipay_config['partner'] = '*******需要申请id*****';//商户id

//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号

$alipay_config['seller_id'] = $alipay_config['partner'];

// md5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidandkey.htm

$alipay_config['key'] = '******需要申请key*********'; //商户key

// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类2088421713316394自定义参数,必须外网可以正常访问

$alipay_config['notify_url'] = "http://商户网址/create_direct_pay_by_user-php-utf-8/notify_url.php";

// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问

$alipay_config['return_url'] = "http://商户网址/create_direct_pay_by_user-php-utf-8/return_url.php";

//签名方式

$alipay_config['sign_type'] = strtoupper('md5');

//字符编码格式 目前支持 gbk 或 utf-8

$alipay_config['input_charset']= strtolower('utf-8');

//ca证书路径地址,用于curl中ssl校验

//请保证cacert.pem文件在当前文件夹目录中

$alipay_config['cacert'] = getcwd().'\\\\cacert.pem';

//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http

$alipay_config['transport'] = 'http';

// 支付类型 ,无需修改

$alipay_config['payment_type'] = "1";

// 产品类型,无需修改

$alipay_config['service'] = "create_direct_pay_by_user";

//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

//↓↓↓↓↓↓↓↓↓↓ 请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

// 防钓鱼时间戳 若要使用请调用类文件submit中的query_timestamp函数

$alipay_config['anti_phishing_key'] = "";

// 客户端的ip地址 非局域网的外网ip地址,如:221.0.0.1

$alipay_config['exter_invoke_ip'] = "";

//↑↑↑↑↑↑↑↑↑↑请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

/****************************************************************************/

//构造要请求的参数数组,无需改动

$parameter = array(

"service" => $alipay_config['service'],

"partner" => $alipay_config['partner'],

"seller_id" => $alipay_config['seller_id'],

"payment_type" => $alipay_config['payment_type'],

"notify_url" => $alipay_config['notify_url'],

"return_url" => $alipay_config['return_url'],

"anti_phishing_key"=>$alipay_config['anti_phishing_key'],

"exter_invoke_ip"=>$alipay_config['exter_invoke_ip'],

"out_trade_no" => $out_trade_no,

"subject" => $subject,

"total_fee" => $total_fee,

"body" => $body,

"_input_charset" => trim(strtolower($alipay_config['input_charset']))

//其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.kix33i&treeid=62&articleid=103740&doctype=1

//如"参数名"=>"参数值"

);

//建立请求

$alipaysubmit = new \\alipaysubmit($alipay_config);

$html_text = $alipaysubmit->buildrequestform($parameter,"get", "确认");

echo $html_text;

}

}

然后结果如图

PHP实现支付宝即时到账功能

确认支付后可能会出现支付宝错误代码 illegal_partner

那是因为没有配置

?

1

2

3

4

5

6

7
$alipay_config['partner'] = '*******需要申请id*****';//商户id

//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号

$alipay_config['seller_id'] = $alipay_config['partner'];

// md5密钥,安全检验码,由数字和字母组成的32位字符串,

//查看地址:https://b.alipay.com/order/pidandkey.htm

$alipay_config['key'] = '******需要申请key*********'; //商户key

id和key需要公司申请,个人是没法申请的。
谢谢观看~

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP实现支付宝即时到账功能 https://www.kuaiidc.com/95205.html

相关文章

发表评论
暂无评论