laravel8+php+支付宝沙箱测试 配置沙箱环境

可以参考 yansongda网站: https://pay.yansongda.cn/docs/v2/
1.首先准备好自己支付宝开发平台,密钥,公钥,appid,支付宝网关,这些自己在平台上可以自己搞定如图所示

在这里插入图片描述
2.接着准备好laravel8项目,可以临时模拟一下,在模拟之前,首先要清楚各个目录之间的含义,这里只讲经常用到的几个目录,作为了解,具体了解可以去参看官方平台。
2.1 这个安装包去支付宝开发平台去下载。然后解压开,移动到自己项目的入口文件下,在这里插入图片描述
2.2 里面的文件目录列表 展示
在这里插入图片描述
3. 搞定完这些,接下来可以先走一遍demo,demo测试没问题后,即可以编写。运行时直接域名后面跟上/plugins/alipay/index.php 具体文件可以看图2.2 运行完之后会自动跳转,成功即可。 运行前先配置一下 配置在/plugins/alipay/config.php 如下图所示在这里插入图片描述
**5.面测试通过后即可以编写 支付页面简单编写一下,可以使用demo里的模板 **

<form name=alipayment action='/plugins/alipay/pagepay/pagepay.php' method=post target="_blank">
    <div id="body1" class="show" name="divcontent">
        <dl class="content">
            <dt>商户订单号 :</dt>
            <dd>
                <input id="WIDout_trade_no" value="{{$order['out_trade_no']}}" name="WIDout_trade_no" />
            </dd>
            <hr class="one_line">
            <dt>订单名称 :</dt>
            <dd>
                <input id="WIDsubject" value="{{$order['subject']}}" name="WIDsubject" />
            </dd>
            <hr class="one_line">
            <dt>付款金额 :</dt>
            <dd>
                <input id="WIDtotal_amount" value="{{$order['total_amount']}}" name="WIDtotal_amount" />
            </dd>
            <hr class="one_line">
            <dt>商品描述:</dt>
            <dd>
                <input id="WIDbody" value="{{$order['body']}}" name="WIDbody" />
            </dd>
            <hr class="one_line">
            <dt></dt>
            <dd id="btn-dd">
                        <span class="new-btn-login-sp">
                            <button class="new-btn-login" type="submit" style="text-align:center;">付 款</button>
                        </span>
                <span class="note-help">如果您点击“付款”按钮,即表示您同意该次的执行操作。</span>
            </dd>
        </dl>
    </div>
</form>

6.定义好异步路由和回调路由

 Route::get('pay/notify',[PayController::class,'notify'])->name('admin.pay.notify');
    //回调
    Route::get('pay/callback',[PayController::class,'callback'])->name('admin.pay.callback');

7.控制器里写上接受的参数,为了直观,先手动写上数据,渲染到要支付的页面视图 图5即是视图

  public function index(){
       $time=date('YmdHis');
       $order=[
           'out_trade_no'=>'DDE5813E296D36DD82D4A139A092E782',
           'subject'=>'海南力源信息科技有限公司',
           'total_amount'=>68888,
           'body'=>'游戏运营推广代充(天子御花园)+无需经验',
       ];
        return view('admin.pay.index',compact('order'));
    }

8.上面都执行成功后,它会自动回调,返回参数,所以我们只需要写上回调方法即可

    public function callback(Request $request){
        $data=$request->all();
        //引入第三类 也有其他引入方式 不建议这种原生的引入 支付宝平台的包有点问题,这种引入不会报错
        require_once "./plugins/alipay/config.php";
        require_once "./plugins/alipay/pagepay/service/AlipayTradeService.php";

        $alipayService=new \AlipayTradeService($config);
        $request=$alipayService->check($data);
        if ($request){
            echo "支付成功";
//            return redirect('')->with();//重定向某个页面,并给出提示
        }else{
            echo "支付失败";
//            return redirect()->withErrors();//重定向某个页面,并给出提示
        }
    }

9.第8步回调的时候,会报一个错误,Cannot redeclare Encrypt()
原因:
因为laravel框架中的Encrypt()/Decrypt()定义的加密方法和解密方法 和 alipay SDK中的Encrypt()/Decrypt()方法重名了
解决方法:
在引入的SDK中,全局搜索Encrypt()/Decrypt(),然后改个方法改名就好了,比如改成alipayEncrypt()/alipayDecrypt();
要改的文件
aop/AopEncrypt.php
aop/AopClient.php

在这里插入图片描述
如上图所示,把encrypt和decrypt加个前缀alipay即可,记得改完后用小驼峰。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Spring Boot和Vue.js应用程序中的支付宝沙箱支付代码示例: 在Spring Boot项目中: 1. 添加以下依赖: ``` <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.3.0.ALL</version> </dependency> ``` 2. 创建一个包含支付宝配置信息的类,例如: ``` @Configuration public class AlipayConfig { private String appId; private String privateKey; private String publicKey; private String notifyUrl; private String returnUrl; private String gatewayUrl; // getters and setters } ``` 3. 创建一个返回AlipayClient的方法: ``` @Bean public AlipayClient getAlipayClient() { return new DefaultAlipayClient( alipayConfig.getGatewayUrl(), alipayConfig.getAppId(), alipayConfig.getPrivateKey(), "json", "UTF-8", alipayConfig.getPublicKey(), "RSA2" ); } ``` 4. 在控制器中创建支付接口,例如: ``` @Autowired private AlipayClient alipayClient; @Autowired private AlipayConfig alipayConfig; @PostMapping("/pay") public String pay(@RequestParam String orderNo, @RequestParam String amount) throws AlipayApiException { AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); alipayRequest.setReturnUrl(alipayConfig.getReturnUrl()); alipayRequest.setNotifyUrl(alipayConfig.getNotifyUrl()); alipayRequest.setBizContent("{\"out_trade_no\":\"" + orderNo + "\"," + "\"total_amount\":\"" + amount + "\"," + "\"subject\":\"" + "测试订单" + "\"," + "\"body\":\"" + "测试订单" + "\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); String form = alipayClient.pageExecute(alipayRequest).getBody(); return form; } ``` 在Vue.js中: 1. 创建一个按钮来启动支付流程: ``` <template> <div> <button @click="pay">Pay Now</button> </div> </template> ``` 2. 在脚本部分中创建一个调用支付接口的方法: ``` <script> export default { methods: { pay() { axios.post('/api/pay', { orderNo: '123456', amount: '0.01' }) .then(response => { let form = response.data; document.write(form); // 打开支付页面 }) .catch(error => { console.log(error); }); } } } </script> ``` 请注意,以上示例只适用于测试环境,如果您想在生产环境中使用支付宝支付,您需要进行更多的测试配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值