PHP TP5.0 + easywechat开发微信退款流程以及遇到的一些坑

由于我上一次用了easywechat4.0 做了微信的支付,所以本次就来说一下微信退款
easywechat的关于退款的文档写的比较简练,为此在开发过程中难免遇到一些坑需要自己完善
本次我就分享一下在开发微信退款的流程
首先和支付一样
配置信息必须要,
/**
* 微信支付
/
‘payment’ => [
‘app_id’ => ‘’, // 同公众号app_id
‘mch_id’ => ‘’,
‘key’ => ‘’, // API 密钥
‘cert_path’ => ROOT_PATH . ‘cert’ . DS . ‘apiclient_cert.pem’, // XXX: 绝对路径!!!!
‘key_path’ => ROOT_PATH . ‘cert’ . DS . ‘apiclient_key.pem’, // XXX: 绝对路径!!!!
‘notify_url’ => ‘’
],
小编依旧用的支付的配置,这个看个人习惯,你也可以再写一个配置
配置完成以后就可以去调起退款
// 调起退款
public function easyRefund($refund_info)
{
$wxpay_config = config(‘weixin.payment’);
p a y m e n t A p p = F a c t o r y : : p a y m e n t ( paymentApp = Factory::payment( paymentApp=Factory::payment(wxpay_config);
// 账单退款的钱
$orderfee = Paybills::where(‘pay_sn’, $refund_info[‘pay_sn’])->value(‘money’);
// 参数分别为:商户订单号、商户退款单号、订单金额、退款金额、其他参数
// Example:
$result = p a y m e n t A p p − > r e f u n d − > b y O u t T r a d e N u m b e r ( paymentApp->refund->byOutTradeNumber( paymentApp>refund>byOutTradeNumber(refund_info[‘pay_sn’], $refund_info[‘refund_no’], $orderfee * 100, r e f u n d i n f o [ ′ r e f u n d m o n e y ′ ] ∗ 100 , [ ′ n o t i f y u r l ′ = > " " / / 回 调 方 法 ] ) ; i f ( refund_info['refund_money'] * 100, [ 'notify_url' => "" //回调方法 ]); if ( refundinfo[refundmoney]100,[notifyurl=>""//]);if(result[‘return_code’] == ‘SUCCESS’) {
return true;
} else {
KaTeX parse error: Expected group after '_' at position 7: this->_̲_throwHttpErr(result[‘return_msg’], 500);
}
}
其他参数可以参考微信退款的文档参数
注意这里有一个巨大的坑,小编我在这里整整卡了一天,心态都崩了
就是那个证书路径
证书存放的文件夹名字必须是cert,不能是其他名字,不然会找不到证书。按平常的套路,这个证书文件夹的名字不是可以随便取吗?但是退款就是这么任性。

然后之后就可以去你回调的方法里执行后续逻辑
public function refund()
{
$wxpay_config = config(‘weixin.payment’);
a p p = F a c t o r y : : p a y m e n t ( app = Factory::payment( app=Factory::payment(wxpay_config);
$response = a p p − > h a n d l e R e f u n d e d N o t i f y ( f u n c t i o n ( app->handleRefundedNotify(function ( app>handleRefundedNotify(function(message, $reqInfo, $fail) {
// 其中 $message[‘req_info’] 获取到的是加密信息
// $reqInfo 为 message[‘req_info’] 解密后的信息
// 你的业务逻辑.
}
return true; // 返回 true 告诉微信“我已处理完成”
// 或返回错误原因 $fail(‘参数格式校验错误’);
});
return $response;
}
$regInfo是不加密的。我们用这个数组
数据格式
array (
‘out_refund_no’ => 'r2018
38511’,
‘out_trade_no’ => '2018
8290675’,
‘refund_account’ => ‘REFUND_SOURCE_UNSETTLED_FUNDS’,
‘refund_fee’ => ‘1’,
‘refund_id’ => ‘5000040830678091106300227403’,
‘refund_recv_accout’ => ‘支付用户零钱’,
‘refund_request_source’ => ‘API’,
‘refund_status’ => ‘SUCCESS’,
‘settlement_refund_fee’ => ‘1’,
‘settlement_total_fee’ => ‘1’,
‘success_time’ => ‘2018-08-11 17:11:24’,
‘total_fee’ => ‘1’,
‘transaction_id’ => ‘4200000180201809116557984948’,
)

好了退款就完成了。

你可能感兴趣的:(PHP TP5.0 + easywechat开发微信退款流程以及遇到的一些坑)