You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: merchant.go
    path of file: ./repos/gopay/wechat
    
    the code of the file until where you have to start completion: package wechat

import (
	"context"
	"encoding/xml"
	"errors"
	"fmt"

	"github.com/go-pay/gopay"
	"github.com/go-pay/xhttp"
	"github.com/go-pay/xlog"
)

// 企业付款（企业向微信用户个人付款）
// 注意：请在初始化client时，调用 client 添加证书的相关方法添加证书
// 注意：此方法未支持沙箱环境，默认正式环境，转账请慎重
// 文档地址：https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
func (w *Client) Transfer(ctx context.Context, bm gopay.BodyMap) (wxRsp *TransfersResponse, err error) {
	if err = bm.CheckEmptyError("nonce_str", "partner_t
    
func (w *Client) ProfitSharingReturn(ctx context.Context, bm gopay.BodyMap) (wxRsp *ProfitSharingReturnResponse, err error) {
	err = bm.CheckEmptyError("nonce_str", "out_return_no", "return_account_type", "return_account", "return_amount", "description")
	if err != nil {
		return nil, err
	}

	if (bm.GetString("order_id") == gopay.NULL) && (bm.GetString("out_order_no") == gopay.NULL) {
		return nil, errors.New("param order_id and out_order_no can not be null at the same time")
	}
	// 设置签名类型，官方文档此接口只支持 HMAC_SHA256
	bm.Set("sign_type", SignType_HMAC_SHA256)
	bs, err := w.doProdPostTLS(ctx, bm, profitSharingReturn)
	if err != nil {
		return nil, err
	}
	wxRsp = new(ProfitSharingReturnResponse)
	if err = xml.Unmarshal(bs, wxRsp); err != nil {
		return nil, fmt.Errorf("[%w]: %v, bytes: %s", gopay.UnmarshalErr, err, string(bs))
	}
	return wxRsp, nil
}