> 위챗 애플릿 > 위챗 개발 > WeChat 공개 계정에서 현금 빨간 봉투를 개발하는 방법에 대한 예시 튜토리얼을 공유하세요

WeChat 공개 계정에서 현금 빨간 봉투를 개발하는 방법에 대한 예시 튜토리얼을 공유하세요

零下一度
풀어 주다: 2017-05-19 16:18:03
원래의
4740명이 탐색했습니다.

메시지를 남기고 전달해 주셔서 감사합니다.

WeChat 속도 개발 기사 시리즈: 여기를 클릭하세요

이전 기사에서는 WeChat 결제를 소개했습니다. 공식 계좌 결제, WeChat 스캔 코드 결제, 카드 결제, WeChat 결제

이 기사에서는 WeChat 가맹점의 결제 도구인 현금 빨간 봉투에 대해 설명합니다

WeChat 공개 계정에서 현금 빨간 봉투를 개발하는 방법에 대한 예시 튜토리얼을 공유하세요

현금빨간봉투.png

준비작업

[공문서]

1.현금빨간봉투 권한 활성화

사용중 현금빨간봉투를 받기 전, 현금빨간봉투 기능을 활성화해주세요. 작업 경로: [WeChat Pay 가맹점 플랫폼에 로그인——>제품 센터——>Cash Red Envelope——>활성화].

2. API인증서

판매자가 WeChat Red Packet 인터페이스를 호출하면 서버에서 인증서 확인을 수행합니다. 가맹점 플랫폼 증명서

WeChat 공개 계정에서 현금 빨간 봉투를 개발하는 방법에 대한 예시 튜토리얼을 공유하세요

현금 레드패킷-다운로드 증명서.png

WeChat 공개 계정에서 현금 빨간 봉투를 개발하는 방법에 대한 예시 튜토리얼을 공유하세요

현금 Red Packet-Downloaded File.png

이렇게 많은 인증서에 어떤 것을 사용해야 하는지 궁금하신가요? 개발 언어와 관련이 있나요?

어떤 언어가 어떤 인증서를 사용하고 어떻게 사용하나요? 证书说明.txt

내용은 다음과 같습니다. >3. 충전

현금 레드 패킷을 발행하기 전에 충분한 자금이 있는지 확인하십시오. 부족하다면 보충해주세요. 운영 경로: [가맹점 플랫폼 로그인 -> 계정 센터 -> 자금 관리 -> 충전]

빨간 봉투 1개의 평균 금액은 1.00위안에서 200.00위안 사이여야 합니다

WeChat 공개 계정에서 현금 빨간 봉투를 개발하는 방법에 대한 예시 튜토리얼을 공유하세요
현금빨간봉투-충전.png

4. openid 획득

현재 지정된 WeChat의 openid를 지원합니다. 사용자 지정된 금액의 빨간 봉투를 배포합니다. (openid를 얻으려면 앞서 작성한 글을 참고하세요: 위챗 공개 계정의 급속한 발전을 통한 사용자 정보 획득 권한

5. 관련 매개변수 설정

및 빨간 봉투 관련 매개변수[주로 보안 측면: IP 바인딩, 사용자 도용 방지] 페이지에서 독립적으로 설정 및 변경할 수 있습니다.

작업 경로는 다음과 같습니다. [가맹점 플랫폼에 로그인——>제품 센터——>현금 빨간 패킷——>제품 설정] (참고: "제품 설정" 작동 버튼

은 현금 빨간 봉투 기능을 활성화한 후에만 나타납니다.)
다음 매개변수를 설정하고 변경할 수 있습니다:

WeChat 공개 계정에서 현금 빨간 봉투를 개발하는 방법에 대한 예시 튜토리얼을 공유하세요현금 빨간 봉투 설정 매개변수.png

사용 방법:

1. IP 주소 호출: 설정 후 설정된 IP 주소만 호출할 수 있으며, 다른 IP 호출에서는 오류가 보고됩니다.

2. 사용자 수집 상한: 당일 수신되는 동일한 openid 수 제한

3. 스와이프 방지 수준: 스와이프 방지는 WeChat 위험 제어를 의미합니다. 위챗 계정, 좀비 계정, 머신 계정 등을 차단할 수 있습니다. 스와이프 방지 수준은 스와이프 방지 강도를 제어합니다. 4. 동시에 빨간 봉투 금액 변경도 신청할 수 있지만, >현금 빨간 봉투 카테고리


현금 빨간 봉투는 두 가지 카테고리로 나뉩니다.
1. 일반 빨간 봉투 2. 핵분열 빨간 봉투 [공식 문서]

둘 다 일부 매개 변수가 다릅니다

현금 빨간 봉투 보내기


1. 일반 빨간 봉투 보내기 인터페이스

欢迎使用微信支付!
微信支付API共四份(证书pkcs12格式、证书pem格式、证书密钥pem格式、CA证书),为接口中强制要求时需携带的证书文件。
证书属于敏感信息,请妥善保管不要泄露和被他人复制。
不同开发语言下的证书格式不同,以下为说明指引:
    证书pkcs12格式(apiclient_cert.p12)
        包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
        部分安全性要求较高的API需要使用该证书来确认您的调用身份
        windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:10010000)
    证书pem格式(apiclient_cert.pem)
        从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
        部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
        您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
    证书密钥pem格式(apiclient_key.pem)
        从apiclient_cert.p12中导出密钥部分的文件,为pem格式
        部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
        您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
    CA证书(rootca.pem)
        微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性
        该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性
        某些环境和工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用
로그인 후 복사

2. 핵분열 빨간색 봉투 전송 인터페이스

private static String sendRedPackUrl = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";

    /**
     * 发送红包
     * @param params 请求参数
     * @param certPath 证书文件目录
     * @param partner 证书密码
     * @return {String}
     */
    public static String sendRedPack(Map<String, String> params, String certPath, String partner) {
        return HttpUtils.postSSL(sendRedPackUrl, PaymentKit.toXml(params), certPath, partner);
    }
로그인 후 복사

캡슐화의 구체적인 구현

1. 일반 빨간색 봉투com.javen.weixin.api.RedPackApi.java

private static String sendGroupRedPackUrl = "api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack";

    /**
     * 发送裂变红包
     * @param params 请求参数
     * @param certPath 证书文件目录
     * @param partner 证书密码
     * @return {String}
     */
    public static String sendGroupRedPack(Map<String, String> params, String certPath, String partner) {
        return HttpUtils.postSSL(sendGroupRedPackUrl, PaymentKit.toXml(params), certPath, partner);
    }
로그인 후 복사

2. 빨간 봉투

/**
     * 发送普通红包
     * @param request 获取IP
     * @param total_amount  付款现金(单位分)
     * @param total_num 红包发放总人数
     * @param wishing 红包祝福语
     * @param act_name 活动名称
     * @param remark 备注
     * @param reOpenid 用户openid
     * @param partner 商户号
     * @param wxappid 公众账号appid
     * @param sendName 商户名称
     * @param paternerKey 商户签名key
     * @param certPath 证书路径
     * @return
     */
    public static boolean sendredpack(HttpServletRequest request,String total_amount,String total_num,String wishing,String act_name,String remark,String reOpenid,String partner,String wxappid,String sendName,String paternerKey,String certPath) {
        // 商户订单号
        String mchBillno = System.currentTimeMillis() + "";
        String ip = IpKit.getRealIp(request);

        Map<String, String> params = new HashMap<String, String>();
        // 随机字符串
        params.put("nonce_str", System.currentTimeMillis() / 1000 + "");
        // 商户订单号
        params.put("mch_billno", mchBillno);
        // 商户号
        params.put("mch_id", partner);
        // 公众账号ID
        params.put("wxappid", wxappid);
        // 商户名称
        params.put("send_name", sendName);
        // 用户OPENID
        params.put("re_openid", reOpenid);
        // 付款现金(单位分)
        params.put("total_amount", total_amount);
        // 红包发放总人数
        params.put("total_num", total_num);
        // 红包祝福语
        params.put("wishing", wishing);
        // 终端IP
        params.put("client_ip", ip);
        // 活动名称
        params.put("act_name", act_name    );
        // 备注
        params.put("remark", remark);
        //创建签名
        String sign = PaymentKit.createSign(params, paternerKey);
        params.put("sign", sign);

        String xmlResult = RedPackApi.sendRedPack(params, certPath, partner);
        Map<String, String> result = PaymentKit.xmlToMap(xmlResult);
        log.warn(JsonKit.toJson(result));
        //此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
        String return_code = result.get("return_code");
        //业务结果
        String result_code = result.get("result_code");

        if (StrKit.isBlank(return_code) || !"SUCCESS".equals(return_code)) {
            return false;
        }
        if (StrKit.notBlank(result_code) && "SUCCESS".equals(result_code)) {

            return true;
        }
        return false;
    }
로그인 후 복사
com.javen.weixin.api.RedPackApi.java빨간 봉투 데모 보내기

/**
     * 发送裂变红包
     * @param partner
     * @param wxappid
     * @param sendName
     * @param reOpenid
     * @param total_amount
     * @param total_num
     * @param wishing
     * @param act_name
     * @param remark
     * @param paternerKey
     * @param certPath
     * @return
     */
    public static boolean sendGroupRedPack(String partner, String wxappid, String sendName, String reOpenid, String total_amount, String total_num, String wishing, String act_name, String remark, String paternerKey, String certPath){
        // 商户订单号
        String mchBillno = System.currentTimeMillis() + "";

        Map<String, String> params = new HashMap<String, String>();
        // 随机字符串
        params.put("nonce_str", System.currentTimeMillis() / 1000 + "");
        // 商户订单号
        params.put("mch_billno", mchBillno);
        // 商户号
        params.put("mch_id", partner);
        // 公众账号ID
        params.put("wxappid", wxappid);
        // 商户名称
        params.put("send_name", sendName);
        // 用户OPENID
        params.put("re_openid", reOpenid);
        // 付款现金(单位分)
        params.put("total_amount", total_amount);
        // 红包发放总人数
        params.put("total_num", total_num);
        //红包金额设置方式
        params.put("amt_type", "ALL_RAND");
        // 红包祝福语
        params.put("wishing", wishing);
        // 活动名称
        params.put("act_name", act_name    );
        // 备注
        params.put("remark", remark);

        //创建签名
        String sign = PaymentKit.createSign(params, paternerKey);
        params.put("sign", sign);

        String xmlResult = RedPackApi.sendGroupRedPack(params, certPath, partner);
        Map<String, String> result = PaymentKit.xmlToMap(xmlResult);
        log.warn(JsonKit.toJson(result));
        //此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
        String return_code = result.get("return_code");
        //业务结果
        String result_code = result.get("result_code");

        if (StrKit.isBlank(return_code) || !"SUCCESS".equals(return_code)) {
            return false;
        }
        if (StrKit.notBlank(result_code) && "SUCCESS".equals(result_code)) {

            return true;
        }
        return false;

    }
로그인 후 복사

빨간 봉투 레코드 쿼리com.javen.utils.ReadPackUtils.java
[빨간 봉투 레코드 공식 문서 쿼리]

인터페이스 캡슐화

/**
 * 微信红包demo
 * @author Javen
 * 2016年5月28日
 */
public class RedPackApiController extends Controller {
    private static String sendName = "Javen205";
    //微信证书路径
    private static String certPath = "/Users/Javen/Downloads/cert/apiclient_cert.p12";
    //商户相关资料
    String wxappid = PropKit.get("appId");
    // 微信支付分配的商户号
    String partner = PropKit.get("mch_id");
    //API密钥
    String paternerKey = PropKit.get("paternerKey");

    /**
     * 发送普通红包
     */
    public void sendredpack() {

        boolean isSend = ReadPackUtils.sendredpack(getRequest(), "100", "1", "感谢您参加猜灯谜活动,祝您元宵节快乐!",
                "猜灯谜抢红包活动", "猜越多得越多,快来抢!", "o_pncsidC-pRRfCP4zj98h6slREw",
                partner, wxappid, sendName, paternerKey, certPath);

        renderJson(isSend);
    }
    /**
     * 发送裂变红包
     */
    public void sendGroupRedPack() {

        boolean isSend = ReadPackUtils.sendGroupRedPack(partner, wxappid, "天虹百货", "o_pncsidC-pRRfCP4zj98h6slREw", 
                "100", "10", "感谢您参加猜灯谜活动,祝您元宵节快乐!", "猜灯谜抢红包活动",
                "猜越多得越多,快来抢", paternerKey, certPath);


        renderJson(isSend);
    }


    public void query() {
        String query = ReadPackUtils.query("10000098201411111234567890", partner, wxappid, paternerKey, certPath);
        renderJson(query);
    }

}
로그인 후 복사

특정 구현 캡슐화

private static String getHBInfo = "api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo ";

    /**
     * 根据商户订单号查询信息
     * @param params 请求参数
     * @param certPath 证书文件目录
     * @param partner 证书密码
     * @return {String}
     */
    public static String getHbInfo(Map<String, String> params, String certPath, String partner) {
        return HttpUtils.postSSL(getHBInfo, PaymentKit.toXml(params), certPath, partner);
    }
로그인 후 복사

[관련 추천]

1. com.javen.weixin.api.RedPackApi.javaWeChat 공개 계정 플랫폼 소스 코드 다운로드

com.javen.utils.ReadPackUtils.java2.

WeChat 투표 소스 코드

3. WeChat Network King v3.4.5 WeChat Rubik's Cube 소스 코드의 고급 상용 버전

위 내용은 WeChat 공개 계정에서 현금 빨간 봉투를 개발하는 방법에 대한 예시 튜토리얼을 공유하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿