H5调用支付宝、公众号收银台

  1. 调用预下单接口,参见接口文档,可获得H5收银台路径,字段名称为payUrl。
  2. 跳转至payUrl,即可打开H5收银台。
    window.location = payUrl
    

h5调用小程序收银台

  1. 调用预下单接口,参见接口文档,可获得小程序短链,字段名称为payUrl
  2. 跳转至payUrl,即可拉起聚合收银台小程序。
    window.location = payUrl
    

APP调用支付宝收银台

  1. 调用预下单接口,参见接口文档,可获得唤起支付宝的alipays协议,字段名称为payUrl
  2. app只能识别http://或https://开头的url,不识别alipays协议,所以需要通过webview打开payUrl。详细代码可参考支付宝官方文档

APP调用小程序收银台

  1. 商户在微信开放平台创建应用,填写商户app的资料,提交后获取该app在微信开放平台的appid。

  2. 集成微信SDK,看参考微信官方文档
    SDK下载地址:IOSAndroid

iOS调用

  1. 添加微信scheme到白名单中

  2. 调用预下单接口,参加接口文档

  3. 拉起小程序。代码示例

    WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
    launchMiniProgramReq.userName = @"原始id";  //聚合收银台小程序的原始id
    // 将预下单接口返回的数据解密、转码拼接到路径后
    launchMiniProgramReq.path = @"pages/index/index?businessData=%7B%22rpcError%22%3Afalse%2C%22data%22%3A%7B%22mercId%22%3A%22826521057227893%22%2C%22encryData%22%3A%22fb2d48b94f1522ac03305f373dbf9881%22%2C%22amount%22%3A%222%22%2C%22orderEfficientTime%22%3A%2220240321174749%22%2C%22orderId%22%3A%221711012613937%22%2C%22orderCreateTime%22%3A%2220240321171749%22%2C%22reqMsgId%22%3A%221711012668967%22%7D%2C%22suffixCode%22%3A0%7D";
    NSDictionary *dic = @{@"rpcError": @NO,@"data":@{@"mercId":@"826521057227893",@"encryData":@"4b02fe998aabd702be94bbd5a175c829",@"amount":@"2",@"orderEfficientTime":@"20240321173910",@"orderId":@"1711012139844",@"orderCreateTime":@"20240321170910",@"reqMsgId":@"1711012148430"},@"suffixCode":@"0"};
    NSString *bus = [dic mj_JSONString];
    launchMiniProgramReq.path = [NSString stringWithFormat:@"pages/index/index?businessData=%@",bus];
//    launchMiniProgramReq.extDic = dic;
//    launchMiniProgramReq.extMsg = bus;
    launchMiniProgramReq.miniProgramType = WXMiniProgramTypePreview; //拉起小程序的类型,选正式版
    [WXApi sendReq:launchMiniProgramReq completion:^(BOOL success) {

    }];

Android调用

  1. 调用预下单接口,参加接口文档
  2. 拉起小程序。代码示例:

package com.ys.openwechat;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.Nullable;

import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.ysepay.merchant.R;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class MainActivity extends Activity implements View.OnClickListener {

    // APP_ID 替换为你的应用在微信开放平台申请到的appid
    private static final String APP_ID = "";

    // IWXAPI 是第三方app和微信通信的openApi接口
    private IWXAPI api;

    private EditText mEditText, mEditText1, mEditText2;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initview();
        initData();
    }

    private void initData() {

    }

    //注册
    private void regToWx(String AppId) {
        if (!TextUtils.isEmpty(AppId)) {
            // 通过WXAPIFactory工厂,获取IWXAPI的实例 APP_ID 应用(App)的 AppId
            api = WXAPIFactory.createWXAPI(this, AppId, true);
            // 将应用的appId注册到微信
            api.registerApp(AppId);
        } else
            Toast.makeText(MainActivity.this, "参数为空", Toast.LENGTH_SHORT);
    }

    private void initview() {
        mEditText = findViewById(R.id.editTextNumber);
        mEditText1 = findViewById(R.id.editTextNumber1);
        mEditText2 = findViewById(R.id.editTextNumber2);

        findViewById(R.id.button).setOnClickListener(MainActivity.this);
        findViewById(R.id.button1).setOnClickListener(MainActivity.this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
                regToWx(mEditText.getText().toString());
                break;
            case R.id.button1:
                wxsendReq(mEditText1.getText().toString(), mEditText2.getText().toString());
                break;
        }

    }

    //小程序调用
    private void wxsendReq(String userName, String miniprogramType) {
        WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
        req.userName = userName; // userName填聚合收银台小程序原始id
        // 预下单接口返回的businessData
        String s = "{\"rpcError\":false,\"data\":{\"mercId\":\"826521057227893\",\"encryData\":\"4b02fe998aabd702be94bbd5a175c829\",\"amount\":\"2\",\"orderEfficientTime\":\"20240321173910\",\"orderId\":\"1711012139844\",\"orderCreateTime\":\"20240321170910\",\"reqMsgId\":\"1711012148430\"},\"suffixCode\":0}";
        String path = "";
        try {
            path = URLEncoder.encode(s, "UTF-8"); // businessData需要解密,转码
            req.path = "pages/index/index?businessData=" + path;   ////拉起小程序页面的路径和参数 "。
            //req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 打开正式版
            req.miniprogramType = Integer.valueOf(miniprogramType);
            api.sendReq(req);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
}

results matching ""

    No results matching ""