Wappay.php
2.3 KB
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
<?php
namespace alipay;
use think\Loader;
Loader::import('alipay.pay.service.AlipayWapPayTradeService');
loader::import('alipay.pay.buildermodel.AlipayTradeWapPayContentBuilder');
/**
* 支付宝手机网站支付接口
*
* 用法:
* 调用 \alipay\Wappay::pay($params) 即可
*
* ----------------- 求职 ------------------
* 姓名: zhangchaojie 邮箱: zhangchaojie_php@qq.com 应届生
* 期望职位: PHP初级工程师 地点: 深圳(其他城市亦可)
* 能力:
* 1.熟悉小程序开发, 前后端皆可
* 2.后端, PHP基础知识扎实, 熟悉ThinkPHP5框架, 用TP5做过CMS, 商城, API接口
* 3.MySQL, Linux都在进行进一步学习
*
*/
class Wappay
{
/**
* 主入口
* @param array $params 支付参数, 具体如下
* @param string $params['subject'] 订单标题
* @param string $params['out_trade_no'] 订单商户号
* @param float $params['total_amount'] 订单金额
*/
public static function pay($params)
{
// 1.校检参数
self::checkParams($params);
// 2.构造参数
$payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
$payRequestBuilder->setSubject($params['subject']);
$payRequestBuilder->setOutTradeNo($params['out_trade_no']);
$payRequestBuilder->setTotalAmount($params['total_amount']);
$payRequestBuilder->setTimeExpress('1m');
// 3.获取配置
$config = config('alipay');
$payResponse = new \AlipayWapPayTradeService($config);
// 4.进行请求
$result=$payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
}
/**
* 校检参数
*/
private static function checkParams($params)
{
if (empty(trim($params['out_trade_no']))) {
self::processError('商户订单号(out_trade_no)必填');
}
if (empty(trim($params['subject']))) {
self::processError('商品标题(subject)必填');
}
if (floatval(trim($params['total_amount'])) <= 0) {
self::processError('退款金额(total_amount)为大于0的数');
}
}
/**
* 统一错误处理接口
* @param string $msg 错误描述
*/
private static function processError($msg)
{
throw new \think\Exception($msg);
}
}