>백엔드 개발 >PHP 튜토리얼 >PHP 및 미니 프로그램을 이용한 온라인 결제 및 환불 처리 안내

PHP 및 미니 프로그램을 이용한 온라인 결제 및 환불 처리 안내

王林
王林원래의
2023-07-04 13:19:391195검색

PHP와 미니 프로그램을 활용한 온라인 결제 및 환불 처리 안내

전자상거래가 지속적으로 발전하면서 소비자에게 편리하고 빠른 결제수단을 제공하기 위해 온라인 결제 및 환불 기능을 활용하는 기업이 늘어나고 있습니다. 일반적으로 사용되는 서버측 프로그래밍 언어인 PHP는 작은 프로그램과 결합하여 온라인 결제 및 환불 기능을 구현할 수 있습니다. 이 기사에서는 PHP와 미니 프로그램을 사용하여 온라인 결제 및 환불 기능을 개발하는 방법을 소개하고 독자의 참고를 위한 코드 샘플을 제공합니다.

1. 온라인 결제 기능

  1. 준비

먼저 판매자 계정과 키, 그리고 WeChat 결제 API 인터페이스를 준비해야 합니다. 미니 프로그램에서는 WeChat Pay의 미니 프로그램 결제 인터페이스를 사용하여 결제 기능을 완성할 수 있습니다. 자세한 내용은 WeChat Payment 개발 문서를 참조하세요.

  1. Client Development

미니 프로그램의 프론트 엔드 페이지에서 WeChat Pay의 wx.requestPayment() 메소드를 사용하여 결제 기능을 활성화할 수 있습니다. 구체적인 코드는 다음과 같습니다.

wx.requestPayment({
  'timeStamp': '',
  'nonceStr': '',
  'package': '',
  'signType': 'MD5',
  'paySign': '',
  'success': function(res){
     // 支付成功的回调函数
  },
  'fail': function(res){
     // 支付失败的回调函数
  }
})

이 방법에서는 타임스탬프, 임의 문자열, 주문 정보 등과 같은 일부 결제 매개변수를 전달해야 합니다. 이러한 매개변수는 서버 측에서 얻을 수 있습니다. 자세한 내용은 WeChat Payment 개발 문서를 참조하세요.

  1. 서버측 개발

서버측에서는 결제 요청을 처리하기 위해 PHP를 사용해야 합니다. 구체적인 코드는 다음과 같습니다.

<?php
  $appid = 'your_appid'; // 小程序的appid
  $mch_id = 'your_mch_id'; // 商户号
  $key = 'your_key'; // 商户密钥
  $body = '商品描述';
  $out_trade_no = '订单号';
  $total_fee = '总金额';

  $params = array(
    'appid' => $appid,
    'mch_id' => $mch_id,
    'nonce_str' => md5(rand()),
    'body' => $body,
    'out_trade_no' => $out_trade_no,
    'total_fee' => $total_fee,
    'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],
    'trade_type' => 'JSAPI',
    'openid' => '用户openid'
  );

  ksort($params);
  $string = http_build_query($params);
  $string = urldecode($string).'&key='.$key;
  $sign = strtoupper(md5($string));

  $params['sign'] = $sign;

  $xml = '<xml>';
  foreach ($params as $key => $value) {
    $xml .= '<'.$key.'>'.$value.'</'.$key.'>';
  }
  $xml .= '</xml>';

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://api.mch.weixin.qq.com/pay/unifiedorder');
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result = curl_exec($ch);
  curl_close($ch);

  $result = simplexml_load_string($result);
  $prepay_id = $result->prepay_id; // 预支付id

  $params = array(
    'appId' => $appid,
    'timeStamp' => time(),
    'nonceStr' => md5(rand()),
    'package' => 'prepay_id='.$prepay_id,
    'signType' => 'MD5'
  );

  ksort($params);
  $string = http_build_query($params);
  $string = urldecode($string).'&key='.$key;
  $sign = strtoupper(md5($string));

  $params['paySign'] = $sign;

  echo json_encode($params);
?>

이 코드에서는 먼저 판매자를 기반으로 서명을 생성해야 합니다. 계정 및 키를 추가하고 관련 매개변수를 XML 형식 문자열로 연결하고 결제 요청이 cURL을 통해 WeChat 결제 인터페이스로 전송됩니다. 반환 결과를 받은 후 결과의 선불 ID를 다른 서명에 연결한 다음 관련 매개변수를 애플릿에 반환합니다.

2. 환불 기능

  1. 클라이언트 개발

미니 프로그램의 프런트 엔드 페이지에서 wx.request() 메소드를 사용하여 환불 요청을 시작할 수 있습니다. 구체적인 코드는 다음과 같습니다.

wx.request({
  url: 'https://your_domain.com/refund.php',
  method: 'POST',
  data: {
    'out_trade_no': '订单号',
    'refund_fee': '退款金额'
  },
  success: function(res){
     // 退款成功的回调函数
  },
  fail: function(res){
     // 退款失败的回调函数
  }
})
  1. 서버측 개발

서버측에서는 환불 요청을 처리하기 위해 PHP를 사용해야 합니다.

<?php
  $appid = 'your_appid'; // 小程序的appid
  $mch_id = 'your_mch_id'; // 商户号
  $key = 'your_key'; // 商户密钥
  $out_trade_no = '订单号';
  $refund_fee = '退款金额';

  $params = array(
    'appid' => $appid,
    'mch_id' => $mch_id,
    'nonce_str' => md5(rand()),
    'out_trade_no' => $out_trade_no,
    'out_refund_no' => $out_trade_no,
    'total_fee' => $refund_fee,
    'refund_fee' => $refund_fee
  );

  ksort($params);
  $string = http_build_query($params);
  $string = urldecode($string).'&key='.$key;
  $sign = strtoupper(md5($string));

  $params['sign'] = $sign;

  $xml = '<xml>';
  foreach ($params as $key => $value) {
    $xml .= '<'.$key.'>'.$value.'</'.$key.'>';
  }
  $xml .= '</xml>';

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://api.mch.weixin.qq.com/secapi/pay/refund');
  curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
  curl_setopt($ch, CURLOPT_SSLCERT, 'cert.pem');
  curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
  curl_setopt($ch, CURLOPT_SSLKEY, 'key.pem');
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result = curl_exec($ch);
  curl_close($ch);

  $result = simplexml_load_string($result);

  if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS') {
    // 退款成功的处理逻辑
  }
?>

이 코드에서는 먼저 필요한 것이 있습니다. 판매자 계정 및 키를 사용하려면 서명을 생성하고 관련 매개변수를 XML 형식 문자열로 연결한 다음 cURL을 통해 WeChat 결제 인터페이스에 환불 요청을 보냅니다. 반품 결과를 받은 후, 결과에 포함된 return_code와 result_code를 통해 환불 성공 여부를 판단할 수 있습니다.

3. 요약

위 단계를 통해 PHP와 미니 프로그램을 사용하여 온라인 결제 및 환불 기능을 개발할 수 있습니다. 실제 적용에서는 주문 조회, 환불 조회 및 기타 기능 추가와 같이 특정 요구에 따라 기능을 확장할 수도 있습니다. 본 글이 PHP와 미니 프로그램을 활용하여 온라인 결제 및 환불 기능을 개발하는데 도움이 되기를 바랍니다.

위 내용은 PHP 및 미니 프로그램을 이용한 온라인 결제 및 환불 처리 안내의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.