支付宝退款

Posted 盘思动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支付宝退款相关的知识,希望对你有一定的参考价值。

 

 技术分享图片

 

 

 

 

支付和退款都需要,这里的支付宝公钥(注意:不是应用公钥,支付宝公钥在应用公钥基础上生成的),和应用的私钥;

里面参数有几个用到支付回调里面的参数, 支付流水号,支付者信息,支付登录者信息;

 

    public function AlipayLaunchRefund($data){
        vendor(‘Alipay.Sdk.AopClient‘);
        vendor(‘Alipay.Sdk.SignData‘);
        vendor(‘Alipay.Sdk.request.AlipayTradeRefundRequest‘);

        $aop = new AopClient();
        $aop->gatewayUrl = ‘https://openapi.alipay.com/gateway.do‘;


        $configs = D(‘Configs‘)->getKeys([‘alipay_app_id‘, ‘alipay_public_key‘, ‘alipay_private_key‘]);
        $aop->appId = $configs[‘alipay_app_id‘];

        $privateKey = file_get_contents($configs[‘alipay_private_key‘]);
        $publicKey = file_get_contents($configs[‘alipay_public_key‘]);
        $aop->rsaPrivateKey = $privateKey;
        $aop->alipayrsaPublicKey = $publicKey;

        $aop->apiVersion = ‘1.0‘;
        $aop->signType = ‘RSA2‘;
        $aop->postCharset = ‘UTF-8‘;
        $aop->format = ‘json‘;
        $request = new AlipayTradeRefundRequest();

        $refundInfo = [
            ‘trade_no‘              =>      $data[‘trade_no‘],
            ‘out_trade_no‘          =>      $data[‘out_trade_no‘],
            ‘fund_change‘           =>      $data[‘fund_change‘],
            ‘refund_fee‘            =>      $data[‘price‘] / 100,
            ‘refund_amount‘         =>      $data[‘price‘] / 100,
            ‘refund_currency‘       =>      ‘CNY‘,
            ‘gmt_refund_pay‘        =>      date(‘Y-m-d H:i:s‘,time()),
            ‘store_name‘            =>      ‘***‘,
            ‘buyer_logon_id‘        =>      $data[‘buyer_logon_id‘],
            ‘buyer_user_id‘         =>      $data[‘buyer_user_id‘]
        ];

        $bizcontent = json_encode($refundInfo,true);

        setlog($refundInfo,[],__METHOD__.‘__2222‘);
        $request->setBizContent($bizcontent);
        $result = $aop->execute($request);
        setlog($result,[],__METHOD__.‘__3333‘);

        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
        $resultCode = $result->$responseNode->code;


        if(!empty($resultCode) && $resultCode == 10000){
            $return_data = [
                ‘num‘   =>      1,
                ‘desc‘  =>      ‘退款成功‘,
                ‘data‘  =>      $result->$responseNode->trade_no
            ];
        } else {
            $return_data = [
                ‘num‘   =>      -1,
                ‘desc‘  =>      $result->$responseNode->sub_msg,
            ];
        }

        return $return_data;
    }


    /***
     * 支付成功:
     *  [alipay_trade_refund_response] => stdClass Object
    (
        [code] => 10000
        [msg] => Success
        [buyer_logon_id] => men***@163.com
        [buyer_user_id] => 2088302399936655
        [fund_change] => Y
        [gmt_refund_pay] => 2019-01-28 15:57:58
        [out_trade_no] => AXSD19028110031
        [refund_fee] => 0.01
        [send_back_fee] => 0.00
        [trade_no] => 2019012822001436651021876213
    )
        [sign] => cd/YzFBzIrkW5m460EGbK4p6VjESCTtuD82I/aUj5YxtIGoUp75ZmwhPehHdPrSsLHvtwz4EVytA07EXftpjz7cV0pPL5gQQtM4WeVTEM1EttWK3lMzvKO9uZYJDrYrj8M5qV3zDk926A8fN8BQMKflu7SaBY7eQ/oGMMKbDDYYw9kRAFAhyFEiOBlP868LxNNA4qGJgOBU385uKO1nOqz9Fg9RlMl352ix8fT0XjXccW5VIaLaxZG3o60kFY4Ki7NhklJ4m+abnxXRfztfoBtvH+nsUuSmUBLvtkHIjaC3PZkarCNDJPoIZG06QThjO6KAzAz8j9sSunC3DiGjd8w==
    )

     * 支付失败:
    (
    [alipay_trade_refund_response] => stdClass Object
    (
        [code] => 40004
        [msg] => Business Failed
        [sub_code] => ACQ.CURRENCY_NOT_SUPPORT
        [sub_msg] => 商户签约结算产品不支持交易币种
        [refund_fee] => 0.00
        [send_back_fee] => 0.00
    )
        [sign] => AEgIeov88pApGGIYx+FS3/FEJ8CXAD7JjsELdo1ile9sGOuDYJqlTO0BF0hFRJU4NA+xcIGPOatINeDbMMdi4n+VcjUWOdctJc8vYZSldi3UFI6hXt5gyMQS5smDvy5Dywa8lDijBmXpV3l2nJqJWKmr5jYIb3lMkFH4ZQZFnNu6hdPb0VdnIq71pyjoYsLKWFai7gWYiBPuGuV9iPb/0dlNuL3BjoTjd/FKFp/1HFPZ3Wpn2CQ26iqDo5nXlPDQw6YzLy24SuIR7yau6P8ZHvHqXMK9G27gBqJG0Lexa2eo7iJCl05/oxisD1TuFunk4rR41UtXeUouT6Gqg9fjew==
    )
     */

  

 

以上是关于支付宝退款的主要内容,如果未能解决你的问题,请参考以下文章

Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)

支付宝退款 (新版)

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(上)

支付宝退款

支付宝退款demo

Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝支付)