注,我这里用的是 ThinkCmf5.0 与 Thinkphp5.0 有微小的差异,我会标注出来

1、先去支付宝官网把Demo 下载了,然后打开根目录中的“config.php”,把里面的参数填写,然后上传到extent目录,我起文件夹名为 "wapPay"

2.第二步进入支付宝开发者中心,把相关开发设置的参数填了

3、前端 HTML 代码

订单支付

订单总金额¥{$order_price}

付款方式

4、PHP 代码

// 调起支付宝支付

public function baoPay(){undefined

$order_id = $this->request->param('order_id');

$order_info = Db::name("server_order")

->alias('a')

->join('shop_server b','a.server_id = b.s_id')

->where(['a.o_id'=>$order_id])

->field('a.order_price,a.order_num,b.s_name')

->find();

// 引入支付宝第三方sdk类库 Thinkphp5.0 用 Loader::import() 引入

import('wapPay.wappay.service.AlipayTradeService',EXTEND_PATH);

import('wapPay.wappay.buildermodel.AlipayTradeWapPayContentBuilder',EXTEND_PATH);

$config = array (

//应用ID,您的APPID。

'app_id' => "202321XXXXXX",

//商户私钥,您的原始格式RSA私钥 自己用官方给的程序生成的

'merchant_private_key' => "MIIEow**************",

//异步通知地址

'notify_url' => "http://你的网址
/simplewind/extend/wapPay/notify_url.php",

//同步跳转

'return_url' => "http://你的网址
/public/portal/Order/return_url.html",

//编码格式

'charset' => "UTF-8",

//签名方式

'sign_type'=>"RSA2",

//支付宝网关

'gatewayUrl' => "https://openapi.alipay.com/gateway.do",

//支付宝公钥,查看地址:
https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。这个不是自己生成的,是系统给的

'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEF****************AAOCAQ8AMIIBCgKCAQEAkMV",

);

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

$out_trade_no = $order_info['order_num'];

//订单名称,必填

$subject = $order_info['s_name'];

//付款金额,必须填

$total_amount = $order_info['order_price'];

//商品描述,可空

$body = '';

//超时时间

$timeout_express="1m";

$payRequestBuilder = new \AlipayTradeWapPayContentBuilder();

$payRequestBuilder->setBody($body); // 商品描述

$payRequestBuilder->setSubject($subject); // 订单名称

$payRequestBuilder->setOutTradeNo($out_trade_no); // 订单号

$payRequestBuilder->setTotalAmount($total_amount); // 付款金额

$payRequestBuilder->setTimeExpress($timeout_express); // 超时时间

$payResponse = new \AlipayTradeService($config);

$result = $payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);

return ;

}

// 支付宝授权回调函数

public function return_url(){undefined

// 引入支付宝第三方sdk类库

import('wapPay.wappay.service.AlipayTradeService',EXTEND_PATH);

$config = array (

//应用ID,您的APPID。

'app_id' => "2023030702332023",

//商户私钥,您的原始格式RSA私钥

'merchant_private_key' => "MIIEowIBAAKC******************AQEAwS/mYtS",

//异步通知地址

'notify_url' => "http://你的网址
/simplewind/extend/wapPay/notify_url.php",

//同步跳转

'return_url' => "http://你的网址
/public/portal/Order/return_url.html",

//编码格式

'charset' => "UTF-8",

//签名方式

'sign_type'=>"RSA2",

//支付宝网关

'gatewayUrl' => "https://openapi.alipay.com/gateway.do",

//支付宝公钥, 非自己生成 查看地址:
https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。

'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEF****************AAOCAQ8AMIIBCgKCAQEAkMV",

);

$arr=$_GET;

$alipaySevice = new \AlipayTradeService($config);

$result = $alipaySevice->check($arr);

/* 实际验证过程建议商户添加以下校验。

1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,

2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),

3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)

4、验证app_id是否为该商户本身。

*/

if($result) { //验证成功

//商户订单号

$out_trade_no = $arr['out_trade_no'];

//支付宝交易号

$trade_no = $arr['trade_no'];

//交易状态

//$trade_status = $arr['trade_status'];

//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

//请在这里加上商户的业务逻辑程序代码

Db::name("server_order")->where(['order_num'=>$out_trade_no])->update(['is_pay'=>1,'is_del'=>0]);

echo "success"; //请不要修改或删除

return $this->redirect('Order/payform');

}else {undefined

//验证失败

echo "fail"; //请不要修改或删除

}

}