Citcon简介
Citcon 创办于 2015 年,是一家移动支付及跨境商务解决方案提供商,主要为北美的商户提供线上及线下的移动支付服务。Citcon现有的合作伙伴位于纽约、拉斯维加斯、旧金山、洛杉矶、芝加哥、迈阿密、波士顿、温哥华等多个北美城市及区域。
在商户端,Citcon为多个的商家提供包括app、POS机以及系统集成等不同的支付及营销产品,覆盖奢侈品、机场零售、旅游、电商、餐饮等各行业头部企业客户,如 DFS 集团、DFA、凯撒娱乐、美高梅集团、西蒙购物,以及餐饮连锁小肥羊、海底捞等品牌,预计 2019 年服务的全球商家客户数量预计达 5 万家。
Citcon 表示,目前微信支付和支付宝在北美的支付业务有一半以上都由 Citcon 负责。同时,Citcon 也与银联展开合作,帮助银联云闪付在北美落地。Citcon 为第三方支付公司和境外商家之间提供支付平台,不仅提供技术方案,也提供清算服务。此外, Citcon也为中国领事馆提供驻外领馆支付方案,现已与纽约、旧金山、洛杉矶、芝加哥、休斯顿、华盛顿等领馆建立合作。
插件概述
CPay 插件封装了 Citcon 支付的移动端 SDK。通过此插件可集成微信、支付宝支付到 App 内。
CPay 使用步骤:
此插件必须在真机环境下使用
你还需要访问 微信开放平台、支付宝开放平台 申请微信、支付宝开发者账号,并创建 App 获取其 AppID 等相关信息。
使用此插件前需先配置 config.xml文件,方法如下:
名称:CPay
参数:urlScheme
配置示例:
<feature name="CPay">
    <param name="urlScheme" value="YourWechatPayAppID" />
    <param name="urlScheme" value="YourAlipayScheme" />
    <param name="token" value="YourCitconToken" />
    <param name="mode" value="YourCitconMode" />
</feature>
字段描述:
urlScheme:(必须配置)用于实现应用间跳转及数据交换,本应用可以启动支付宝、微信客户端,也可以从支付宝、微信客户端跳回本应用(此时需要应用打包或自定义loader才能测试本功能)。urlScheme 的 value 值分别在微信、支付宝开放平台获取。
  token:联系 CITCON 与之签约获得 token。或者访问 文档中心 申请测试 token。亦可通过 key.xml 文件配置,详情参考下文。
  mode:运行模式:DEV、UAT、PROD。亦可通过 key.xml 文件配置,详情参考下文。
在 iOS 端使用本插件之前还需做如下配置:
1,添加白名单,如下:
 <preference name="querySchemes" value="weixin,wechat,alipay,safepay" />
关于白名单解释详情参考 YonBuilder移动开发 官方文档之-----配置可被检测的URL Scheme
2,配置ATS(App Transport Security):某些网络访问需要配置 plist 文件,使 APP 能够访问 http 协议。配置方法参考 iOS 修改 Info.plist 之配置 ATS(例3.1) 。配置示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
</dict>
</plist>
token 加密配置
为提高安全性 token 和 mode 可通过 key.xml 文件设置,若 config.xml 文件内已经配置,则以config.xml  为准。配置key.xml 文件配置完成放在 widget 下的 res 文件下即可,服务器应用打包时会将此文件加密。注意测试此功能需应用打包,否则报错。 CPay 插件原生代码会自动读取该文件中的 token 等参数,提高安全性。key.xml 文件格式如下:
```js
<?xml version="1.0" encoding="UTF-8" ?>
<security>
<item name="CPay_token" value="*********"/>
<item name="CPay_mode" value="***"/>
<item name="其它服务需加密的参数配置 " value="***"/>
.
.
.
</security> 
```
配置运行环境
setEnvironment({params})
token:
key.xml 或 config.xml 文件读取,优先读取 key.xml。mode:
key.xml 或 config.xml 文件读取,优先读取 key.xml。var CPay = api.require('CPay');
CPay.setEnvironment({
    mode: 'DEV',
    token: '123*******'
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
支付
requestOrder({params}, callback(ret))
referenceId:
currency:
vendor:
amount:
subject:
body:
ipnUrl:
callbackUrl:
transactionId:
allowDuplicate:
ret:
{
   eventType:'',           //字符串类型;事件类型:cancel、success
   result: {               //JSON对象;仅当 eventType为 success是有值
      message:'',          //字符串类型;消息
      result:'',           //字符串类型;结果
      order:{              //JSON对象;订单信息
         referenceId:'',   //字符串类型;
         amount:'',        //字符串类型;
         currency:'',      //字符串类型;
         vendor:'',        //字符串类型;
         subject:'',       //字符串类型;
         body:'',          //字符串类型;
         ipnUrl:'',        //字符串类型;
         scheme:'',        //字符串类型;
         callbackUrl:'',   //字符串类型;
         transactionId:''  //字符串类型;
      }
   }
}
var CPay = api.require('CPay');
CPay.requestOrder({
    referenceId: '12345678901234',
    currency: 'USD',
    vendor:'wechatpay',
    subject:'A字体恤',
    body:'shake your body side to side',
    ipnUrl:'https://www.apicloud.com',
    callbackUrl:'https://www.apicloud.com',
    transactionId:'212',
    allowDuplicate:false
}, function(ret) {
    api.alert({
        title: '支付结果',
        msg: JSON.stringify(ret),
        buttons: ['确定']
    });
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
checkOrder({params}, callback(ret)) Android 暂不支持该方法
referenceId:
currency:
vendor:
subject:
body:
ipnUrl:
callbackUrl:
transactionId:
allowDuplicate:
ret:
{
    transactionId:'',     //字符串类型;
    referenceId:'',       //字符串类型;
    type:'',              //字符串类型;
    amount:'',            //字符串类型;
    currency:'',          //字符串类型;
    time:'',              //字符串类型;
    status:'',            //字符串类型;
    refund_status:'',     //字符串类型;
    refunded_amount:'',   //字符串类型;
    note:''               //字符串类型;
}
var CPay = api.require('CPay');
CPay.checkOrder({
    currency: 'USD'
}, function(ret) {
    api.alert({
        title: '订单详情',
        msg: JSON.stringify(ret),
        buttons: ['确定']
    });
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
支付完成事件监听
paymentFinishedLisetner(callback(ret))
ret:
{
     
    transactionId:'',     //字符串类型;(android中没有该参数)
    referenceId:'',       //字符串类型;
    type:'',              //字符串类型;
    amount:'',            //字符串类型;
    currency:'',          //字符串类型;
    time:'',              //字符串类型;
    status:'',            //字符串类型;
    refund_status:'',     //字符串类型;
    refunded_amount:'',   //字符串类型;
    note:''               //字符串类型;
}
var CPay = api.require('CPay');
CPay.paymentFinishedLisetner(function(ret) {
    api.alert({msg:JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
