日志最近使用支付宝网页充值功能,记录下使用的过程,用的是php yii框架。因为时间紧,文档没有详细的看过,按照给的例子直接移过来使用,后续了解深入了可以完善。

1、文档的地址https://docs.open.alipay.com/203,可以直接下载php版本的支付宝文件。

2、把下载下来的文件放到项目vendor下面,新建alipay文件,把一下文件复制过去。

android 支付宝 网页支付 设置 支付宝网页付款_php

把.DS_Store的文件删除掉,其余的可以不用修改。再在新的项目中添加一个配置文件,配置app_id,公钥,私钥,异步和同步地址等。可以写在config文件夹中如下:

android 支付宝 网页支付 设置 支付宝网页付款_支付宝_02

在params文件中引入alipay.php,然后复制给一个参数

android 支付宝 网页支付 设置 支付宝网页付款_支付宝_03

这样访问alipay_config就可以访问到配置的公钥,私钥,同步异步地址,app_id等信息,格式如下:

android 支付宝 网页支付 设置 支付宝网页付款_配置信息_04

Controller和view页面按照正常的流程创建,渲染。调用ali支付的时候写一个AlipayController文件,来处理阿里的回调函数等。

<?php 
namespace app\modules\webpay\controllers;

use Yii;
use yii\db\Query;
use yii\filters\AccessControl;
use yii\filters\VerbFilter;
use yii\web\Controller;
use app\models\Curl;

require_once Yii::$app->basePath."/vendor/alipay/wappay/buildermodel/AlipayTradeWapPayContentBuilder.php";
require_once Yii::$app->basePath."/vendor/alipay/wappay/service/AlipayTradeService.php";

?>

首先要引入阿里的文件,一个是服务器处理一个是网页支付 主要代码如下

<?php
/**
     * 支付宝
     */
    public function Zhifubao($data){
        //实例化Builder对象
        $alipay = new \AlipayTradeWapPayContentBuilder();

        //商品描述,可空
        $order_desc = "充值";
        //订单名称,必填
        $order_name = "充值";
        //商户订单号,商户网站订单系统中唯一订单号,必填
        //$order_id = date("YmdHis",time()).$serid;
        $order_id = $data['order_id'];
        //付款金额,必填
        $order_amount = $data['money'];
        //超时时间
        $order_timeout = "1m";

        //给Builder对象赋值
        $alipay->setBody($order_desc);
        $alipay->setSubject($order_name);
        $alipay->setOutTradeNo($order_id);
        $alipay->setTotalAmount($order_amount);
        $alipay->setTimeExpress($order_timeout);

        //配置信息
        $config = Yii::$app->params['alipay_config'];

        //实例化service对象,需传入配置信息
        $serverObj = new \AlipayTradeService($config);
        //执行支付
        $result = $serverObj->wapPay($alipay,$config['return_url'],$config['notify_url']);

        return;

    }

?>

这样就可以调起支付宝页面。前提是配置一定要配置好,接下来就是异步处理函数和同步函数处理的逻辑。

注:放到线上ngnix服务器,出现的意外事件

android 支付宝 网页支付 设置 支付宝网页付款_php_05

默认的日志路径没权利写,解决办法:修改路径,写一个有权限的路径文件。

异步处理有一个支付宝验证函数,可以验证是否是本人支付

<?php
 //异步通知
    public function actionNotifyinfo(){
        $data = Yii::$app->request->post();
        //配置信息
        $config = Yii::$app->params['alipay_config'];
        //实例化service对象,需传入配置信息
        $serverObj = new \AlipayTradeService($config);
        //验证是否为支付宝返回结果
        $rst = $serverObj->check($data);
        if ($rst){   
            //处理逻辑
            echo "success";
        }else{
            echo "fail";
        }
    }
?>

以上这些都是网页充值流程,有空以后完善。知其然也要知其所以然。。。。欢迎各位前来拍砖。