小程序支付重磅升级,个人小程序福音。

原创
2023/11/27 14:39
阅读数 30

    微信公众平台在2023年11月上线了个人小程序认证,此举意味着个人小程序也可以跟微信支付商户号进行绑定了,自2019年我们反馈给微信支付技术该建议开始,历时4年多微信终于在这一块进行了升级。因此,【支付收银】小程序基本完成了历史使命,通过认证的个人小程序绑定个人微信商户号,完全可以实现无跳转、无半屏的小程序支付体验。



个人小程序如何进行认证

登录微信公众平台:https://mp.weixin.qq.com点击微信认证菜单

第一步:签署《微信公众平台认证服务协议》,勾选同意,点击下一步。


第二步:填写资料:完成主体验证,并选择是否申请【职业认证】。点击查看职业认证身份介绍


第三步:填写名称(未发布的小程序账号无此步骤)


第四步:填写发票


目前我司针对个人主体仅支持开具电子发票,不支持开具纸质增值税专用发票。

温馨提示:

1)发票资料提交后不能修改,请填写正确的发票类型;

2)电子发票内暂不支持开具地址、电话、开户行及账号信息,我司目前开具的发票也是可以正常报销的,如您需要开具以上信息,建议后续选择纸质增值税专用发票;

3)订单完成后(包括认证成功和失败),腾讯会在认证审核完成后8个工作日左右开具电子发票。


第五步:支付费用,目前仅支持微信支付

温馨提示:微信认证服务费是基于我司提供的审核服务而支付的一次性费用,用户每申请一次均应按照《微信公众平台认证服务协议》中的费率标准支付一次审核费用。认证服务费不以认证成功为前提,也不受认证结果和认证状态影响。


如何开通“个人微信商户号”

第一步:登录yungouos.com->微信支付->微信签约->选择个人类型



第二步:商户号申请完成后点击微信支付->商户管理->查看商户号和接口密钥


第三步:打开小程序支付API文档进行接口对接


部分语言我们提供了SDK,可以下载SDK进行使用


代码片段

/** * 微信小程序支付(原生)(支持个人、个体户、企业) * * 微信小程序支付,获取小程序支付所需参数,需自行通过小程序wx.requestPayment拉起支付 * * API文档地址:https://open.pay.yungouos.com/#/api/api/pay/wxpay/minAppPay ** @param {*} out_trade_no 商户订单号 * @param {*} total_fee 支付金额  单位:元 * @param {*} mch_id 微信支付商户号 登录yungouos.com-》微信支付-》商户管理 微信支付商户号 获取 * @param {*} body 商品描述 * @param {*} open_id 用户open_id(调用小程序wx.login接口获取) * @param {*} app_id 在YunGouOS平台报备的app_id,不传则按照商户号开户时的场景发起。 * @param {*} attach 附加数据,回调时候原路返回 * @param {*} notify_url 异步回调地址,用户支付成功后系统将会把支付结果发送到该地址,不填则无回调 * @param {*} auto 分账模式。【0:不分账 1:自动分账 2:手动分账】 默认 0 * @param {*} auto_node 执行自动分账动作的节点,枚举值【pay、callback】分别表示【付款成功后分账、回调成功后分账】 * @param {*} config_no 分账配置单号。支持多个分账,使用,号分割 * @param {*} biz_params 附加业务参数。json对象,具体参考API文档 * @param {*} payKey 支付密钥 登录yungouos.com-》微信支付-》商户管理 支付密钥 获取 * @return {*} 返回小程序API wx.requestPayment所需的支付参数 */function minAppPayV3(out_trade_no, total_fee, mch_id, body, open_id, app_id, attach, notify_url, auto, auto_node, config_no, biz_params, payKey) {    if (Common.isEmpty(out_trade_no)) {        console.error("yungouos sdk error", "商户订单号不能为空");        return null;    }    if (Common.isEmpty(total_fee)) {        console.error("yungouos sdk error", "支付金额不能为空");        return null;    }    if (Common.isEmpty(mch_id)) {        console.error("yungouos sdk error", "商户号不能为空");        return null;    }    if (Common.isEmpty(body)) {        console.error("yungouos sdk error", "商品名称不能为空");        return null;    }    if (Common.isEmpty(open_id)) {        console.error("yungouos sdk error", "open_id不能为空");        return null;    }    if (Common.isEmpty(app_id)) {        console.error("yungouos sdk error", "app_id不能为空");        return null;    }    if (Common.isEmpty(payKey)) {        console.error("yungouos sdk error", "支付密钥不能为空");        return null;    }    let params = {        out_trade_no: out_trade_no,        total_fee: total_fee,        mch_id: mch_id,        body: body,        open_id: open_id,        app_id: app_id    }    //上述参数参与签名    let sign = PaySignUtil.paySign(params, payKey);    params.sign = sign;    if (!Common.isEmpty(attach)) {        params.attach = attach;    }    if (!Common.isEmpty(notify_url)) {        params.notify_url = notify_url;    }    if (!Common.isEmpty(auto)) {        params.auto = auto;    }    if (!Common.isEmpty(auto_node)) {        params.auto_node = auto_node;    }    if (!Common.isEmpty(config_no)) {        params.config_no = config_no;    }    if (!Common.isEmpty(biz_params)) {        if (!Common.isObject(biz_params)) {            console.error("yungouos sdk error", "biz_params不是合法的json");            return null;        }        params.biz_params = JSON.stringify(biz_params);    }    return HttpUtil.post(WxPayConfig.minAppPayV3, params);}
                    
WxPay.minAppPayV3(out_trade_no, total_fee, mch_id, body, open_id,app_id, attach, notify_url, auto, auto_node, config_no, biz_params, payKey).then((response)=>{    //接口返回结果    if(response.code!=0||response.data==null){        console.log("支付失败");        return;    }
let result=response.data;
let data=result.minPayParam; if(data==null||data==''||data==undefined){ console.log("支付失败"); return; }
let minPayParam = data;
//构建支付成功方法 minPayParam.success = (response) => { if (response.errMsg == 'requestPayment:ok') { //支付成功 console.log("小程序支付成功"); } } //构建支付失败方法 minPayParam.fail = (response) => { if (response.errMsg == 'requestPayment:fail cancel') { //取消支付 console.log("取消支付"); } } //拉起小程序支付界面 wx.requestPayment(minPayParam);
});
END


本文分享自微信公众号 - YunGouOS(YunGouOS)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部