首先Composer安卓插件composer require overtrue/wechat:~4.0 -vvv
use EasyWeChat\Factory;
use function EasyWeChat\Kernel\Support\generate_sign;
public $config = [
// 必要配置
'app_id' => 'wx************c9',
'mch_id' => '139********07',
'key' => 'oy0***************kvL', // API v2 密钥 (注意: 是v2密钥 是v2密钥 是v2密钥)
// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
'cert_path' => 'path/to/your/cert.pem', // XXX: 绝对路径!!!!
'key_path' => 'path/to/your/key', // XXX: 绝对路径!!!!
'notify_url' => '', // 你也可以在下单时单独设置来想覆盖它
];
public function pay($data){
$app = Factory::payment($this->config);
$result = $app->order->unify([
'body' =>$data['body'],
'out_trade_no' => $data['out_trade_no'],
'total_fee' => $data['price']*100,
'notify_url' => $this->request->domain().'/api/pay/'.$data['type'], // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
'openid' => $this->auth->getUser()->openid,
]);
// 如果成功生成统一下单的订单,那么进行二次签名
if ($result['return_code'] === 'SUCCESS') {
// 二次签名的参数必须与下面相同
$params = [
'appId' => $this->config['app_id'],
'timeStamp' => time().'',
'nonceStr' => $result['nonce_str'],
'package' => 'prepay_id=' . $result['prepay_id'],
'signType' => 'MD5',
];
// config('wechat.payment.default.key')为商户的key.记得use function EasyWeChat\Kernel\Support\generate_sign;
$params['paySign'] = generate_sign($params, $this->config['key']);
return $params;
} else {
return $result;
}
}