TPShop3.2.3支付宝退款功能开发

16 篇文章 0 订阅
5 篇文章 0 订阅

开发背景:刚开始使用支付宝支付的时候挺顺利的,最后因为突然想开发下支付宝的退款功能,就重新开始捣鼓了起来,但是把支付价格改为原价格之后,支付的时候忘记了,所以就支付了几百块钱,于是迅速的开始查阅相关的支付宝退款说明和操作,最终将支付宝的退款操作成功解决:

参考链接:

1.https://blog.csdn.net/qq_35765928/article/details/79915409

2.https://www.cnblogs.com/wqy415/p/7977776.html

个人代码粘贴:

<?php
/**
 * tpshop 支付宝插件
 * ============================================================================
 * 版权所有 2015-2027 深圳搜豹网络科技有限公司,并保留所有权利。
 * 网站地址: http://www.tp-shop.cn
 * ----------------------------------------------------------------------------
 * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 * ============================================================================
 * Author: IT宇宙人
 * Date: 2015-09-09
 */

//namespace plugins\payment\alipay;
use think\Model;
use think\Request;
/**
 * 支付 逻辑定义
 * Class AlipayPayment
 * @package Home\Payment
 */

class alipayApp extends Model{

public $tableName = 'plugin'; // 插件表 
public $alipay_config = array();// 支付宝支付配置参数
/**
     * 析构流函数
     */
    public function  __construct() {   
        parent::__construct();

        $paymentPlugin = M('Plugin')->where("code='alipayApp' and type = 'payment' ")->find(); // 找到支付插件的配置
        $config_value = unserialize($paymentPlugin['config_value']); // 配置反序列化
        $this->alipay_config['appid'] = trim(''); // APPID
        $this->alipay_config['alipay_rsa_public_key'] = trim('');//应用公钥
        $this->alipay_config['rsa_private_key'] = trim('');//应用私钥
        $this->alipay_config['account_name'] = empty($config_value['alipay_account_name']) ? '' : $config_value['alipay_account_name'];//个人支付宝账号是真实姓名公司支付宝账号是公司名称
        $this->alipay_config['key'] = $config_value['alipay_key'];//安全检验码,以数字和字母组成的32位字符
        $this->alipay_config['sign_type'] = strtoupper('RSA2');//签名方式 不需修改
        $this->alipay_config['input_charset'] = strtolower('utf-8');//字符编码格式 目前支持 gbk 或 utf-8

    } 

function AliPayPlaceRefund($out_trade_no,$refund_amount,$trade_no){
//        var_dump(trim($this->alipay_config['sign_type']));
//        var_dump(trim($this->alipay_config['input_charset']));
//        exit;
        require_once("AopSdk.php"); // 请求返回
//        $refund_order = generateOrderId(9);
        $refund_order = 'HZ01RF002';
        $aop = new AopClient ();
        $aop->gatewayUrl =  'https://openapi.alipay.com/gateway.do';
        $aop->appId = $this->alipay_config['appid'];
        $aop->rsaPrivateKey = trim($this->alipay_config['rsa_private_key']);
        $aop->alipayrsaPublicKey = trim($this->alipay_config['alipay_rsa_public_key']);
        $aop->apiVersion = '1.0';
//        $aop->signType = trim($this->alipay_config['sign_type']);
        $aop->signType = 'RSA2';
//        $aop->postCharset=trim($this->alipay_config['input_charset']);
        $aop->postCharset='utf-8';
//        $aop->format="JSON";
        $aop->format="json";//使用大写获取到的$resultCode为空
        $request = new AlipayTradeRefundRequest();
        $request->setBizContent("{" .
//            "\"trade_no\":\"$trade_no\"," .
            "\"out_trade_no\":\"$out_trade_no\"," .
            "\"refund_amount\":$refund_amount," .
            "\"refund_reason\":\"正常退款\"," .
            "\"out_request_no\":\"HZ01RF001\"," .
            "\"operator_id\":\"OP001\"," .
            "\"store_id\":\"NJ_S_001\"," .
            "\"terminal_id\":\"NJ_T_001\"" .
            "  }");

        $result = $aop->execute( $request );
        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
        $resultCode = $result->$responseNode->code;
        var_dump($resultCode);exit;
        if(!empty($resultCode)&&$resultCode == 10000){
//            echo "成功";
            return true;
        } else {
//            echo "失败";
            throw new Exception($result->$responseNode->sub_msg);
        }
    }
}

 需要注意的是:

1.// "\"trade_no\":\"$trade_no\"," .此块可添加也可不添加,都能正确进行退款

2.$aop->format="json";//使用大写获取到的$resultCode为空

3.返回$resultCode不为空且等于10000才表示退款成功!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值