찾다
백엔드 개발PHP 튜토리얼Dedecms는 Tenpay 결제 인터페이스_php 기술을 통합합니다.

드림위버를 이용해 여행 웹사이트를 구축했는데, 고객이 텐페이를 통해 결제를 해달라고 하더군요. 온라인으로 검색해보니 사고 싶거나 돈이 필요해서 직접 작성하게 됐어요.

코드:

코드 복사 코드는 다음과 같습니다.

if(!definated('DEDEINC')) exit('요청 오류!');
/**
*텐페이 인터페이스 강좌
​*/
클래스 텐페이
{
    var $dsql;
    var $mid;
    var $reqURL_onLine = "http://www.tenpay.com";
    var $return_url='/plus/carbuyaction.php?dopost=return'; //返回处理地址
    /**
* 생성자
*
* @접속공개
* @param
*
* @return 무효
​*/
    함수 텐페이()
    {
        글로벌 $dsql;
        $this->dsql = $dsql;
    }
    함수 __construct()
    {
        $this->tenpay();
    }
    /**
* * 인터페이스를 설정하면 주소가 전송됩니다
*
* 예: $this->SetReturnUrl($cfg_basehost."/tuangou/control/index.php?ac=pay&orderid=".$p2_Order)
*
* @param string $returnurl이 주소를 보내드립니다
* @return 무효
​​*/
    함수 SetReturnUrl($returnurl='')
    {
        if (!empty($returnurl))
        {
            $this->return_url = $returnurl;
        }
    }
    /**
* 결제 코드 생성
* @param array $order 주문정보
* @param array $결제 결제수단 정보
​*/
    함수 GetCode($주문, $결제)
    {
        전역 $cfg_basehost,$cfg_cmspath;
        //对于이종级目录의 조직
        if(!empty($cfg_cmspath)) $cfg_basehost = $cfg_basehost.'/'.$cfg_cmspath;
          $partner      =  $결제['tenpay_account'];
          $out_trade_no = $order['out_trade_no'];
          $total_fee = floatval($order['price']) * 100;
           $body = $order['out_trade_no'];
           $attach = '';
           $bank_type = 'DEFAULT';
            /* 交易类型:2、虚拟交易,1、实物交易 */
         $trans_type = 1;
         $trade_mode=empty($결제['tenpay_pay_method']) ? '1' : $결제['tenpay_pay_method'];
       $매개변수 = 배열(
            '파트너'              => $파트너
            'out_trade_no'         => $out_trade_no,                          //订单号
            'total_fee'            => $total_fee,                            //总金额
            'notify_url'           => $cfg_basehost.$this->return_url."&code=".$결제['code'],  //返回地址
'반환_URL' '반환_URL' => '본체' '본체' => 'Bank_type' = & GT; $ Bank_type, // 거래 ​​유형 기본 Tenpay
//사용자 IP
'Spborne_create_ip' = & gt; $ _Server ['remote_addr'], // IP 거래
'fee_type' 'fee_type' => '1', 'fee_type' //통화 1위안
'주제' '주제' => //시스템 선택적 매개변수
'sign_type' 'sign_type' => 'MD5', 'sign_type' //암호화 방법
'Service_version' = & gt; '1.0', // 인터페이스 버전 번호 기본값은 1.0
'Input_charset' = & gt; 'UTF-8', // 시스템 인코딩 'gbk'
'Sign_key_index' = & gt; '1', // 키 일련번호
//비즈니스 선택적 매개변수
'Attach' = & gt; $ Attach, // 원본 데이터는 기본값을 공백으로 반환합니다.
'Product_fee' = & gt; '', // 상품 비용
'Transport_fee' = & gt; '0', // 물류비
'Time_start' = & gt; 날짜("ymdhis"), // 주문 생성 시간 날짜("ymdhis")
'Time_expire' = & gt; '', // 주문 실패 시간
            'buyer_id'             => '',                 //买方财付通帐号
            'goods_tag'            => '',                 //商品标记
            'trade_mode'           => $trade_mode,        //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
            'transport_desc'       => '',                 //物流说明
            'trans_type'           => $trans_type,        //交易类型
            'agentid'              => '',                 //平台ID
            'agent_type'           => '',                 //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
            'seller_id'            => ''                  //卖家商户号
        );
        ksort($parameter);
        reset($parameter);
        $param = '';
        $sign  = '';
        foreach ($parameter AS $key => $val)
        {
            $param .= "$key=" .urlencode($val). "&";
            if("" != $val && "sign" != $key) {
                $sign  .= "$key=$val&";
            }
        }
        $param = substr($param, 0, -1);
        $sign .= "key=".$payment['tenpay_key'];
        $sign = strtolower(md5($sign)); 
        $button = '
https://gw.tenpay.com/gateway/pay.htm?'.$param. '&sign='.$sign.'">
';
         $버튼 반환;
/* 장바구니 지우기 */
           require_once DEDEINC.'/shopcar.class.php';
$cart = 새로운 MemberShops();
          $cart->clearItem();
$cart->MakeOrders();
         $버튼 반환;
}
/**
*대응작전
​*/
함수 응답()
{
​​​​/*구성 파일 소개 */
           $code = preg_replace( "#[^0-9a-z-]#i", "", $_GET['code'] );
require_once DEDEDATA.'/결제/'.$code.'.php';
$attach = $_GET['attach'];
         $trade_state                                                                                                                                                $total_fee = $_GET['total_fee'];
         $out_trade_no = Trim($_GET['out_trade_no']);
if(preg_match ("/S-P[0-9] RN[0-9]/",$order_sn)) {
//결제 금액이 일치하는지 확인
                 $row = $this->dsql->GetOne("SELECT * FROM
#@__shops_orders WHERE oid = '{$order_sn}'"); If ($row['priceCount'] != $_GET['total_fee'])
                {
                   return $msg = "결제 실패, 결제 금액이 전체 상품 가격과 일치하지 않습니다!";
            }
                 $this->mid = $row['userid'];
                /* 디지털 서명이 올바른지 확인하세요 */
         ksort($_GET);
         재설정($_GET);
        $sign = '';
foreach($_GET AS $key => $val)
           {
If("" != $val && "sign" != $key && $key != '코드') {
$sign .= "$key=$val&";
            }
}
             $sign .= "key=".$결제['tenpay_key'];
if(strtolower(md5($sign))==strtolower($_GET['sign']))
{
                if($trade_state==0)
~ > >                                       > If($this->success_db($out_trade_no))
return $msg = "결제 성공!
홈페이지로 돌아가기 회원 센터";
else return $msg = "결제 실패!
홈페이지로 돌아가기 회원 센터"; 🎜> ~ }
그렇지 않으면{
//return $msg = "결제 실패!
홈페이지로 돌아가기 회원 센터" ;
}
}
/*아이템 거래 처리 중*/
함수 성공_db($order_sn)
{
         $time=time();
$mid=$this->mid;
//주문 정보를 얻고 주문의 유효성을 확인합니다
           $row = $this->dsql->GetOne("SELECT state,priceCount FROM #@__shops_orders WHERE oid='$order_sn' ");
If($row['state'] > 0)
           {
             TRUE를 반환합니다.
~ /* 주문 상태 변경_결제 성공 */
$sql = "업데이트
`#@__shops_orders` SET `state`='1' WHERE `oid`='$order_sn' AND `userid`='".$this->mid."' "; If($this->dsql->ExecuteNoneQuery($sql))
           {
                 $this->log_result("verify_success, 주문 번호: ".$order_sn) //확인 결과를 파일에 저장
             TRUE를 반환합니다.
         } else {
                 $this->log_result ("verify_failed, 주문 번호: ".$order_sn);//확인 결과를 파일에 저장
              FALSE를 반환합니다.
}
}
함수 log_result($word) {
전역 $cfg_cmspath;
           $fp = fopen(dirname(__FILE__)."/../../data/paid/log.txt","a");
무리($fp, LOCK_EX) ;
            fwrite($fp,$word.",실행 날짜:".strftime("%Y-%m-%d %H:%I:%S",time())."rn");
무리($fp, LOCK_UN);
           fclose($fp);
}
}

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
dedecms怎么增加多语言dedecms怎么增加多语言Feb 27, 2023 am 09:21 AM

dedecms增加多语言的方法:1、进入dedecms后台,创建封面栏目;2、将封面栏目“常规选项”的文件保存目录设置为cn或者en;3、将封面栏目“高级选项”的列表模板设置为“cn_index.htm”或者“en_index.htm”;4、单独调用每种语言的封面栏目和每种语言下的导航栏目即可。

织梦cms是什么语言写的织梦cms是什么语言写的Feb 21, 2023 am 09:45 AM

织梦cms是用PHP语言写的。织梦CMS(DedeCMS)是一个PHP开源网站管理系统,作用是构建中小型网站;它采用PHP+MySQL技术开发,可同时使用于windows、linux、unix平台。

dedecms是什么语言dedecms是什么语言Feb 24, 2023 am 09:46 AM

dedecms是PHP语言开发的;dedecms中文全称是织梦内容管理系统,是一个PHP开源网站管理系统;dedecms基于PHP和MySQL技术开发,可同时使用于Windows、Linux、Unix平台。

dedecms有移动端吗dedecms有移动端吗Mar 02, 2023 am 09:30 AM

dedecms有移动端,其移动端安装方法是:1、将DATA移到根目录外的安全设置,修改“/m/index.php”代码;2、在“更新主页HTML”中,将“选择主页模板”改为“default/index_m.htm”;3、将首页“图文资讯”的url修改为移动端链接;4、设置移动站可通过二级域名访问即可。

dedecms缩略图报错怎么办dedecms缩略图报错怎么办Feb 27, 2023 am 09:32 AM

dedecms缩略图报错的解决办法:1、将windows目录设置为user读权限;2、将“windows/Temp”设置为user读写权限;3、找到php.ini中的“upload_tmp_dir”目录,然后去掉前面的分号;4、设置地址,赋予user读写权限即可。

dedecms怎么删除栏目dedecms怎么删除栏目Jul 13, 2023 pm 04:31 PM

dedecms删除栏目的方法:1、登录后台管理;2、进入“栏目管理”,可以看到当前网站所有栏目;3、选择要删除的栏目;4、将鼠标悬停在栏目名称上,删除栏目;5、点击“确认”按钮以继续删除操作;6、删除成功。

2023年织梦dedeCMS视频教程推荐2023年织梦dedeCMS视频教程推荐Oct 25, 2019 pm 01:56 PM

织梦内容管理系统(DedeCMS) 以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展,目前的版本无论在功能,还是在易用性方面,都有了长足的发展和进步。

DedeCMS创始人林学(IT 柏拉图)逝世DedeCMS创始人林学(IT 柏拉图)逝世Dec 05, 2022 am 11:54 AM

12 月 3 日下午,DedeCMS 创始人林学(IT 柏拉图)因罹患癌症逝世。林学生于 1979 年 10 月 10 日,于 2004 年 8 月编写的 DedeCMS 至今仍有数十万企业、个人站长使用。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기