Home Backend Development PHP Tutorial How to implement WeChat refund application in PHP

How to implement WeChat refund application in PHP

Dec 07, 2019 pm 05:27 PM
WeChat

I talked about how to implement WeChat payment earlier, please see related articles for details: The process of implementing WeChat payment (jsapi payment) in PHP and The process of implementing WeChat payment (jsapi payment) in ThinkPHP. Due to business needs, WeChat refund is also required. After research and exploration, it was finally solved.

Preliminary preparation:

Of course, WeChat payment has been settled, otherwise how can I get a refund? This time I will use the official demo. Of course, there may be many masters on the Internet who have rewritten and encapsulated the demo themselves, which may be easier to use and simpler, but I still don’t recommend using it for the following reasons:

(1) It may not be fully functional, maybe it just implements WeChat payment , but there are also business functions such as applying for refunds, querying refunds, order inquiries, and canceling orders, which you may need later. If you rely on the convenience of the master’s SDK, you will be confused if there are new business needs;

(2) Security considerations, when it comes to payment and money, it must be very safe. Although I also complain about the official SDK, at least it will be relatively safe. It will be rewritten again. Although no problems have been found for the time being, it will be bad if there are loopholes.

This article is still implemented by using the refund() method provided in WxPay.Api.php, the most important class file in the official SDK. This method is located at No. 141 of the WxPay.Api.php file. OK, the code is as follows:

/**
 * 
 * 申请退款,WxPayRefund中out_trade_no、transaction_id至少填一个且
 * out_refund_no、total_fee、refund_fee、op_user_id为必填参数
 * appid、mchid、spbill_create_ip、nonce_str不需要填入
 * @param WxPayRefund $inputObj
 * @param int $timeOut
 * @throws WxPayException
 * @return 成功时返回,其他抛异常
 */
public static function refund($inputObj, $timeOut = 6){
$url = "https://api.mch.weixin.qq.com/secapi/pay/refund";
//检测必填参数
if(!$inputObj->IsOut_trade_noSet() && !$inputObj->IsTransaction_idSet()) {
throw new WxPayException("退款申请接口中,out_trade_no、transaction_id至少填一个!");
}else if(!$inputObj->IsOut_refund_noSet()){
throw new WxPayException("退款申请接口中,缺少必填参数out_refund_no!");
}else if(!$inputObj->IsTotal_feeSet()){
throw new WxPayException("退款申请接口中,缺少必填参数total_fee!");
}else if(!$inputObj->IsRefund_feeSet()){
throw new WxPayException("退款申请接口中,缺少必填参数refund_fee!");
}else if(!$inputObj->IsOp_user_idSet()){
throw new WxPayException("退款申请接口中,缺少必填参数op_user_id!");
}
$inputObj->SetAppid(WxPayConfig::APPID);//公众账号ID
$inputObj->SetMch_id(WxPayConfig::MCHID);//商户号
$inputObj->SetNonce_str(self::getNonceStr());//随机字符串
$inputObj->SetSign();//签名
$xml = $inputObj->ToXml();
$startTimeStamp = self::getMillisecond();//请求开始时间
$response = self::postXmlCurl($xml, $url, true, $timeOut);
$result = WxPayResults::Init($response);
self::reportCostTime($url, $startTimeStamp, $result);//上报请求花费时间
return $result;
}
Copy after login

The official method clearly states which parameters are required, and the SDK has already filled in some required parameters for us. I will re-encapsulate this method to facilitate calling it in the project. :

/**
 * 微信退款
 * @param  string   $order_id 订单ID
 * @return 成功时返回(array类型),其他抛异常
 */
function wxRefund($order_id){
//我的SDK放在项目根目录下的Api目录下
require_once APP_ROOT."/Api/wxpay/lib/WxPay.Api.php";
//查询订单,根据订单里边的数据进行退款
$order = M('order')->where(array('id'=>$order_id,'is_refund'=>2,'order_status'=>1))->find();
$merchid = WxPayConfig::MCHID;
if(!$order) return false;
$input = new WxPayRefund();
$input->SetOut_trade_no($order['order_sn']);//自己的订单号
$input->SetTransaction_id($order['transaction_id']);  //微信官方生成的订单流水号,在支付成功中有返回
$input->SetOut_refund_no(getrand_num(true));//退款单号
$input->SetTotal_fee($order['total_price']);//订单标价金额,单位为分
$input->SetRefund_fee($order['total_price']);//退款总金额,订单总金额,单位为分,只能为整数
$input->SetOp_user_id($merchid);
$result = WxPayApi::refund($input);//退款操作
// 这句file_put_contents是用来查看服务器返回的退款结果 测试完可以删除了
//file_put_contents(APP_ROOT.'/Api/wxpay/logs/log3.txt',arrayToXml($result),FILE_APPEND);
return $result;
}
Copy after login

I need to make a complaint here. The type of the return value is not mentioned. When paying, XML data is returned. However, an array is returned here, which caught me off guard. Haha, but it is better to return an array. Can be directly judged and processed.

The method call is even simpler:

//微信退款
$result = wxRefund($order_id);
// 这句file_put_contents是用来查看服务器返回的退款结果 测试完可以删除了
//file_put_contents(APP_ROOT.'/Api/wxpay/logs/log4.txt',arrayToXml($result),FILE_APPEND);
if(($result['return_code']=='SUCCESS') && ($result['result_code']=='SUCCESS')){
//退款成功
}else if(($result['return_code']=='FAIL') || ($result['result_code']=='FAIL')){
//退款失败
//原因
$reason = (empty($result['err_code_des'])?$result['return_msg']:$result['err_code_des']);
}else{
//失败
}
Copy after login

The refund is returned successfully as follows:

How to implement WeChat refund application in PHP

Personal test is correct: this is an integrated official Implemented by the SDK, if you do not use the SDK, you can use a simpler method, see: PHP to implement WeChat payment (jsapi payment) and refund (no need to integrate the payment SDK)

How to implement WeChat refund application in PHP

For more PHP related knowledge, please visit PHP tutorial!

The above is the detailed content of How to implement WeChat refund application in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

There are rumors that 'iPhone 16 may not support WeChat', and Apple's technical consultant in China said that it is communicating with Tencent about app store commissions There are rumors that 'iPhone 16 may not support WeChat', and Apple's technical consultant in China said that it is communicating with Tencent about app store commissions Sep 02, 2024 pm 10:45 PM

Thanks to netizens Qing Qiechensi, HH_KK, Satomi Ishihara and Wu Yanzu of South China for submitting clues! According to news on September 2, there are recent rumors that "iPhone 16 may not support WeChat." In response to this, a reporter from Shell Finance called Apple's official hotline. Apple's technical consultant in China responded that whether iOS systems or Apple devices can continue to use WeChat, and WeChat The issue of whether it can continue to be listed and downloaded on the Apple App Store requires communication and discussion between Apple and Tencent to determine the future situation. Software App Store and WeChat Problem Description Software App Store technical consultant pointed out that developers may need to pay fees to put software on the Apple Store. After reaching a certain number of downloads, Apple will need to pay corresponding fees for subsequent downloads. Apple is actively communicating with Tencent,

deepseek image generation tutorial deepseek image generation tutorial Feb 19, 2025 pm 04:15 PM

DeepSeek: A powerful AI image generation tool! DeepSeek itself is not an image generation tool, but its powerful core technology provides underlying support for many AI painting tools. Want to know how to use DeepSeek to generate images indirectly? Please continue reading! Generate images with DeepSeek-based AI tools: The following steps will guide you to use these tools: Launch the AI ​​Painting Tool: Search and open a DeepSeek-based AI Painting Tool (for example, search "Simple AI"). Select the drawing mode: select "AI Drawing" or similar function, and select the image type according to your needs, such as "Anime Avatar", "Landscape"

People familiar with the matter responded that 'WeChat may not support Apple iPhone 16': Rumors are rumors People familiar with the matter responded that 'WeChat may not support Apple iPhone 16': Rumors are rumors Sep 02, 2024 pm 10:43 PM

Rumors of WeChat supporting iPhone 16 were debunked. Thanks to netizens Xi Chuang Jiu Shi and HH_KK for submitting clues! According to news on September 2, there are rumors today that WeChat may not support iPhone 16. Once the iPhone is upgraded to the iOS 18.2 system, it will not be able to use WeChat. According to "Daily Economic News", it was learned from people familiar with the matter that this rumor is a rumor. Apple's response: According to Shell Finance, Apple's technical consultant in China responded that the issue of whether WeChat can continue to be used on iOS systems or Apple devices, and whether WeChat can continue to be listed and downloaded in the Apple App Store, needs to be resolved between Apple and Tencent. Only through communication and discussion can we determine the future situation. Currently, Apple is actively communicating with Tencent to confirm whether Tencent will continue to

gateio Chinese official website gate.io trading platform website gateio Chinese official website gate.io trading platform website Feb 21, 2025 pm 03:06 PM

Gate.io, a leading cryptocurrency trading platform founded in 2013, provides Chinese users with a complete official Chinese website. The website provides a wide range of services, including spot trading, futures trading and lending, and provides special features such as Chinese interface, rich resources and community support.

List of handling fees for okx trading platform List of handling fees for okx trading platform Feb 15, 2025 pm 03:09 PM

The OKX trading platform offers a variety of rates, including transaction fees, withdrawal fees and financing fees. For spot transactions, transaction fees vary according to transaction volume and VIP level, and adopt the "market maker model", that is, the market charges a lower handling fee for each transaction. In addition, OKX also offers a variety of futures contracts, including currency standard contracts, USDT contracts and delivery contracts, and the fee structure of each contract is also different.

gateio exchange app old version gateio exchange app old version download channel gateio exchange app old version gateio exchange app old version download channel Mar 04, 2025 pm 11:36 PM

Gateio Exchange app download channels for old versions, covering official, third-party application markets, forum communities and other channels. It also provides download precautions to help you easily obtain old versions and solve the problems of discomfort in using new versions or device compatibility.

Sesame Open Door Login Registration Entrance gate.io Exchange Registration Official Website Entrance Sesame Open Door Login Registration Entrance gate.io Exchange Registration Official Website Entrance Mar 04, 2025 pm 04:51 PM

Gate.io (Sesame Open Door) is the world's leading cryptocurrency trading platform. This article provides a complete tutorial on spot trading of Gate.io. The tutorial covers steps such as account registration and login, KYC certification, fiat currency and digital currency recharge, trading pair selection, limit/market transaction orders, and orders and transaction records viewing, helping you quickly get started on the Gate.io platform for cryptocurrency trading. Whether a beginner or a veteran, you can benefit from this tutorial and easily master the Gate.io trading skills.

Ouyi Exchange app domestic download tutorial Ouyi Exchange app domestic download tutorial Mar 21, 2025 pm 05:42 PM

This article provides a detailed guide to safe download of Ouyi OKX App in China. Due to restrictions on domestic app stores, users are advised to download the App through the official website of Ouyi OKX, or use the QR code provided by the official website to scan and download. During the download process, be sure to verify the official website address, check the application permissions, perform a security scan after installation, and enable two-factor verification. During use, please abide by local laws and regulations, use a safe network environment, protect account security, be vigilant against fraud, and invest rationally. This article is for reference only and does not constitute investment advice. Digital asset transactions are at your own risk.

See all articles