项目要求不同分公司客服支付到各个分公司商户,所以我决定使用服务商模式
首先
1、注册服务号(一定是服务号其他不行)
2、进入服务号申请服务商(完成认证)
3、管理员权限进入服务商添加特约商户号(即子商户号),完成认证(多少分公司添加多少子商户),
操蛋的是已有的商户号不能直接添加进来,还得重新再服务商户号里申请
4、特约商户号申请时可以直接绑定小程序appid
5、设置服务商户号API密钥
6、准备工作完成 惊心动魄的代码环节来了(php)
public function paytwo()
{
$appid = '';//服务号appid
$mch_id = '';//服务商商户号
$sub_appid = '';//小程序APPID
$sub_mch_id = ;//子商户号
$openid =//用户appid;
$body = ""; //这个自己写,微信订单里面显示的是商品名称
$nonce_str = $this->nonce_str();//随机字符串
$notify_url = '';//回调地址
$out_trade_no = $order->orderNo;//商户订单号
$spbill_create_ip = '';//服务器IP
$total_fee = $order->orderTotal*100;//因为充值金额最小是1 而且单位为分 如果是充值1元所以这里需要*100
$trade_type = 'JSAPI';//交易类型 默认
//这里是按照顺序的 因为下面的签名是按照顺序 排序错误 肯定出错
$post['appid'] = $appid;
$post['body'] = $body;
$post['mch_id'] = $mch_id;
$post['nonce_str'] = $nonce_str; //随机字符串
$post['notify_url'] = $notify_url;
$post['out_trade_no'] = $out_trade_no;
$post['spbill_create_ip'] = $spbill_create_ip; //终端的ip
$post['sub_appid'] = $sub_appid;
$post['sub_mch_id'] = $sub_mch_id;
$post['sub_openid'] = $openid;
$post['total_fee'] = $total_fee; //总金额 最低为一块钱 必须是整数
$post['trade_type'] = $trade_type;
$sign = $this->sign($post); //签名
$post_xml = '<xml>
<appid>'.$appid.'</appid>
<body>'.$body.'</body>
<mch_id>'.$mch_id.'