微信退款(一步步教你怎么写代码)

来源:互联网 发布:淘宝优惠券图片怎么做 编辑:程序博客网 时间:2024/05/04 08:50

开始

  1. 我们到微信公众号下载SDK;
  2. 现在我们分两个框架CITP;(CI框架我们把SDK放到common下的libraries下);(TP框架我们把SDK放到根目录extend下)
  3. CI框架的操作流程
 /**  * 微信退款流程  */public function refund_pay() {    //获取当前订单的ID    $order_id = $this->input->get('id', true);    //查询当前订单的信息    $order = $this->common_model->get_one('order', array('order_id' => $order_id));    //判断这条订单是否存在,并存日志(如果不想存日志直接给个提示就行)    if (empty($order)) {        $this->log->save_log('根据订单ID查询不到信息', $log_file = RUN_QUERY_LOG, $level = 'DEBUG');        return FALSE;    }    //微信退款操作    require_once ROOT_PATH . "/common/libraries/wxpay/lib/WxPay.Api.php";    $input = new WxPayRefund();    $out_trade_no = WxPayConfig::MCHID . date("YmdHis") . mt_rand(10000, 99999);    //设置商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔    $input->SetOut_refund_no($out_trade_no);             //设置商户系统内部的订单号,transaction_id、out_trade_no二选一    $input->SetTransaction_id($orderArr['out_sn']);    //设置订单总金额,单位为分,只能为整数,详见支付金额    $input->SetTotal_fee($orderArr['pay_price'] * 100);    //设置退款总金额,订单总金额,单位为分,只能为整数,详见支付金额    $input->SetRefund_fee($orderArr['weixin_pay_price'] * 100);    //设置操作员帐号, 默认为商户号    $input->SetOp_user_id(WxPayConfig::MCHID);    $data = WxPayApi::refund($input);    //退款成功    if ($data['result_code'] == 'SUCCESS') {    //更新订单状态    $this->common_model->edit('order', array('return_time' => date('Y-m-d H:i:s', time())), array('order_id' => $order_id));    }

4.TP框架的操作流程

 /**  * 支付宝有密退款流程  */namespace app\controller;use think\Db;use wxpay\Wxpay;class RefundController extends Controller{    /**     * 订单确认页面     */    public function index() {    //获取当前订单ID    $out_id = input('param.id');    //获取当前订单基本信息    $outOrder = db('out_order')->field('oto.*,o.*')->alias('oto')->where(['out_id' => $out_id])->join('__ORDER__ o', 'o.order_id=oto.order_id')->find();    //判断订单是否存在    if (empty($outOrder)) {        $this->error('该订单不存在', '', '', '');    }    //判断订单是否重复提交    if ($outOrder['state'] == '110' && $outOrder['out_status'] == '1') {        $this->error('请勿重复提交订单', '', '', '');    }    $data = [         'refund_no' => date('Ymdhis', time()) . substr(floor(microtime() * 1000), 0, 1) . rand(0, 9),         //退款数量         'refund_num' => '1',         //buyer_id买家支付宝账号或者iD^out_price退款金额^'备注'         'refund_data' => $outOrder['buyer_id'] . '^' . $outOrder['out_price'] . '^' . '测试退款',            ];        return $this->fetch('outorder/refund', $data);    }    /**     * 确认支付     * 发送请求到支付宝(会跳转到支付宝页面等待用户支付)     */    public function refund() {        require_once EXTEND_PATH . 'Alipay_refund/alipayapi.php';    }    /**     * 支付宝异步回调方法     */    public function notifyurl() {        require_once EXTEND_PATH . 'Alipay_refund/notify_url.php';        $alipayNotify = (new AlipayNotify())->verifyReturn();        $alipayNotify->verifyReturn();    }}
0 0
原创粉丝点击