ecshop移动端支付宝支付对接

422101-20160518141248513-277871222.png

初始页,提交基本信息到api页面,

<?php
/* *
 * 功能:支付宝手机网站支付接口接口调试入口页面
 * 版本:3.4
 * 修改日期:2016-03-08
 * 说明:
 * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 */

?>
<!DOCTYPE html>
<html>
    <head>
    <title>支付宝手机网站支付接口接口</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
    *{
        margin:0;
        padding:0;
    }
    ul,ol{
        list-style:none;
    }
    body{
        font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;
    }
    .hidden{
        display:none;
    }
    .new-btn-login-sp{
        padding: 1px;
        display: inline-block;
        width: 75%;
    }
    .new-btn-login {
        background-color: #02aaf1;
        color: #FFFFFF;
        font-weight: bold;
        border: none;
        width: 100%;
        height: 30px;
        border-radius: 5px;
        font-size: 16px;
    }
    #main{
        width:100%;
        margin:0 auto;
        font-size:14px;
    }
    .red-star{
        color:#f00;
        width:10px;
        display:inline-block;
    }
    .null-star{
        color:#fff;
    }
    .content{
        margin-top:5px;
    }
    .content dt{
        width:100px;
        display:inline-block;
        float: left;
        margin-left: 20px;
        color: #666;
        font-size: 13px;
        margin-top: 8px;
    }
    .content dd{
        margin-left:120px;
        margin-bottom:5px;
    }
    .content dd input {
        width: 85%;
        height: 28px;
        border: 0;
        -webkit-border-radius: 0;
        -webkit-appearance: none;
    }
    #foot{
        margin-top:10px;
        position: absolute;
        bottom: 15px;
        width: 100%;
    }
    .foot-ul{
        width: 100%;
    }
    .foot-ul li {
        width: 100%;
        text-align:center;
        color: #666;
    }
    .note-help {
        color: #999999;
        font-size: 12px;
        line-height: 130%;
        margin-top: 5px;
        width: 100%;
        display: block;
    }
    #btn-dd{
        margin: 20px;
        text-align: center;
    }
    .foot-ul{
        width: 100%;
    }
    .one_line{
        display: block;
        height: 1px;
        border: 0;
        border-top: 1px solid #eeeeee;
        width: 100%;
        margin-left: 20px;
    }
    .am-header {
        display: -webkit-box;
        display: -ms-flexbox;
        display: box;
        width: 100%;
        position: relative;
        padding: 7px 0;
        -webkit-box-sizing: border-box;
        -ms-box-sizing: border-box;
        box-sizing: border-box;
        background: #1D222D;
        height: 50px;
        text-align: center;
        -webkit-box-pack: center;
        -ms-flex-pack: center;
        box-pack: center;
        -webkit-box-align: center;
        -ms-flex-align: center;
        box-align: center;
    }
    .am-header h1 {
        -webkit-box-flex: 1;
        -ms-flex: 1;
        box-flex: 1;
        line-height: 18px;
        text-align: center;
        font-size: 18px;
        font-weight: 300;
        color: #fff;
    }
</style>
</head>
<body text=#000000 bgColor="#ffffff" leftMargin=0 topMargin=4>
<header class="am-header">
        <h1>支付宝手机网站支付接口快速通道</h1>
</header>
<div id="main">
        <form name=alipayment action=alipayapi.php method=post target="_blank">
            <div id="body" style="clear:left">
                <dl class="content">
                    <dt>商户订单号
:</dt>
                    <dd>
                        <input id="WIDout_trade_no" name="WIDout_trade_no" />
                    </dd>
                    <hr class="one_line">
                    <dt>订单名称
:</dt>
                    <dd>
                        <input id="WIDsubject" name="WIDsubject" />
                    </dd>
                    <hr class="one_line">
                    <dt>付款金额
:</dt>
                    <dd>
                        <input id="WIDtotal_fee" name="WIDtotal_fee" />
                    </dd>
                    <hr class="one_line">
                    <dt>商品展示网址
:</dt>
                    <dd>
                        <input id="WIDshow_url" name="WIDshow_url" />
                    </dd>
                    <hr class="one_line">
                    <dt>商品描述:</dt>
                    <dd>
                        <input id="WIDbody" 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>
        <div id="foot">
            <ul class="foot-ul">
                <li>
                    支付宝版权所有 2015-2018 ALIPAY.COM 
                </li>
            </ul>
        </div>
    </div>
</body>
<script language="javascript">
    function GetDateNow() {
        var vNow = new Date();
        var sNow = "";
        sNow += String(vNow.getFullYear());
        sNow += String(vNow.getMonth() + 1);
        sNow += String(vNow.getDate());
        sNow += String(vNow.getHours());
        sNow += String(vNow.getMinutes());
        sNow += String(vNow.getSeconds());
        sNow += String(vNow.getMilliseconds());
        document.getElementById("WIDout_trade_no").value =  sNow;
        document.getElementById("WIDsubject").value = "测试";
        document.getElementById("WIDtotal_fee").value = "0.01";
    }
    GetDateNow();
</script>
</html>

进入API页,

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>支付宝手机网站支付接口接口</title>
</head>
<?php
/* *
 * 功能:手机网站支付接口接入页
 * 版本:3.3
 * 修改日期:2012-07-23
 * 说明:
 * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

 *************************注意*************************
 * 如果您在接口集成过程中遇到问题,可以按照下面的途径来解决
 *1、开发文档中心(https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.2Z6TSk&treeId=60&articleId=103693&docType=1)
 *2、商户帮助中心(https://cshall.alipay.com/enterprise/help_detail.htm?help_id=473888)
 *3、支持中心(https://support.open.alipay.com/alipay/support/index.htm)
 * 如果不想使用扩展功能请把扩展功能参数赋空值。
 */

require_once("alipay.config.php");
require_once("lib/alipay_submit.class.php");

/**************************请求参数**************************/

        //商户订单号,商户网站订单系统中唯一订单号,必填
        $out_trade_no = $_POST['WIDout_trade_no'];

        //订单名称,必填
        $subject = $_POST['WIDsubject'];

        //付款金额,必填
        $total_fee = $_POST['WIDtotal_fee'];

        //收银台页面上,商品展示的超链接,必填
        $show_url = $_POST['WIDshow_url'];

        //商品描述,可空
        $body = $_POST['WIDbody'];



/************************************************************/

//构造要请求的参数数组,无需改动
$parameter = array(
        "service"       => $alipay_config['service'],
        "partner"       => $alipay_config['partner'],
        "seller_id"  => $alipay_config['seller_id'],
        "payment_type"  => $alipay_config['payment_type'],
        "notify_url"    => $alipay_config['notify_url'],
        "return_url"    => $alipay_config['return_url'],
        "_input_charset"    => trim(strtolower($alipay_config['input_charset'])),
        "out_trade_no"  => $out_trade_no,
        "subject"   => $subject,
        "total_fee" => $total_fee,
        "show_url"  => $show_url,
        "body"  => $body,
        //其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.2Z6TSk&treeId=60&articleId=103693&docType=1
        //如"参数名"    => "参数值"   注:上一个参数末尾需要“,”逗号。
        
);

//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
echo $html_text;

?>
</body>
</html>

获取表单数据和配置数据,发起移动支付请求。

<?php
/* *
 * 配置文件
 * 版本:3.4
 * 修改日期:2016-03-08
 * 说明:
 * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

 * 安全校验码查看时,输入支付密码后,页面呈灰色的现象,怎么办?
 * 解决方法:
 * 1、检查浏览器配置,不让浏览器做弹框屏蔽设置
 * 2、更换浏览器或电脑,重新登录查询。
 */
 
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者ID,签约账号,以2088开头由16位纯数字组成的字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
$alipay_config['partner']       = '2088221883850827';

//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号
$alipay_config['seller_id'] = $alipay_config['partner'];

// MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
$alipay_config['key']           = '4t3m3qnwiq4lzqvv66sfu2vy9r3skkcn';
// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
$alipay_config['notify_url'] = "http://localhost/alipaywapdirect/notify_url.php";

// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
$alipay_config['return_url'] = "http://localhost/alipaywapdirect/return_url.php";

//签名方式
$alipay_config['sign_type']    = strtoupper('MD5');

//字符编码格式 目前支持utf-8
$alipay_config['input_charset']= strtolower('utf-8');

//ca证书路径地址,用于curl中ssl校验
//请保证cacert.pem文件在当前文件夹目录中
$alipay_config['cacert']    = getcwd().'\\cacert.pem';

//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
$alipay_config['transport']    = 'http';

// 支付类型 ,无需修改
$alipay_config['payment_type'] = "1";
        
// 产品类型,无需修改
$alipay_config['service'] = "alipay.wap.create.direct.pay.by.user";

//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑


?>

上面是配置内容,

支付后,调整到处理页面,

<?php
/* * 
 * 功能:支付宝页面跳转同步通知页面
 * 版本:3.3
 * 日期:2012-07-23
 * 说明:
 * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

 *************************页面功能说明*************************
 * 该页面可在本机电脑测试
 * 可放入HTML等美化页面的代码、商户业务逻辑程序代码
 * 该页面可以使用PHP开发工具调试,也可以使用写文本函数logResult,该函数已被默认关闭,见alipay_notify_class.php中的函数verifyReturn
 */

require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
?>
<!DOCTYPE HTML>
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {//验证成功
    /
    //请在这里加上商户的业务逻辑程序代码
    
    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

    //商户订单号

    $out_trade_no = $_GET['out_trade_no'];

    //支付宝交易号

    $trade_no = $_GET['trade_no'];

    //交易状态
    $trade_status = $_GET['trade_status'];


    if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
        //判断该笔订单是否在商户网站中已经做过处理
            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
            //如果有做过处理,不执行商户的业务程序
    }
    else {
      echo "trade_status=".$_GET['trade_status'];
    }
        
    echo "验证成功<br />";

    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
    
    /
}
else {
    //验证失败
    //如要调试,请看alipay_notify.php页面的verifyReturn函数
    echo "验证失败";
}
?>
        <title>支付宝手机网站支付接口</title>
    </head>
    <body>
    </body>
</html>

422101-20160518141805638-568282453.png

对接到ecshop中一样的道理,

422101-20160518142156466-939606968.png

1.传入订单号,订单金额等信息。
2.配置好支付宝账号信息。
3.支付后,对支付结果进行处理,提示支付成功,或者支付失败。

修复支付后,状态不变问题。

<?php
/* * 
 * 功能:支付宝页面跳转同步通知页面
 * 版本:3.3
 * 日期:2012-07-23
 * 说明:
 * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

 *************************页面功能说明*************************
 * 该页面可在本机电脑测试
 * 可放入HTML等美化页面的代码、商户业务逻辑程序代码
 * 该页面可以使用PHP开发工具调试,也可以使用写文本函数logResult,该函数已被默认关闭,见alipay_notify_class.php中的函数verifyReturn
 */

require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
?>
<!DOCTYPE HTML>
<html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">

    <style type="text/css">
#page{
    width: 98%;
    height: 10em;
    margin:1em auto;
    
    font-size:1em;
    line-height:1.5em;
}
#page2{
    width: 98%;
    height: 10em;
    margin:1em auto;
    ;
    font-size:1em;
    line-height:1.5em;
}
</style>

        <title>支付宝即时到账交易接口</title>
        
    </head>
    <body>
    
<?php
//计算得出通知验证结果

$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();

if($verify_result) {//验证成功
    /
    //请在这里加上商户的业务逻辑程序代码
    
    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

    //商户订单号
    $out_trade_no = $_GET['out_trade_no'];

    //支付宝交易号
    $trade_no = $_GET['trade_no'];

    //交易状态
    $trade_status = $_GET['trade_status'];

    //判断该笔订单是否在商户网站中已经做过处理
        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
        //如果有做过处理,不执行商户的业务程序
        
    
    if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS'){

        // 更改支付状态
        // 订单确认时间
        // 订单支付时间
        define('IN_ECS', true);
        require_once('../includes/init.php'); // 原来是这里出了问题
        $r = $GLOBALS['db']->query("UPDATE ".$GLOBALS['ecs']->table('order_info')." SET pay_status = 2 , confirm_time = ".time()." , pay_time = ".time()." where order_sn = '".$out_trade_no."'");
    ?>
    
<div id='page'>
    <div style="text-align:center;color:red;font-size:2em;font-weight: bold;">
    <br />
    <br />
    <br />
    祝贺您!您的订单支付已经成功!!!3秒后自动跳转动商城首页
    
    </div>
</div>

<?php
    }else{
    //支付失败
        
?>
<div id='page2'>
    <div style="text-align:center;font-weight: bold; font-size:2em;color:red;">
    <br />
    <br />
    <br />
    很抱歉,您的订单支付失败!3秒后自动跳转动商城首页
    </div>
</div>
<?php
    }
}
else {
    //验证失败
    //如要调试,请看alipay_notify.php页面的verifyReturn函数
   
    ?>
<div id='page2'>
    <div style="text-align:center;font-weight: bold;font-size:2em;"><span style="color:red;">支付失败</span><br />
    支付过程中出现验证错误,如果你的支付宝金额已被扣除,请联系开发商
    </div>
</div>
<?php
}
?>
    <script type="text/javascript">
        window.setTimeout("window.location='http://local.easymall.com/mobile/'",3000); 
    </script>
    </body>
</html>

ecshop
操作数据库,

// 更改支付状态
// 订单确认时间
// 订单支付时间
define('IN_ECS', true);
require_once('../includes/init.php'); // 原来是这里出了问题
$r = $GLOBALS['db']->query("UPDATE ".$GLOBALS['ecs']->table('order_info')." SET pay_status = 2 , confirm_time = ".time()." , pay_time = ".time()." where order_sn = '".$out_trade_no."'");

转载于:https://www.cnblogs.com/jiqing9006/p/5505148.html

ecshop仿京东商城+手机触屏版+超强微信接口+手机WAP支付+个人免签支付宝最强版下载,2014最新版京东模板,带手机触屏版,网站带微信接口,还有手机支付宝支付接口等。 安装教程 1、在浏览器运行http://您的域名/install 2、登陆后台http://您的域名/admin/ 3、点击“数据库管理”>“数据备份” 4、点击“恢复备份” 会出现一个之前备份好的数据库,直接点“导入”即可 注意:恢复备份后,后台的管理员用户名变成:admin 密码变成:admin888 5、清除缓存 6、在“微商城”,配置微信接口信息等 7、在“系统设置”的“支付方式”配置“支付宝”,有3种支付接口: (1)、手机wap支付宝支付 a、要申请“手机网站支付”,申请网址: https://b.alipay.com/order/productDetail.htm?productId=2013080604609688 b、将“支付宝接口”文件夹里的alipay(wap).php文件名改成alipay.php直接覆盖到includes\modules\payment文件夹中 (2)、个人免签支付宝(可直接使用您自己的个人支付宝作为支付接口): a、将“支付宝接口”文件夹里的alipay(free).php文件名改成alipay.php直接覆盖到includes\modules\payment文件夹中 b、将“支付宝账户”换成您个人支付宝,“合作者身份ID”换成您的手机号码 (3)、企业支付宝 将“支付宝接口”文件夹里的alipay(company).php文件名改成alipay.php直接覆盖到includes\modules\payment文件夹中 8、手机站 http://您的域名/mobile 9、其他不懂操作可能参考“ecshop使用手册.chm”里的“使用”版块。仅供参考,因为模板有些有改了。
搞支付宝手机支付接口搞了三天了,连支付宝的技术人员都没能帮我解决问题,在百度找了很多和我一样问题的,都无法解决。 主要问题就是,使用0001加密,返回值无法验证。 求人不如求己,我还是自己认真的阅读了下手册,仔细的分析下代码,终于把问题给解决了。 废话不多说,直接上菜。 1、本程序直接复制到你的根目录即可 (没有修改过ECSHOP核心文件的前提下) 2、/alipay/key/ 文件夹里有个两个文件alipay_public_key.pem (公钥) rsa_private_key.pem (私钥) 公钥和私钥的配置方法很简单,看手册会看晕的。我简化点说。 (1)打开 openssl(openssl生成工具 用完可删) 文件夹。运行这个文件夹下的 /bin/openssl.exe程序 (2)打开 openssl(openssl生成工具 用完可删) 文件夹下的 /bin/生成命令.txt (3)按照1、2、3的顺序,在OpenSSL.exe程序中运行。操作完成后。 你会发现 /bin 文件夹下面多了两个.pem文件 和 一个.txt的文件 (4)将rsa_public_key.pem 用记事本打开,将前缀和后缀之间的内容复制(即-----BEGIN PUBLIC KEY-----和-----END PUBLIC KEY----- 之间的内容) (5)进入支付宝签约管理,点击查看PID | Key 然后点击 无线产品密钥管理(wap专用) 查看 (6)点击RSA加密:添加密钥(或查看密钥) 将刚刚复制的内容粘贴到这个文本框内,记得一定要删除所有的空格,开头和结尾一定要不要有空格。点击保存(或修改) (7)完成后点击查看支付宝公钥,将里面的内容复制出来,粘贴到/alipay/key/alipay_public_key.pem 的文件里,格式已经在该文件里写的很清楚的。 (8)将刚刚生成的rsa_private_key.pem文件里的内容复制到/alipay/key/rsa_private_key.pem 里,注意格式。 3、完成后直接上传到网站根目录即可。 4、注意,本程序是直接覆盖alipay.php的,如果你想保留支付宝的网页支付插件,请慎用,建议新建一个手机网站使用。 本人并不是技术特别厉害的程序员,本程序经过N多测试均未发现问题,如果你无法正常使用,极有可能是你的公钥没有配置好,可以联系支付宝的技术教你弄弄。 如果你发现我写的代码有点冗余,请与我联系,我们共同完善。QQ:927822902 特别声明:本人平时特别忙,如果是想加QQ寻求一对一解决问题的,请勿加。付费例外:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值