tp5之 支付宝wappay手机网站支付

沙箱环境 支付(当面付教程),参考下面这个可以配置环境

https://blog.csdn.net/a639735331/article/details/92847337

支付宝支付 沙箱

https://blog.csdn.net/YuiJar/article/details/80290511

沙箱资料,有沙箱账号密码

https://openhome.alipay.com/platform/appDaily.htm 
https://openhome.alipay.com/platform/appDaily.htm?tab=account   沙箱账号
https://openhome.alipay.com/platform/appDaily.htm?tab=info
https://docs.open.alipay.com/api_1_vip/alipay.trade.pay

参考下面这个可以做 wappay 的支付

ThinkPHP5.0集成支付宝扫码支付(PC端)
https://blog.csdn.net/msllws/article/details/84334127   	简洁

TP5.0.X 支付宝支付(官方demo)
http://www.thinkphp.cn/code/4180.html          				简洁

tp5整合支付宝微信扫码支付

http://www.thinkphp.cn/topic/65990.html

PHP Thinkphp 支付宝当面付2.0代码

https://blog.csdn.net/weixin_40896800/article/details/81563758

支付宝当面付与网页支付,一个php文件搞定

https://blog.csdn.net/qq_21761149/article/details/84502416

如何在tp5中引入支付宝支付demo中的config文件

https://blog.csdn.net/haibo0668/article/details/81098467

我的 1

1 下载demo放在vendor下,重命名为alipay
2 配置config,在application/config.php里公共配置

 'alipay' => [   

    //APPID。
    'app_id' => "",
 
    //商户私钥
    'merchant_private_key' => "",
    
    //异步通知地址
    'notify_url' => "https://www.oyhdo.com/alipay/alinotify",
    
    //同步跳转
    'return_url' => "https://www.oyhdo.com/alipay/alinotify",
 
    //编码格式
    'charset' => "UTF-8",
 
    //签名方式
    'sign_type'=>'RSA2',
 
    //支付宝网关 (我使用的沙箱环境)
    'gatewayUrl' => "https://openapi.alipaydev.com/gateway.do",
 
    //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    'alipay_public_key' => "",

    
],

3

<?php
namespace app\admin\controller;

use think\Controller;
use app\index\controller\Commen;  
use think\Session;
use think\Db;
use think\Request;

class Alipay extends Commen
{
	public function index()
	{
        header("Content-type:text/html;charset=utf-8");
        
        $total_amount = input('post.total_amount');
        if($total_amount){
           
            //商户订单号,商户网站订单系统中唯一订单号,必填
            $out_trade_no = input('post.out_trade_no');
 
            //订单名称,必填
            $subject = input('post.goods_name');
 
            //付款金额,必填
            $total_amount = $total_amount;
 
            //商品描述,可空
            $body = input('post.goods_body');
            
            //引入支付宝支付
            vendor('alipay.wappay.service.AlipayTradeService');
    		vendor('alipay.wappay.buildermodel.AlipayTradeWapPayContentBuilder');
    		
            //构造参数
            $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
            $payRequestBuilder->setBody($body);
            $payRequestBuilder->setSubject($subject);
            $payRequestBuilder->setTotalAmount($total_amount);
            $payRequestBuilder->setOutTradeNo($out_trade_no);

			$config = config('alipay');    // 我配置在了app/config中
			
            //电脑网站支付请求
            $aop = new \AlipayTradeService($config);
            $response = $aop->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
 
            //输出表单
            var_dump($response);
        }else{
            $out_trade_no = 'ALPAY'.date('YmdHis'); //订单号
            $goods_name = '在线支付'; //商品名称
            $goods_body = 'test'; //商品描述
 
            $this->assign('out_trade_no',$out_trade_no);
            $this->assign('goods_name',$goods_name);
            $this->assign('goods_body',$goods_body);
            return view();
        }
    }

}

?>

页面

<!DOCTYPE html>
<html>
<head>
<title>alipay_test</title>
</head>
<body>
	<form name=alipayment action="{:url('admin/alipay/index')}" method="post" target="_blank">

	商户订单号:<input type="text" name="out_trade_no" value="{$out_trade_no}" /><br/>
	订单名称:<input type="text" name="goods_name" value="{$goods_name}"/><br/>
	付款金额:<input type="text" name="total_amount" /><br/>
	商品描述:<input type="text" name="goods_body" value="{$goods_body}"/><br/>
	<button type="submit">付 款</button>
	
	</form>
</body>
</html>

方式2,不用页面传值,直接在方法中固定,访问方法名即可

public function pay($money=0.01)
{
    vendor('alipay.wappay.service.AlipayTradeService');
    vendor('alipay.wappay.buildermodel.AlipayTradeWapPayContentBuilder');

    $order_sn = time();  // 生成订单号,这里直接取时间戳了
    /*
     * 创建支付订单,存入充值表中,大家自行处理
     * */
    $data = [
        'order_sn'  => $order_sn,
        'uid'       => '1',
        'price'     => $money,
        'status'    => 1,
        'order_time'=> date('Y-m-d H:i:s')
    ];
    // Db::name('recharge')->insert($data);
    // 请求参数设置
    $config         = config('alipay');    // 读取支付宝配置信息
    $out_trade_no   = $order_sn;        // 商户订单号,商户网站订单系统中唯一订单号,必填
    $subject        = '支付宝充值测试';    // 订单名称,必填
    $total_amount   = $money;            // 付款金额,必填
    $body           = '支付宝充值测试';  // 商品描述,可空
    // 构造参数
    $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
    $payRequestBuilder->setBody($body);
    $payRequestBuilder->setSubject($subject);
    $payRequestBuilder->setTotalAmount($total_amount);
    $payRequestBuilder->setOutTradeNo($out_trade_no);
    $aop = new \AlipayTradeService($config);
    $response = $aop->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);  // (请求参数, 同步通知地址, 异步通知地址)
    //输出表单
    var_dump($response);
}

方式3 ,传值 到 alipay 方法中,和 2 一致

http://www.thinkphp.cn/code/4180.html

$arr=[
    'WIDout_trade_no'=>订单号,
    'WIDsubject'=>'在线支付',
    'WIDtotal_amount'=>应支付金额,
    'WIDbody'=>'商品名'
];
session('order',$order);
alipay($arr, 'notify_url', 'return_url');

common中添加方法 alipay

common添加方法

function alipay($post,$notify_url,$return_url){
    $config = Config('alipay');
    $arr=[
        'app_id'=>$config['app_id'],
        'merchant_private_key'=>$config['merchant_private_key'],
        'notify_url'=>$notify_url,
        'return_url'=>$return_url,
        'charset'=>$config['charset'],
        'sign_type'=>$config['sign_type'],
        'gatewayUrl'=>$config['gatewayUrl'],
        'alipay_public_key'=>$config['alipay_public_key']
    ];
    vendor('alipay.AlipayTradeService');
    vendor('alipay.AlipayTradePagePayContentBuilder');
    $out_trade_no = trim($post['WIDout_trade_no']);
    $subject = trim($post['WIDsubject']);
    $total_amount = trim($post['WIDtotal_amount']);
    $body = trim($post['WIDbody']);
    $payRequestBuilder = new \AlipayTradePagePayContentBuilder();
    $payRequestBuilder->setBody($body);
    $payRequestBuilder->setSubject($subject);
    $payRequestBuilder->setTotalAmount($total_amount);
    $payRequestBuilder->setOutTradeNo($out_trade_no);
    $aop = new \AlipayTradeService($arr);
    $response = $aop->pagePay($payRequestBuilder, $arr['return_url'], $arr['notify_url']);
    var_dump($response);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值