zoukankan      html  css  js  c++  java
  • 微信支付退款流程 php

    // 设置时区 

    date_default_timezone_set("Asia/Shanghai");

    // 配置

    $ref = strtoupper(md5("appid=$appid&mch_id=$mch_id&nonce_str=$nonce_str&op_user_id=$user_id"
    . "&out_refund_no=$out_refund_no&out_trade_no=$transaction_id&refund_fee=$refund_fee&total_fee=$total_fee"
    . "&key=$key")); //sign加密MD5
    $refund = ['appid' => $appid, //应用ID,固定
    'mch_id' => $mch_id, //商户号,固定
    'nonce_str' => $nonce_str, //随机字符串
    'op_user_id' => $user_id, //操作员
    'out_refund_no' => $out_refund_no, //商户内部唯一退款单号
    'out_trade_no' => $transaction_id, //商户订单号,pay_sn码 1.1二选一,微信生成的订单号,在支付通知中有返回
    //'transaction_id'=>$transaction_id,//微信订单号 1.2二选一,商户侧传给微信的订单号
    'refund_fee' => $refund_fee, //退款金额
    'total_fee' => $total_fee, //总金额
    'sign' => $ref//签名
    ];
    微信签名认证工具 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1
    $url = "https://api.mch.weixin.qq.com/secapi/pay/refund";
    ; //微信退款地址,post请求
    $xml = arrayToXml($refund);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); //证书检查
    // 设置证书
    curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'pem');
    curl_setopt($ch, CURLOPT_SSLCERT, $_SERVER['DOCUMENT_ROOT'] . '/plugins/payment/weixin/cert/apiclient_cert.pem');
    curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'pem');
    curl_setopt($ch, CURLOPT_SSLKEY, $_SERVER['DOCUMENT_ROOT'] . '/plugins/payment/weixin/cert/apiclient_key.pem');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    $xml = curl_exec($ch);
    // 返回结果0的时候能只能表明程序是正常返回不一定说明退款成功而已
    if ($xml) {
    curl_close($ch);
    // 把xml转化成数组
    libxml_disable_entity_loader(true);
    $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
    // var_dump($xmlstring);
    $result['errNum'] = 0;
    $result['info'] = (array)($xmlstring);
    return $result;
    } else {
    $error = curl_errno($ch);
    curl_close($ch);
    // 错误的时候返回错误码。
    $result['errNum'] = $error;
    return $result;
    }
     
  • 相关阅读:
    cocos2d-x类型转换(CCstring int string char UTF-8互转)
    cocos2d-x 实心圆
    CCLabelTTF的多行显示(仅限中文)
    cocos2d-x 弹窗
    cocos2d-x 画线
    cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
    cocos2d-x 背景色修改
    cocos2d-x 中文乱码问题
    HelloWorld.exe 中的 0x0f9265f6 (libcocos2d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000038 时发生访问冲突
    error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  • 原文地址:https://www.cnblogs.com/yjhsm/p/13345088.html
Copyright © 2011-2022 走看看