当前位置: 首页 > 软件库 > iOS代码库 > 支付(Payment) >

allpay

Golang 实现的聚合支付
授权协议 GPL
开发语言 Google Go
所属分类 iOS代码库、 支付(Payment)
软件类型 开源软件
地区 国产
投 递 者 周枫涟
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Golang实现的聚合支付,含微信支付和支付宝

  • 特点
    1、代码简单、灵活可靠。
    2、可扩展性强:参数传递采用map[string]interface{},不需要定义复杂的结构,满足多变的参数需求。
    3、支持服务商模式和非服务商模式。

  • 第三方包引用
    1、httprouter
    2、gorm

  • 微信支付调用:

func TestWxClient_Execute(t *testing.T) {
	cli := NewWxClient("你的apikey",true)
	cli.FillDefaultParams()
	cli.PutMapParams(map[string]string{
		"appid": "您的appid",
		"mch_id": "您的商户号",
	})
	cli.PutParam("body","test")
	cli.PutParam("out_trade_no","58867657575757")
	cli.PutParam("sub_mch_id","您好的子商户号")
	cli.PutParam("total_fee","101")
	cli.PutParam("spbill_create_ip","127.0.0.1")
	cli.PutParam("notify_url","http://test.xxx.com/notify")
	cli.PutParam("trade_type","JSAPI")
	
	resp,err := cli.Execute("unifiedorder")
	if err != nil {
		t.Log(err.Error())
		return
	}
	t.Log(resp)
}
  • 支付宝调用:

func doWapPay() []byte {
	cli := NewaliClient(con_privatekey,con_pubickey,"https://openapi.alipaydev.com/gateway.do")
	cli.FillDefaultParams()
	cli.PutMapSysParams(map[string]string{
		"app_id": "您的app_id",
		"notify_url": "http://test.xxx.com/notify",
	})
	cli.PutMapAppParams(map[string]string{
		"subject": "测试",
		"out_trade_no": "2000100001",
		"seller_id": "商户号",
	})
	cli.PutAppAnyParams("total_amount",1.00)
	cli.PutAppAnyParams("extend_params",map[string]string{
		"sys_service_provider_id": "服务商id",
	})
	resp,err := cli.PageExecute("alipay.trade.wap.pay")
	if err != nil {
		return []byte("")
	}
	return resp
}

func TestAliClient_Execute(t *testing.T) {
	h := httprouter.New()
	h.GET("/api/wap", func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
		body := doWapPay()
		w.Header().Set("Content-Type", "text/html; charset=utf-8")
		//WriteHeader一定放在Set后面
		w.WriteHeader(http.StatusOK)
		w.Write(body)
	})
	http.ListenAndServe("localhost:3000",h)
}
  • 聚合支付网页调用(javascript)

  function callpay(method) {
    let domain = location.href;
    let urlobj = {
        method: method,
        mid: "100000",
        subject: "测试商品",
        total_amount: "101",
        out_trade_no: new Date().Format("yyMMddhhmmss"),
        return_url: domain + "result.html?method=" + method,
    }

    let url = ""
    for(let k in urlobj) {
        if(url == "") {
            url = "?" + k + "=" + encodeURI(urlobj[k])
        } else {
            url += "&" + k + "=" + encodeURI(urlobj[k])
        }
    }
    let openurl = domain + "payapi/wappay/sandbox" + url;
    if(method === "Ali.wappay"){
        _AP.pay(openurl);    
    }else {
        location.href = openurl;
    }
  }
  • 使用到的数据库结构:

/*==============================================================*/
/* Table: ap_mchpay_options                                     */
/*==============================================================*/
create table ap_mchpay_options
(
   mid                  bigint not null,
   paytype              tinyint not null,
   attrname             varchar(64) not null,
   attrvalue            varchar(128) not null,
   primary key (mid, paytype)
);

/*==============================================================*/
/* Table: ap_merchant_info                                      */
/*==============================================================*/
create table ap_merchant_info
(
   mid                  bigint not null auto_increment,
   name                 varchar(128) not null,
   isdebug              bool not null,
   apikey               varchar(128) not null,
   parentid             bigint not null default -1,
   mchclass             int not null default 0,
   primary key (mid)
)
auto_increment = 100000;
  • AllPay,http://www.allpay.com.tw/,欧付宝是台湾知名的第三方支付公司,拥有丰富的支付模式(支持和支付宝、财付通),只需要一次对接,各种支付模式均可使用。 接口编写SDK:http://www.allpay.com.tw/Service/API_Help?Anchor=AnchorDoc 官方提供了比较完整的SDK,里面有丰富的代码,这里只讲需要注意的地方: 1.欧付宝

 相关资料
  • 我知道聚合和组合之间的概念差异。有人能用实例告诉我它们之间在Java中的实现区别吗?

  • 我对GraphQL的分析解决方案非常感兴趣(想想一个显示图形的webapp)。但我找不到任何使用聚合函数的GraphQL示例。这是我的前端完成的大多数查询的一个主要方面。 对于我的解决方案,我们有3个典型的后端调用。 搜索 假设我们在GraphQL中指定了这种类型 搜寻 GraphQL似乎很好地处理了这一点。毫无疑问。 ex.搜索Bob的年龄{Person(name:"Bob"){age}} 这是

  • 在ddd中,实体可以引用同一聚合的实体或另一聚合根(但不能引用另一聚合内的实体)。 如何实施这样的参考? 实体的方法如何访问引用的聚合根? 实体允许对另一个聚合根做的方法是什么? 对于1.和2.,我的问题是,实体不应该访问存储库。此外,神奇的延迟加载机制并不总是可用的,我认为出于同样的原因应该避免。因此,当存储库加载聚合时,存储库是否应该解析其中每个实体的所有引用(以及所有引用的其他聚合)?或者“

  • Django数据库抽象API描述了使用Django查询来增删查改单个对象的方法。然而,你有时候会想要获取从一组对象导出的值或者是聚合一组对象。这份指南描述了通过Django查询来生成和返回聚合值的方法。 整篇指南我们都将引用以下模型。这些模型用来记录多个网上书店的库存。 from django.db import models class Author(models.Model): na

  • 第一个名为的文档包含以下文档(不包括): 第二个集合名为,具有以下文档: 上的 预期的结果是: 如何使用聚合查询来实现这一点?

  • 代码中的聚合和关联是什么样子的?(Java或C#) 找不到聚合和关联的代码示例。

  • 本文向大家介绍Mongodb中MapReduce实现数据聚合方法详解,包括了Mongodb中MapReduce实现数据聚合方法详解的使用技巧和注意事项,需要的朋友参考一下 Mongodb是针对大数据量环境下诞生的用于保存大数据量的非关系型数据库,针对大量的数据,如何进行统计操作至关重要,那么如何从Mongodb中统计一些数据呢? 在Mongodb中,给我们提供了三种用于数据聚合的方式: (1)简单

  • 我是Spring Data MongoDB的新手,我正在尝试用Spring Data MongoDBJava实现聚合查询。我尝试过从这个问题中搜索,并使用进行搜索,但仍然没有结果。 我的数据格式: 我的查询: 这是我在Javascript后端使用的查询,我可以用Mongoose很容易地做到这一点。然而,我对它的Java实现有一些困难。 当我尝试运行此程序时,会出现以下错误: 当我删除从组聚合中,我