PHP实现小程序微信支付v2版本退款以及对回调数据的解密

PS:本篇文章主要是对PHP实现小程序退款以及退款回调数据解密的流程做大概解释,代码请各位按照自身需求进行修改
小程序js代码:

  refundOrder(){
   
    var refund = this 
    wx.request({
   
      url: 'http://127.0.0.1:2910/wxPayV2/refundOrder/refundOrderAction.php', //此处写你的PHP文件地址
      method:'POST',
      header:{
   
        'content-type':'application/x-www-form-urlencoded'
      },
      data:{
   
        'out_trade_no':'商户订单号',
        'refund_fee':'1' //退款金额,单位为分
      },
      success(res){
   
        console.log(res)
      }
    })
  },

PHP微信v2退款类文件
refundOrder.php

<?php
require_once dirname(__FILE__,3).'/config/appConfig.php';
require_once dirname(__FILE__,2).'/createOrder/createOrder.php';
class refundOrder
{
   
    /**
     * 获取相关基本配置
     */
    public function __construct(){
   
        $this -> APIv2 = APIv2;
        $this -> appid = appid;
        $this -> mch_id = mch_id;
    }

    /**
     * 生成32位随机字符串
     * @return false|string
     */
    public function nonce_str(){
   
        $getData = new createOrder;
        return $getData -> nonce_str();
    }

    /**
     * 生成商户退款单号
     * @return string
     */
    public function out_refund_no(): string
    {
   
        $getData = new createOrder;
        $data = $getData -> out_trade_no();
        return 'T'.$data;
    }

    /**
     * 返回参与签名的数据主体
     * @param $nonce_str :32位随机字符串
     * @param $transaction_id :微信支付订单号
     * @param $out_refund_no :商户退款单号
     * @param $total_fee :订单总金额
     * @param $refund_fee :退款金额
     * @return array
     */
    public function signBody($nonce_str,$transaction_id,$out_refund_no,$total_fee,$refund_fee): array
    {
   
        $data = array(
            'appid' => $this -> appid,
            'mch_id' => $this -> mch_id,
            'nonce_str' => $nonce_str,
            'sign_type' => 'MD5',
            'transaction_id' => $transaction_id,
            'out_refund_no' => $out_refund_no,
            'total_fee' => $total_fee,
            'refund_fee' => $refund_fee,
        );
        ksort($data);
        return $data;
    }

    /**
     * 将参与签名的数据转换字符串并连接APIv2
     * @param $data :参与签名的数据主体(array)
     * @return string
     */
    public function disposeSignBody($data): string
    {
   
        $signBody = '';
        foreach ($data as $key => $val){
   
            $signBody .= "$key=$val&";
        }
        $signBody .= "key=$this->APIv2";
        return $signBody;
    }

    /**
     * 返回签名值
     * @param $signBody :经过处理后的待签名数据
     * @return string
     */
    public function sign($signBody): string
    {
   
        return strtoupper(MD5($signBody));
    }

    /**
     * 生成访问微信退款接口的参数主体
     * @param $sign :签名值
     * @param $signBody :参与签名的数据主体
     * @return string
     */
    public function requestBody($sign,$signBody): string
    {
   
        $signArray = array(
            'sign' => $sign
        );
        $requestArray = array_merge($signArray
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值